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

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

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

利用头尾指针判断

import java.util.Scanner;

public class Main {
    public static void fun(int[] arr,int key,int len){
        int pre = 0;
        int end = len-1;
        while (pre < end){
            if(arr[pre]+arr[end]<key){
                pre++;
            }else if(arr[pre]+arr[end]>key){
                end--;
            }else{
                if((pre==0||end==len-1)||(arr[end]!=arr[end+1]&&arr[pre]!=arr[pre-1])){
                    System.out.println(arr[pre]+" "+arr[end]);
                    pre++;
                    end--;
                }else if(arr[end]==arr[end+1]){
                    end--;
                }else if(arr[pre]==arr[pre]-1){
                    pre++;
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int key = sc.nextInt();
        int[] arr = new int[num];
        int i=0;
        while (sc.hasNext()){
            arr[i++] = sc.nextInt();
        }
        fun(arr,key,num);
    }
}
全部评论

相关推荐

10-30 16:31
重庆大学 Java
代码飞升_不回私信人...:你说你善于学习,大家都会说。你说你是985,985会替你表达一切
点赞 评论 收藏
分享
牛马人的牛马人生:一开始看成了网吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务