输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,

如果有多对数字的和等于S,输出两个数的乘积最小的。

这道题有很多烟雾弹;

首先如果有多对,最前面的两个数就是乘积最小的,这是数学结论吧,自己测试;

然后两个小标,一个start在数组前移动,一个end在数组后做--运动;

先拿第一个元素和最后一个元素相加,与要求的数字进行比较;

1)如果等于,恭喜找到了;

2)如果大于,则将第二个指针向后移一位(索引值-1),再求和进行比较;

3)如果小于,则将第一个指针向前移一位(索引值+1),在进行求和比较;

直至找到结果。

思想简单吧,就是题要读懂;开始想这个乘积的时候,还想着再遍历一遍list,小的直接删除。

谁知道有个这么个小坑;

import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
ArrayList<Integer> list = new ArrayList<>(); if(array.length < || array == null) {
return list;
} int start = ;
int end = array.length-; int currentSum = ; while(start < end && start <= array.length - && end <= array.length-) {
currentSum = array[start] + array[end]; if(currentSum == sum) {
list.add(array[start]);
list.add(array[end]);
return list;
}else if(currentSum > sum) {
end--;
}else {
start++;
}
} return list;
}
}

42.输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S, 如果有多对数字的和等于S,输出两个数的乘积最小的。的更多相关文章

  1. 【C语言】求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素

    //求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素 #include <stdio.h> #include <string.h> int find_mi ...

  2. 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素

    //旋转数组的最小数字 //题目:把一个数组最開始的若干个元素搬到数组的末尾.我们称之为数组的旋转. //输入一个递增排序的数组的一个旋转.输出旋转数组中的最小元素. //比如:数组{3.4,5,1, ...

  3. 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

    // test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  4. 剑指offer42:数组和一个数字S,输出两个数的乘积最小的

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

  5. 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  6. 【Data Structure & Algorithm】在排序数组中查找和为定值的两个数

    在排序数组中查找和为定值的两个数 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字,要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出 ...

  7. 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台

    <!DOCTYPE html> <html> <head> <!-- 页面上有3个输入框:分别为max,min,num:三个按钮:分别为生成,排序,去重: 在 ...

  8. 输入一个字符串,内有数字和非数字字符。例如:a123x456 17960 302tab5876。将其中连续的数字作为一个整数,依次存放到一维数组a中,例如123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。

    题目内容:输入一个字符串,内有数字和非数字字符.例如:a123x456 17960 302tab5876.将其中连续的数字作为一个整数,依次存放到一维数组a中,例如123放在a[0],456放在a[1 ...

  9. javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

    主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...

随机推荐

  1. ZedBoard前期准备工作

    1. 资源下载 内核:https://github.com/Xilinx/linux-xlnx/releases uboot:https://github.com/Xilinx/u-boot-xlnx ...

  2. JS(JAVASCRIPT)

    2018-08-17 * JAVASCRIPT(JavaScript简写js,文件的后缀名也是 demo.js)(*****) * javascript的简介 * js是基于对象和事件驱动的脚本语言, ...

  3. sqlserver数据库方面的排序四大王

    --1. row_number 用法 这个函数的功能是为查询出来的每一行记录生成一个序号select row_number() over(order by stuid) as row_number,* ...

  4. css继承属性

    在css中我们经常会遇到一些子元素继承父元素的情况 , 有时候不清楚有哪些属性会继承, 在开发中会给我们带来一些麻烦 ,稍作整理还是很有必要. 一.有继承性的属性 1.字体系列属性 font:组合字体 ...

  5. java(第十五章)

    一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名=“值”; String 对象名=new String(“值”) ...

  6. vue页面操作技巧

    // this.$router.push({ path: "https://www.baidu.com/"}); // POST请求的时候 // this.$router.push ...

  7. java 读取文件乱码

    private void filereader() throws IOException{  BufferedReader bf= new BufferedReader(new InputStream ...

  8. h264文件分析(纯c解析代码)

    参考链接:1. 解析H264的SPS信息 https://blog.csdn.net/lizhijian21/article/details/80982403               2. h.2 ...

  9. 小白的REDIS学习(二)-链表

    本文为读<Redis设计与实现>的记录.该书以Redis2.9讲解Redis相关内容.请注意版本差异. Redis使用C语言,实现了自己的链表结构,实现的代码如下 //集成了链表的各类信息 ...

  10. ef 增加或者更新的习惯思维

    首先申明是我的习惯思维,经常这样写: var item=db.tableName.FirstOrDefault(ii=>....); if(item==null) { item=new ...; ...