和为S的两个数字

和为S的两个数字

http://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b

利用双指针,缩小区间,因为是排序数组,所以找到的一定是积最小的。

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
        ArrayList<Integer> list=new ArrayList<>();
        int ahead=0,behind=array.length-1;//定义两个指针
        while(behind>ahead){
            int cursum=array[ahead]+array[behind];
            if(cursum==sum){//找到当前和
                list.add(array[ahead]);
                list.add(array[behind]);
                break;
            }else if(cursum>sum){//当前和大于目标和,第二个指针左移
                behind--;
            }else{//当前和小于目标和,第一个指针右移
                ahead++;
            }
        }
        return list;
    }
}
全部评论

相关推荐

05-03 12:45
西南大学 Java
nsnzkv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
群星之怒:不是哥们,你就不好奇瘫痪三十年的老植物人是啥样的吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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