当前位置:网站首页>Leetcode question brushing (5.28) hash table
Leetcode question brushing (5.28) hash table
2022-07-06 08:20:00 【Freya】
1. Effective alphabetic words
subject :
Given two strings s and t , Write a function to determine t Whether it is s Letter heteronym of .
Be careful : if s and t Each character in the has the same number of occurrences , said s and t They are mutually alphabetic words .
Input : s = "anagram", t = "nagaram"
Output : true
Input : s = "rat", t = "car"
Output : false
Ideas :
Use a length of 26 Array of represents hash table ,s The corresponding position of the middle letter in the hash table (s[i] - ‘a’) Add one ,t The middle letters are then subtracted by one , Finally, check whether the hash table is all 0, otherwise false.
note :
When it comes to quickly determining whether an element appears in the set , Think about hashifa .
But hashifa also sacrificed space for time , Because you need to use extra arrays ,set Or is it map To store data , In order to achieve fast search .
When it comes to using collections to solve hash problems , priority of use unordered_set, Because its query and add delete efficiency is optimal , If you need the set to be ordered , Then use set, If it requires not only order but also duplicate data , Then use multiset.
python in ord() It means take ASCII value .
C++:
// The time complexity is O(n), Spatial complexity O(1)
class Solution {
public:
bool isAnagram(string s, string t) {
int record[26] = {
0};
for(int i = 0; i < s.size(); i++){
record[s[i] - 'a']++;
}
for(int i = 0; i < t.size(); i++){
record[t[i] - 'a']--;
}
for(int i = 0; i < 26; i++){
if(record[i] != 0){
return false;
}
}
return true;
}
};
Python:
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
record = [0] * 26
for i in range(len(s)):
record[ord(s[i]) - ord("a")] += 1
for i in range(len(t)):
record[ord(t[i]) - ord("a")] -= 1
for i in range(26):
if record[i] != 0:
return False
break
return True
2. Intersection of two arrays
subject :
Given two arrays nums1 and nums2 , return Their intersection . Every element in the output must be only Of . We can Regardless of the order of the output results .
Input :nums1 = [1,2,2,1], nums2 = [2,2]
Output :[2]
Input :nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output :[9,4]
explain :[4,9] It is also passable
Ideas :
C++:
use unordered_set Realization
Be careful : Use it directly set Not only does it take up more space than arrays , And it's slower than arrays ( So can we use arrays or try to use arrays )
Python:
Two arrays become two sets , Intersection of sets , Then revert to array (list)
note :
C++:
- for ( : ) For traversing arrays
- unordered_set::find() The function is C++ STL Built in functions in , Used to search for elements in containers .
Returns the iterator that found the element , Otherwise, it points back to unordered_set Iterator at the end .
Python:
& : Intersection of sets
C++:
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result_set;
unordered_set<int> nums_set(nums1.begin(), nums1.end());
for (int num : nums2) {
// Commonly used find and end Combine to judge num_set Whether contains num
// If nums_set contains nums2 Insert it into result_set in
// here nums_set yes nums1 Converted ( duplicate removal )
if (nums_set.find(num) != nums_set.end()){
result_set.insert(num);
}
}
return vector<int> (result_set.begin(), result_set.end());
}
};
Python:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
return list(set(nums1) & set(nums2))
边栏推荐
- Artcube information of "designer universe": Guangzhou implements the community designer system to achieve "great improvement" of urban quality | national economic and Information Center
- hcip--mpls
- Summary of phased use of sonic one-stop open source distributed cluster cloud real machine test platform
- [t31zl intelligent video application processor data]
- 华为云OBS文件上传下载工具类
- 好用的TCP-UDP_debug工具下载和使用
- Hungry for 4 years + Ali for 2 years: some conclusions and Thoughts on the road of research and development
- VMware 虚拟化集群
- Go learning notes (3) basic types and statements (2)
- 24. Query table data (basic)
猜你喜欢

Leetcode question brushing record | 203_ Remove linked list elements

23. Update data

Wincc7.5 download and installation tutorial (win10 system)

Artcube information of "designer universe": Guangzhou implements the community designer system to achieve "great improvement" of urban quality | national economic and Information Center

2022 Inner Mongolia latest water conservancy and hydropower construction safety officer simulation examination questions and answers

Learn Arduino with examples

Database basic commands

Make learning pointer easier (3)

你想知道的ArrayList知识都在这

File upload of DVWA range
随机推荐
使用 BR 备份 TiDB 集群数据到兼容 S3 的存储
使用 BR 恢复 S3 兼容存储上的备份数据
备份与恢复 CR 介绍
vulnhub hackme: 1
ESP系列引脚說明圖匯總
TiDB备份与恢复简介
[research materials] 2022 China yuancosmos white paper - Download attached
IP lab, the first weekly recheck
On why we should program for all
面向个性化需求的在线云数据库混合调优系统 | SIGMOD 2022入选论文解读
Sanzi chess (C language)
指针和数组笔试题解析
Entity class design for calculating age based on birthday
On the day of resignation, jd.com deleted the database and ran away, and the programmer was sentenced
从 SQL 文件迁移数据到 TiDB
Online yaml to CSV tool
[2022 广东省赛M] 拉格朗日插值 (多元函数极值 分治NTT)
让学指针变得更简单(三)
JS select all and tab bar switching, simple comments
灰度升级 TiDB Operator