算法:数组中和为s的两个数字
@问题 :题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
@思路: 两个数之和一定,差越大,积越小;
1:排除数组为空以及数组长度不够的情况;
2:通过两边往中间靠近的原则
3:while循环,当头小于尾的时候,将符合条件的放入list;
4:当和大于给定的数时,两端的指针往中间靠近;
package LG.nowcoder; import java.util.ArrayList; /**
* @Author liguo
* @Description 和为S的两个数字
* @问题 :题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,
* 如果有多对数字的和等于S,输出两个数的乘积最小的。
* 输出描述:
* 对应每个测试案例,输出两个数,小的先输出。
* @思路: 两个数之和一定,差越大,积越小;
* 1:排除数组为空以及数组长度不够的情况;
* 2:通过两边往中间靠近的原则
* 3:while循环,当头小于尾的时候,将符合条件的放入list;
* 4:当和大于给定的数时,两端的指针往中间靠近;
* @Data 2018-09-07 23:31
*/
public class Solution20 {
public ArrayList <Integer> FindNumbersWithSum(int[] array, int sum) {
ArrayList <Integer> list = new ArrayList <Integer>();
if (array == null || array.length < 2) {
return list;
}
int index = 0, end = array.length - 1;
while (index < end) {
if (array[index] + array[end] == sum) {
list.add( array[index] );
list.add( array[end] );
return list;
} else if (array[index] + array[end] > sum) end--;
else index++;
}
return list;
}
}
算法:数组中和为s的两个数字的更多相关文章
- 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9
python解决方案 nums = [1,2,3,4,5,6] #假如这是给定的数组 target = 9 #假如这是给定的目标值 num_list = [] #用来装结果的容器 def run(nu ...
- Two sum(给定一个无重复数组和目标值,查找数组中和为目标值的两个数,并输出其下标)
示例: nums = [1,2,5,7] target = [6] return [0,2] Python解决方案1: def twoSum(nums, target): ""&q ...
- 面试40-一个数组,有2个数字出现奇数次,其余都是偶数次,求这两个数字O(n) O(1)
#include<iostream> using namespace std; // 题目:数组中只有不多于两个数字出现次数是奇数次,其他都是偶数次,求出出现奇数次的数字(不含0的数组) ...
- 10.排序数组中和为给定值的两个数字[Find2NumbersWithGivenSum]
[题目] 输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字.要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出任意一对即可. 例如输入数组1 ...
- 1001 数组中和等于K的数对 1002 数塔取数问题 1003 阶乘后面0的数量 1004 n^n的末位数字 1009 数字1的数量
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K ...
- 算法 数组中出现次数最多的数字 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- c++刷题(12/100)无序数组中和为定值的最长子数组
题目一: 最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: ...
- (回溯法)数组中和为S的N个数
Given a list of numbers, find the number of tuples of size N that add to S. for example in the list ...
- 51nod 1001 数组中和等于K的数对【二分查找/排序】
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组 ...
随机推荐
- Android 实现卡片翻转的动画(翻牌动画)
Android 实现卡片翻转的动画(翻牌动画) 需求描述 点击卡片,卡片翻转过来显示内容. 点击左边的卡片,将卡片翻转显示右边的图片结果. 功能实现 因为要翻转所以使用动画来完成翻转的动画.动画分为两 ...
- [Swift]LeetCode1006. 笨阶乘 | Clumsy Factorial
Normally, the factorial of a positive integer n is the product of all positive integers less than or ...
- [bzoj4771] 七彩树
题意 给定一棵n个点,每个点带颜色的有根树.点的编号和颜色编号都在1到n,根的编号为1.m次询问,求x子树中与x距离边数不超过k的点中,颜色的种类数目.每个测试点有多组数据. 分析 不妨设1的父亲为0 ...
- 第四周 IP通信基础回顾
传输层的作用:分割上层数据:在应用主机程序之间建立到端的连接:流量控制:面向连接与面向非连接. URG=1,紧急指针字段有效. 窗口字段- 占2个字节,用来让对方设置发送窗口的依据,单位为字节. TC ...
- CentOS 6.5系统上安装SVN服务器
有效地管理源代码的方式是使用工具去帮助我们管理 , SVN(Subversion)就是目前主流的源代码管理工具 , 也称为版本控制工具. 本文主要介绍CentOS6.5上安装SVN服务器,配置SVN服 ...
- 记一次尴尬的git reset丢失分支故障
最近...似乎一直在踩坑... 也不是什么故障,只是把一个分支的功能弄没了,之后在reflog里找到又恢复了. 产生原因是有同事错误地把分支B merge到了分支A并push. 我直接在分支A上res ...
- 用了 HTTPS 还不安全,问题就出在低版本 TLS 上
HTTPS 加密时代已经来临,近两年,Google.Baidu.Facebook 等互联网巨头,不谋而合地开始大力推行 HTTPS, 2018 年 7 月 25 日,Chrome 68 上线,所有 H ...
- CSS,JavaScript知识点
1.css重用 <style> 如果整个页面的宽度 > 900px时: { . ...
- 呵呵,Python操作MSSQL的帮助类
从网上找的,估计原文是:Python操作SQLServer示例 本文主要是Python操作SQLServer示例,包括执行查询及更新操作(写入中文). 需要注意的是:读取数据的时候需要decode(' ...
- [Python Web]常见的 POST 提交数据的方式
本文参考整理于:https://imququ.com/post/four-ways-to-post-data-in-http.html 简介 这里介绍了,用 POST 方法提交数据时,常见的三种方式: ...