LeetCode532 數組中的K-diff數對

數組中的K-diff數對>>>
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

  • 雙指針: 先對數組進行排序,然後再定義連個指針left,right


  //雙指針法
    public int findPairs1(int[] nums, int k){
        Arrays.sort(nums);

        int left = 0;
        int right = 1;
        int rs = 0;
        while (right<nums.length){

            int abs = nums[right]-nums[left];

            //差值相等
            if(abs==k){

                rs++;
                //跳過重複元素
                while(right<nums.length-1&&nums[right] == nums[right+1]){
                    right++;
                }
                while(left<nums.length-1&&nums[left] == nums[left+1]){
                    left++;
                }

                left++;
                right=left+1;

                //假如絕對值大於k
                }else if(abs>k){
                //左指針右移動一步
                left++;
                if(left==right) right=left+1;
            }else{
                //有指針有移動和一步
                right++;
            }

        }
        return  rs;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章