Contains Duplicate II

来源:互联网 发布:江苏大学网络教学平台 编辑:程序博客网 时间:2024/05/01 00:30
class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        multimap<int,int>mmap;
       typedef multimap<int,int>::iterator iter;
        int i=0;
        for(i=0;i<nums.size();i++)
        mmap.insert(make_pair(nums[i],i+1));
        sort(nums.begin(),nums.end());
        for(i=0;i<nums.size();)
        {
            int j=mmap.count(nums[i]);
             if(j!=1)
             {
                 iter beg=mmap.lower_bound(nums[i]);
                 iter end=mmap.upper_bound(nums[i]);
                 iter last=beg;
                 iter beg1=beg;    //先保存,在变
                 while(beg1!=end)
                 {
                     last=beg1;
                     beg1++;
                 }
                 while(beg!=last)
                 {  
                       iter beg2=beg;
                       beg++;                           //千万不能用beg++;
                     if((beg)->second - (beg2)->second <= k)
                        return true;
                    //beg1++;
                   //  if(beg!=end) 
                   // { if(beg1->second-last->second<=k) return 1;}
                     
                     
                 }
                 //if(((*last).second-(*beg).second)<=k)  return 1;
                 i=i+j;
             }
             
             else i=i+1;
        }
       
         return 0;
    }

};



  1. class Solution {  
  2. public:  
  3.     bool containsNearbyDuplicate(vector<int>& nums, int k) {  
  4.         map<intint> buf;  
  5.         int n = nums.size();  
  6.         for (int i = 0; i < n; i++)  
  7.         {  
  8.             if (buf.find(nums[i]) != buf.end() && i-buf[nums[i]] <= k)  
  9.             {  
  10.                 return true;  
  11.             }  
  12.             else  
  13.             {  
  14.                 buf[nums[i]] = i;  
  15.             }  
  16.         }  
  17.   
  18.         return false;  
  19.     }  
  20. };  
因为每次只要前面跟后面一个比较就可以,不行就可以删除

0 0
原创粉丝点击