zoukankan      html  css  js  c++  java
  • 【leetcode】数组中的K-diff数对

    int cmp(const void* a,const void* b){
        return *(int*)a - *(int*)b;
    }
    
    int findPairs(int* nums, int numsSize, int k){
        if(numsSize<2)return 0;
        qsort(nums,numsSize,sizeof(int),cmp);
        int i=0,j=i,n=0,res=0,count=0,pst=0;
        for(; i<numsSize-1; j=i,pst=0)
        {
            while(++j<numsSize && nums[i]+k > nums[j])
            {
                if (!pst && nums[j] != nums[i]) pst=j; //循环同时找下和i不同的第一个数的位置
            }
            if(j<numsSize && nums[j]==nums[i]+k) count++;
            if (pst) i=pst; // 如果pst有值 证明之前循环顺便找到 如果没值那下面循环继续找
            else
            {
                 j=i;
                while(i<numsSize && nums[j]==nums[i])i++; 
            }
        }
        return count;
    }
  • 相关阅读:
    17.10.13
    17.10.12
    17.10.11
    17.10.10
    17.10.05
    17.10.04
    17.10.03
    17.10.02
    17.10.01
    17.9.29
  • 原文地址:https://www.cnblogs.com/ganxiang/p/13723903.html
Copyright © 2011-2022 走看看