LeetCode219:Contains Duplicate II
2015-09-17 11:59
429 查看
Given an array of integers and an integer k, find out whether there 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.
直接使用循环时间复杂度为O(N*k),使用stl中的基于红黑树实现的map能降低循环的时间,在O(logN)的时间复杂度内找到元素。或者更进一步使用基于hash表的unordered_map。在常数时间内找到元素。这道题学习到的两个经验:
当想在常数时间内完毕查询工作时考虑hash表。
stl中实用hash表实现的数据结构map和set,所以它们也保留了hash表查询上的特点。
代码例如以下:
直接使用循环时间复杂度为O(N*k),使用stl中的基于红黑树实现的map能降低循环的时间,在O(logN)的时间复杂度内找到元素。或者更进一步使用基于hash表的unordered_map。在常数时间内找到元素。这道题学习到的两个经验:
当想在常数时间内完毕查询工作时考虑hash表。
stl中实用hash表实现的数据结构map和set,所以它们也保留了hash表查询上的特点。
代码例如以下:
class Solution { public: /* 解法一:超时 bool containsNearbyDuplicate(vector<int>& nums, int k) { int length=nums.size(); if(length<=1||k<=0) return false; //将每个元素与其后面k个元素进行比較 for(int i=0;i<length;i++) { for(int j=1;j<=k&&(i+j)<length;j++) { if(nums[i]==nums[i+j]) return true; } } return false; } */ //解法二,利用stl中的map。记录下整数以及它的下标 bool containsNearbyDuplicate(vector<int>& nums, int k) { //之前直接使用的是map。时间是96ms,后来把map替换成unordered_map时间变成了32ms unordered_map<int ,int> maps; int length=nums.size(); for(int i=0;i<length;i++) { if(maps.count(nums[i]))//假设在maps中找到了该元素。推断它们位置是否小于等于k { if((i-maps[nums[i]])<=k) return true; } maps[nums[i]]=i; } return false; } };
相关文章推荐
- ECSHOP后台SQL查询提示错误 this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT
- 采用UltraISO制作U菜Win7安装盘,显现"File not find /BOOT/CDMENU.EZB.ezb"错误
- hdu 4750 Count The Pairs(并查集+二分)
- 深入理解mybaits数据源与连接池
- conversion to dalvik format failed with error 1。
- dig 命令 LINUX http://blog.csdn.net/zavens/article/details/3179121
- assign、retain、copy使用异同
- CF 579A Raising Bacteria
- leetcode:Contains Duplicate III
- AIX .tgz的安装包及登录日志查看
- Email正则表达式日常整理大全
- 使用Jmai发送邮件
- Container With Most Water 解答
- [CareerCup] 9.1 Climbing Staircase 爬楼梯
- cf#320 Div.2 Problem A Raising Bacteria
- Codeforces Round #320 (Div. 2) A. Raising Bacteria
- rails s的时代一去不复返了
- Email正则表达式日常整理大全
- exchange email account最多只能在10个终端上设置
- ZOJ.2060 Fibonacci Again【数论-斐波那契】 2015/09/16