和为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;
    }
}
全部评论

相关推荐

给🐭🐭个面试机会吧:我boss直聘天天有家教跟我打招呼😓
点赞 评论 收藏
分享
01-21 12:26
暨南大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务