您的位置:首页 > 大数据 > 人工智能

Contains Duplicate II

2015-06-06 18:37 429 查看
struct Rec
{
int dig, ind;
};
bool cmp(struct Rec a,struct Rec b)
{
if(a.dig!=b.dig)
return a.dig<b.dig;
return a.ind<b.ind;
}
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
int len=nums.size(),i;
struct Rec rec[len];
for(i=0;i<len;i++)
{
rec[i].dig=nums[i];
rec[i].ind=i;
}
sort(rec,rec+len,cmp);
for(i=0;i<len-1;i++)
{
if(rec[i].dig==rec[i+1].dig&&rec[i+1].ind-rec[i].ind<=k)
return 1;
}
return 0;
}
};


View Code
1、需要注意题意中相差 at most k ,而不是exactly k

2、将数字和下标放到结构体中,按数字第一关键字,下标第二关键字排序,依次比较每个数字和它后一个数字是否相等,下标的范围是否在K即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: