霸州做网站shijuewang,建设工程竣工规划局网站,关键词优化公司排名,做外贸网站违法吗哈希表用法 哈希表#xff1a;键 值对 键#xff1a;可以看成数组下标#xff0c;但是哈希表中的建可以是任意类型的#xff0c;建不能重复,可以不是连续的 值#xff1a;可以看成数组中的元素#xff0c;值可以重复#xff0c;也可以是任意类型的数据 #includeiost…哈希表用法 哈希表键 值对 键可以看成数组下标但是哈希表中的建可以是任意类型的建不能重复,可以不是连续的 值可以看成数组中的元素值可以重复也可以是任意类型的数据 #includeiostream
#includeunordered_map //无序哈希
//在哈希表中不一定按照你输入的顺序存储的是随机存储的但是每次输出的顺序不随机都是一致的
#includemap //有序哈希默认按照键从小到大存储using namespace std;int main()
{unordered_mapint, int u_map;u_map[9]; //可以使用这种方式计数//find() ,find函数的返回值是迭代器参数是key,//如果哈希表中存在键值为key的键值对返回指向这个键值对的迭代器否则返回和end()一样的迭代器if (u_map.find(79) ! u_map.end()){cout 找到了 endl;}else{cout 没找到 endl;}return 0;
}两数之和
1. 两数之和https://leetcode.cn/problems/two-sum/ 给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 首先创建一个哈希表利用哈希表的性质键值对解决本题目。利用find函数寻找数组中元素1与target-数组中元素2是否有相等的值。如果相等返回哈希表的键值。 class Solution {
public:vectorint twoSum(vectorint nums, int target) {mapint,intm;for(int i0;inums.size();i){if(m.find(target-nums[i])!m.end())return {m[target-nums[i]],i};elsem[nums[i]]i;}return {};}
};
重复元素
217. 存在重复元素https://leetcode.cn/problems/contains-duplicate/ 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 返回 true 如果数组中每个元素互不相同返回 false 。 利用哈希表[ ]计数 class Solution {
public:bool containsDuplicate(vectorint nums) {mapint,intm;for(int i0;inums.size();i){m[nums[i]];if(m[nums[i]]2)return true;}return false;}
};
219. 存在重复元素 IIhttps://leetcode.cn/problems/contains-duplicate-ii/ 给你一个整数数组 nums 和一个整数 k 判断数组中是否存在两个 不同的索引 i 和 j 满足 nums[i] nums[j] 且 abs(i - j) k 。如果存在返回 true 否则返回 false 。
class Solution {
public:bool containsNearbyDuplicate(vectorint nums, int k) {mapint,intm;for(int i0;inums.size();i){if(m.find(nums[i])!m.end() i-m[nums[i]]k)return true;elsem[nums[i]]i;}return false;}
};