查看: 839| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[数组] 问个数组的题目

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
之前见过一个店面题 给两个长度一样的数字数组 问怎么取使得和最大

举个例子 数组A是[4,2,1] 数组B是[2,5,3] 如果规定只能在A里取2个数 那么最后的结果就是[4,1] 和[5] 总和就是10
数组A是[7,4,3] 数组B是[6,1,1] 只能在A里去两个数 那么最后的结果就是[4,3]和6 总和就是13

只能想到2^n的暴力解法 但是肯定不对 求问有没有什么更快的

上一篇:有刷题Tutorial的推荐嘛?
下一篇:如何线下和同学一起刷题?
全局:
刷题网1029 那题求最小,这题求最大,反着做就可以了

评分

参与人数 2大米 +5 收起 理由
yaoyao3301 + 2 谢谢
tinlittle + 3 这是个明白人

查看全部评分

回复

使用道具 举报

🔗
wangs7 2019-5-15 06:00:15 来自APP | 只看该作者
全局:
没太理解给的例子?为什么不能从A取最大的两个数?

评分

参与人数 1大米 +2 收起 理由
yaoyao3301 + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
 楼主| yaoyao3301 2019-5-15 06:04:07 | 只看该作者
全局:
wangs7 发表于 2019-5-15 06:00
没太理解给的例子?为什么不能从A取最大的两个数?

如果取了A[i] 那么B[i]就不能取了 第二个例子 如果从A取最大的两个数 那么总和就是12 不是最优解

补充内容 (2019-5-15 06:06):
如果取了A[i] 那么B[i]就不能取了
回复

使用道具 举报

🔗
juventusland 2019-5-15 07:08:51 | 只看该作者
全局:
从楼主给的例子,这题意思是两个长度为N的数组A和B,允许从A中选K个数,从B中选N-K个数 (A[i],B[i]只能取一个?)。如果这样的话按A和B的差排序,前面K个选A,后面的N-K选B就行了?是不是我想简单了。。。

A=[4,2,1]
B=[2,5,3]

sort based on (A[i]-B[i],i) ->  ((2,0),(-2,2),(-3,1)

k = 2,答案就是A[0]+A[2]+B[1] =10


评分

参与人数 1大米 +2 收起 理由
yaoyao3301 + 2 谢谢

查看全部评分

回复

使用道具 举报

🔗
Kayle_Yang 2019-5-15 10:42:28 | 只看该作者
全局:
同意楼上,就按A-B 降序, 然后取K个A 后面N-K个B,复杂度nlogn。或者用maxheap 然后nlogk。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表