哈希表

题目:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

 

 

foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
     
}

 

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重
        unordered_set<int> nums_set(nums1.begin(), nums1.end());
        for (int num : nums2) {
            // 发现nums2的元素 在nums_set里又出现过
            if (nums_set.find(num) != nums_set.end()) {
                result_set.insert(num);
            }
        }
        return vector<int>(result_set.begin(), result_set.end());
    }
};

数组解法:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set;
        int hash[1006]={0};

        for(int i=0;i<nums1.size();i++)//遍历容器1
        {
            hash[nums1[i]]=1;
        }

        for(int i=0;i<nums2.size();i++)
        {
            if(hash[nums2[i]]==1)
            {
                result_set.insert(nums2[i]);
            }
        }
        return vector<int> (result_set.begin(),result_set.end());

    }
};

 

set:底层红黑树,有序,不可重复

multiset:底层红黑树,有序,可以重复

unordered_set:底层哈希表,无序,不可重复,增删改查效率最高,优先选择

 

map

find:查找,返回迭代器,如果没有找到返回m.end()

count:统计key值的数目

 

350.两个数组的交集(2)

map[i]与map.count[i]不相同,前者是value的值,后者是key值是否存在

unordered_map 底层哈希表,不可重复,无序,增删改查效率最高,优先选择

 

202.快乐数

对一个整数,求各个位上数的平方和

int sum=0;
while(n)
{
    sum += n%10+n%10;//取余
    n=n/10;//取整
}

 

 

 

posted @ 2023-05-01 16:59  该说不唠  阅读(21)  评论(0)    收藏  举报