目录 1 问题描述 2 解决方案 2.1 排序夹逼法   1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数.如果有多对数的和等于输入的整数,输出任意一对即可.例如,如果输入数组[1,2,4,5,7,11,15]和整数15,那么由于4+11 = 15,因此输出4和11. 2 解决方案 2.1 排序夹逼法 首先将整数数组,使用合并排序进行从小打到的排序,然后对这个排完序的数组从两头往中间遍历,一旦出现两个数的和等于输入的那个整数,则立即输出这两个数,并结…
目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题是典型的背包问题的应用,即先找出n个数的所有组合,再在这些组合中寻找组合数相加之和等于sum的组合,并依次输出这些组合中的数. 具体代码如下: package com.liuzhen.array_2; public class ManySumN { /* * 函数功能:以字符串形式返回1~n个数的所…
/*-------------------------------------------------------*/ /*寻找和为定值的两个数 输入一个数组A[0,N-1]和一个数字Sum,在数组中查找 两个数Ai,Aj,是真的Ai+Aj=Sum*/ /*解法一:暴力求解*/ /*解法二:一个数组两头扫*/ void TwoSum(int data[],unsigned int length, int sum){ //sort(data,data+length) 如果数组是有序的,那就事先排好…
====数组篇==== 2.2 求和为定值的两个数: 题目描述:有n个整数,找出其中满足两数相加为target的两个数(如果有多组满足,只需要找出其中一组),要求时间复杂度尽可能低. 解法一: 思路:开散列映射,空间换时间, 查找耗时o(n) Writer: zzq Function: 求和为定值的两个数. 方法一: 开散列映射(哈希表). 1) 用哈希表Hashmap先把数组中的数字和对应的下标进行存储,(键,值)=(具体数值,对应下标): 2) 遍历数组,对loss=target-nums[…
在排序数组中查找和为定值的两个数 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字,要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出任意一对即可. 例如输入数组1, 2, 4,7, 11, 15和数字15.由于4+11=15,因此输出是4和11. 分析:如果不考虑时间复杂度,最简单想法莫过于先在数组中固定一个数字,再依次判断数组中剩下的n-1个数字与它的和是不是等于输入的数字,但是这种思路的时间复杂度是O(n2). 假设现在随便…
1 问题描述 输入两个整数n和sum,要求从数列1,2,3,-,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题是典型的背包问题的应用,即先找出n个数的所有组合,再在这些组合中寻找组合数相加之和等于sum的组合,并依次输出这些组合中的数. package com.liuzhen.array_2; public class ManySumN { /* * 函数功能:以字符串形式返回1~n个数的所有子集,其中0代表不包含其中数字i,1代表 包含其中数…
转载请注明出处:http://blog.csdn.net/ns_code/article/details/24933341 题目描写叙述: 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S.假设有多对数字的和等于S,输出两个数的乘积最小的. 输入: 每一个測试案例包括两行: 第一行包括一个整数n和k,n表示数组中的元素个数,k表示两数之和.当中1 <= n <= 10^6,k为int 第二行包括n个整数.每一个数组均为int类型. 输出: 相应每一个測试案例,输出两…
接着上面一篇文章: http://blog.csdn.net/u013476464/article/details/40651451 接下来我们拓展一下题目,如果数组是乱序的,并且规定数组中的元素所有为非负整数,相同给定一个数sum,在数组中找出随意两个数,使二者的和为sum. 分析: 由于题目中限定了数组中的元素为非负整数,因此我们能够用哈希数组,开辟一个长度为sum的bool数组B[sum],并所有初始化为false,对数组A进行一次遍历,假设当前的元素A[i]大于sum,则直接跳过,否则,…
目录 1 问题描述 2 解决方案 2.1 全部排序法 2.2 部分排序法 2.3 用堆代替数组法 2.4线性选择算法   1 问题描述 有n个整数,请找出其中最小的k个数,要求时间复杂度尽可能低. 2 解决方案 2.1 全部排序法 先对这n个整数进行快速排序,在依次输出前k个数. 具体代码如下: package com.liuzhen.array_2; public class SearchMinK { //方法1:全部排序 public void quickSort(int[] A,int s…
目录 1 问题描述  2 解决方案 2.1 计算中值问题 2.2 选择问题   1 问题描述 中值问题是求一个n个数列表中某一数组下标k,它要求该下标元素比列表中的一半元素大,又比另一半元素小,这个中间的值被称为中值. 选择问题是求一个n个数列表的第k个最小元素的问题. 2 解决方案 2.1 计算中值问题 本文使用Lomuto划分算法思想,此处引用<算法设计与分析基础>第三版上一段文字介绍及配图,具体如下: 具体实现代码如下: package com.liuzhen.chapter4; pub…