一个数组,找出两数之和为m的所有组合

算法面试题:一个数组,找出两数之和为m的所有组合

public static void main(String[] args) {
   int[] list = {1,2,3,4,5,6,7,8,9,10,11,23,45,55,66,77,88,99,24};
   int limit = 9;
   arraySort(list);
   methodA(list,limit);
}
public static void methodA(int[] list,int limit){
   int s = 0;
   int e = list.length -1;
   while (list[e] > limit){
      e--;
   }
   while (e > s){
      int r = list[s]+list[e];
      if(r == limit){
         System.out.println(list[s]+"+"+list[e]+"="+limit);
         s++;
         e--;
      }else if(r > limit){
         e--;
      }else if(r < limit){
         s++;
      }
   }
}
public static int[] arraySort(int[] list){
   int temp;
   for (int i =0; i<list.length;i++){
      for (int j = i ;j<list.length;j++){
         if(list[i]>list[j]){
            temp = list[i];
            list[i]=list[j];
            list[j]=temp;
         }
      }
   }
   System.out.println(Arrays.toString(list));
   return list;
}

还可以有另外一个思路:

public static void methodB(int[] list,int limit){
   int s =0;
   int e = list.length-1;
   while (list[e] > limit)
      e--;
   while (e>s){
      for (int i =0 ;i<e;i++){
         if (list[i]+list[e]==limit)
            System.out.println(list[i]+"+"+list[e]+"="+limit);
      }
      e--;
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值