zoukankan      html  css  js  c++  java
  • 和为S的两个数字

    ##题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。

    思路

    符合条件的答案中,距离最远的一对数字的乘积最小(周长固定的矩形中正方形面积最大),设置左右指针往中间逼近。
    时间复杂度O(n),空间复杂度O(1)。

    代码

    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            if(array == null || array.length == 0)    return list;
            int left = 0, right = array.length - 1;
            int curr = 0;
            while(left < right) {
                curr = array[left] + array[right];
                if(curr == sum) {
                    list.add(array[left]);
                    list.add(array[right]);
                    break;
                } else if(curr < sum) {
                    left++;
                } else {
                    right--;
                }
            }
            return list;
        }
    }
    
  • 相关阅读:
    杨辉三角
    数组的两种输出方法
    整数分割各位数
    Fibonacci
    imageview圆角的实现
    listview定位到上次显示的位置
    安卓客户端 扫描二维码登陆
    java,UDP协议简单实现
    java 反射机制的实例
    js中正则表达式 书写方法
  • 原文地址:https://www.cnblogs.com/ustca/p/12366938.html
Copyright © 2011-2022 走看看