Leetcode 219. Contains Duplicate II
2016-06-16 21:59
363 查看
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.
最开始写了下面这个错误代码,分析了下是对unordered_map理解错误。unordered_map是用hash实现的,在内部unordered_map的元素不以键值或映射的元素作任何特定的顺序排序,其存储位置取决于哈希值允许直接通过其键值为快速访问单个元素(具有恒定平均的平均时间复杂度)。可见代码中 mymap.erase(mymap.begin()); 是不可控的
错误方法:
方法一:
方法二 :
最开始写了下面这个错误代码,分析了下是对unordered_map理解错误。unordered_map是用hash实现的,在内部unordered_map的元素不以键值或映射的元素作任何特定的顺序排序,其存储位置取决于哈希值允许直接通过其键值为快速访问单个元素(具有恒定平均的平均时间复杂度)。可见代码中 mymap.erase(mymap.begin()); 是不可控的
错误方法:
class Solution { public: bool containsNearbyDuplicate(vector<int>& nums, int k) { int n=nums.size(); if(n==0) return false; unordered_map<int,int> mymap; for(int i=0;i<k+1;++i){ mymap[nums[i]]++; if(mymap[nums[i]]>1) return true; } for(int i=k+1;i<n;++i){ mymap.erase(mymap.begin()); mymap[nums[i]]++; for(auto i=mymap.begin();i!=mymap.end();i++){ if(i->second > 1) return true; } } return false; } };
方法一:
class Solution { public: bool containsNearbyDuplicate(vector<int>& nums, int k) { unordered_set<int> s; if (k <= 0) return false; if (k >= nums.size()) k = nums.size() - 1; for (int i = 0; i < nums.size(); i++){ if (i > k) s.erase(nums[i - k - 1]); if (s.find(nums[i]) != s.end()) return true; s.insert(nums[i]); } return false; } };
方法二 :
bool containsNearbyDuplicate(vector<int>& nums, int k) { unordered_map<int,int> nmap; for (int i = 0; i <nums.size();i++){ if (nmap.count(nums[i]) == 0) nmap[nums[i]] = i; else if (i - nmap[nums[i]] <=k) return true; else nmap[nums[i]] = i; } return false; }
相关文章推荐
- android Google Map获取地理位置信息的方法
- Spark RDD API详解(一) Map和Reduce
- Python中map()函数浅析
- Android使用Google Map浅谈
- set 命令特殊用法
- You must SET PASSWORD before executing this statement的解决方法
- 批处理 Set 命令详解 让你理解set命令第1/2页
- ASP中set与dim的区别(自己的理解)
- 深入C#中get与set的详解
- Erlang中的映射组Map详细介绍
- sql Set IDENTITY_INSERT的用法
- c++中map的基本用法和嵌套用法实例分析
- set_include_path在win和linux下的区别
- 百度地图给map添加右键菜单(判断是否为marker)
- JavaScript中实现Map的示例代码
- jquery中map函数与each函数的区别实例介绍
- jquery中map函数遍历数组用法实例
- jquery与google map api结合使用 控件,监听器
- 浅谈jquery的map()和each()方法
- jquery中常用的SET和GET