在由N个正整数的集合S中,找出最大元素C,满足C=A + B

原创 2015年07月06日 21:51:08

[百度]在由N个正整数的集合S中,找出最大元素C,满足C=A + B

其中A,B都是集合S中元素,请给出算法描述,代码与时间复杂度分析。



答案:
http://ask.julyedu.com/question/90


思考过程:
首先C=A+B,有3个未知数,当其中两个确定了,第三个只要判断是否存在即可。
变形,C - A = B;[C由大到小枚举(可以排序,由于是正整数,可用线性排序方法)],A随便枚举。这里复杂度是N^2。最后判断B是否存在集合中即可。
如何判断是否存在:

最合理的:可以用2分。O(logN)
最快的:可以用hash(正整数,那么直接数组下标作为key,当arr[B] = 1 ,那么B存在)。O(1)
最慢的:遍历(O(N))


将 S 集合中,任意元素间两两相加,结果的和输出得出新集合 N。
从大到小排序集合 N。
从头到尾逐个查看集合N中的元素是否在S集合中,当 N 集合第一次出现有存在有元素在S集合时,即这得到的元素是,满足题目条件的最大元素C。


[经典面试题][百度]在由N个正整数的集合S中,找出最大元素C,满足C=A + B

【题目】 在由N个正整数的集合S中,找出最大元素C,满足C=A + B 其中A,B都是集合S中元素,请给出算法描述,代码与时间复杂度分析。 【分析】 1,对集合S进行排序(快排),从小到大排序 2,...
  • SunnyYoona
  • SunnyYoona
  • 2015年01月30日 14:12
  • 2223

给定一个整数sum,从有N个无序元素的数组中寻找元素a、b、c、d,使得 a+b+c+d =sum,最快的平均时间复杂度是____。

给定一个整数sum,从有N个无序元素的数组中寻找元素a、b、c、d,使得 a+b+c+d =sum,最快的平均时间复杂度是____。 正确答案: E   你的答案: C (错误) ...
  • chengonghao
  • chengonghao
  • 2016年07月16日 20:24
  • 2515

找出集合中最大元素C,满足C=A+B,其中A,B都是集合中的元素

import java.util.Arrays; /** * Created by lihaibin02 on 2016/9/9. */ public class findTheMaxInt {...
  • I_peter
  • I_peter
  • 2016年09月09日 11:59
  • 202

leetcode-java.T015_3Sum---给定一个n个元素的数组,是否存在a,b,c三个元素,使用得a+b+c=0,找出所有符合这个条件的三元组

package leetcode.T015_3Sum; import java.util.ArrayList; import java.util.Arrays; import java.util.H...
  • danielzhou888
  • danielzhou888
  • 2017年06月07日 21:04
  • 952

ZCMU 1098 查找元素

1098: 查找元素Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1042  Solved: 167 [Submit][Status][Web B...
  • sinat_35866463
  • sinat_35866463
  • 2017年05月03日 15:54
  • 248

在数组中找出3个数使得它们和为0

leetcode上的原题,美图的笔试题目。 本质上这个问题是2数之和的问题扩展: 在给定的数组中找出两个数a,b,使得a+b=sum。 三个数之和为0,即a+b+c=0,可以转化为a+b=-c,这需要...
  • u010732356
  • u010732356
  • 2017年03月31日 16:16
  • 197

【数据结构机试复习10】 求和 & 最短前缀

Ex1: 求和: 给定一个具有n个整数的数组,问在S中是否存在3个元素a、b、c使得a + b + c = 0。 注意:三元组(a、b、c)必须是一个非递减顺序(即a 例如,给定数组S = [-...
  • weixin_40372954
  • weixin_40372954
  • 2018年01月08日 18:50
  • 58

找出N个元素的数组中最大的K个数

题目: 给出 N 个整数(N可能很大,以致无法装入内存),找出前 K 个最大的整数 【解法一】 如果 N 的数量不是很大,例如在几千个左右,则在这种情况下,那我们就先排序一下,这里快速排序或者推排序都...
  • shuiziliu1025
  • shuiziliu1025
  • 2016年03月22日 21:18
  • 973

LintCode-和大于S的最小子数组

给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。 您在真实的面试中是否遇到过这个题?  Yes 样例...
  • wangyuquanliuli
  • wangyuquanliuli
  • 2015年08月11日 20:28
  • 1601

406. 和大于S的最小子数组

题目描述给定一个由 n 个正整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组(连续)。如果无解,则返回 -1。样例 给定数组 [2,3,1,2,4,3] 和 s =...
  • hjl1997
  • hjl1997
  • 2017年12月06日 11:37
  • 42
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在由N个正整数的集合S中,找出最大元素C,满足C=A + B
举报原因:
原因补充:

(最多只允许输入30个字)