题解 | #不重复打印排序数组中相加和为给定值的所有二元组#

不重复打印排序数组中相加和为给定值的所有二元组

http://www.nowcoder.com/practice/1ff1a607c81748baa1823ffa687d74c4

import java.util.Scanner;
public class Main{
    public static void dfs(int[] arr,int k){
        int n = arr.length;
        int l = 0,r = n - 1;
        while(l < r){
            if(l > 0 && arr[l] == arr[l - 1]){
                l++;
                continue;
            }
            if(arr[l] + arr[r] == k){
                System.out.println(arr[l] + " " + arr[r]);
                l++;
                r--;
            }else if(arr[l] + arr[r] > k){
                r--;
            }else{
                l++;
            }
        }
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int k = sc.nextInt();
        int[] arr = new int[num];
        int index = 0;
        while(sc.hasNext()){
            arr[index++] = sc.nextInt();
        }
        dfs(arr,k);
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务