和为s的两个数字(Java实现)
2017-05-14 12:20
281 查看
本题为剑指offer面试题41 题目1
牛客网测试地址:https://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b
[编程题]和为S的两个数字
热度指数:43146时间限制:1秒空间限制:32768K
算法知识视频讲解
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
[b]输出描述:[/b]
package go.jacob.day514;
import java.util.ArrayList;
/*
* 首先定义两个指针,第一个指向数组的第一个元素,第二个指向数组最后一个元素
* 如果两个元素和大于sum,第二个指针前移,反之第一个指针后移,直至和等于sum
*/
public class Demo2 {
public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
ArrayList<Integer> list = new ArrayList<Integer>();
//鲁棒性判断
if (array == null || array.length < 2)
return list;
boolean flag = false;
int i = 0, j = array.length - 1;
int tmpSum;
while (i < j) {
tmpSum = array[i] + array[j];
if (tmpSum == sum) {
flag = true;
break;
} else if (tmpSum > sum)
j--;
else
i++;
}
if (flag) {
list.add(array[i]);
list.add(array[j]);
}
return list;
}
}
牛客网测试地址:https://www.nowcoder.com/questionTerminal/390da4f7a00f44bea7c2f3d19491311b
[编程题]和为S的两个数字
热度指数:43146时间限制:1秒空间限制:32768K
算法知识视频讲解
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
[b]输出描述:[/b]
对应每个测试案例,输出两个数,小的先输出。
package go.jacob.day514;
import java.util.ArrayList;
/*
* 首先定义两个指针,第一个指向数组的第一个元素,第二个指向数组最后一个元素
* 如果两个元素和大于sum,第二个指针前移,反之第一个指针后移,直至和等于sum
*/
public class Demo2 {
public ArrayList<Integer> FindNumbersWithSum(int[] array, int sum) {
ArrayList<Integer> list = new ArrayList<Integer>();
//鲁棒性判断
if (array == null || array.length < 2)
return list;
boolean flag = false;
int i = 0, j = array.length - 1;
int tmpSum;
while (i < j) {
tmpSum = array[i] + array[j];
if (tmpSum == sum) {
flag = true;
break;
} else if (tmpSum > sum)
j--;
else
i++;
}
if (flag) {
list.add(array[i]);
list.add(array[j]);
}
return list;
}
}
相关文章推荐
- android、Java下判断两个String是否相等 、EditText输入是否为空,限定输入数字的实现 总结
- android、Java下判断两个String是否相等 、EditText输入是否为空,限定输入数字的实现
- 用java实现欧几里得算法求两个数字的最大公约数
- 《剑指offer》编程题java实现(十一):数组中只出现一次的两个数字
- android、Java下判断两个String是否相等 、EditText输入是否为空,限定输入数字的实现 总结
- 和为S的两个数字java实现
- Java2下Applet数字签名具体实现方法
- JAVA实现的吸血鬼数字算法,高效率版本(已有网友给出算法说明)
- 求住 谁能帮我用java或c语言 实现一下公式 任意输入数字可出结果~~
- 用java实现单位的跟踪 , 稍加升级就可以实现两个单位的动态跟随
- Java实现将数字转化为繁体汉字表示
- Java2下Applet数字签名具体实现方法
- Java2下Applet数字签名具体实现方法
- Java实现数字图像处理的困惑
- Java2下Applet数字签名具体实现方法
- 数字金额转换中文大写Java实现
- 转 .Net/C#/VB/T-SQL/Java/Script 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
- Java2下Applet数字签名具体实现方法
- js中,实现两个数字相加
- java实现合并两个数组