【1对1】和为s的两个数字

2019-02-10  本文已影响1人  7ccc099f4608

https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b?tpId=13&tqId=11195&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

日期 是否一次通过 comment
2019-02-10 20:20 N

题目:返回乘积最小的一组two sum
思路:

  1. two sum问题;
  2. 乘积最小,则二者相差最大,只好用two point方法了。

1. two point

import java.util.ArrayList;
public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int[] array,int sum) {
        ArrayList<Integer> result = new ArrayList<>();
        
        if(array == null || array.length == 0) {
            return result;
        }
        int sta = 0;
        int end = array.length - 1;
        
        while(sta < end) {
            if(array[sta] == sum-array[end]) {
                result.add(array[sta]);
                result.add(array[end]);
                break;
            } else if(array[sta] > sum-array[end]) {
                end --;
            } else {
                sta ++;
            }
        }
        
        return result;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读