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

[Leetcode] 尋找亂序數組中特殊數

全局:

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

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

x
其實我前幾天發過一樣的題,但好像我表達題目不夠清楚沒得到答案,我想了好幾天還是沒想到,想再來問問看有沒有人會。這題有點像数组中的第K个最大元素的變異題:給定一個亂序數組 A,輸出一個特定數字x,其中數字'x' 為數列中的第x大,若無此數字則輸出 -1
例子:-9,8,1,-1,2 則輸出 2 因為2 “恰好”是此數列中第二大的數
因為一共有n個數,得確認 第 1 到 第n-1 大的數 是不是剛好等於數字本身
我知道要用QuickSelect  但是細節上每次遞迴呼叫要改變的Index我一直沒搞懂如何用Select寫出O(N)的解法><

感激不盡!!!







上一篇:Java Spring为何不能合并Dao和Service层呢?
下一篇:python选手找leetcode mock队友
全局:
不需要啥qucik select.
假设有n个元素。你建立一个长度为n+1的数组count。扫一遍每个元素x,就更新count[x]+=1,特别的对于x>n, 你更新count[n+1]+=1
然后你对count从高到底走一遍 i。你就可以知道大于等于i的元素有几个。如果恰好有i个,那么i就是你要的答案。
回复

使用道具 举报

推荐
davidchai 2021-3-2 15:26:36 | 只看该作者
全局:
有两点看法:
1. 非正数的话应该不对,除非你说-5大的就是第5小的。。
2. 考虑正数。例如 [8,2,0,-1,-9,3,-4,6,-2],排好序之后是 [-9,-4,-2,-1,0, 2, 3, 6, 8]。假如我们第一次用quickSelect选的pivot是8,而发现8是1st大的,但是8>1,这个时候我们就知道应该找比8要小的位置;第二次我们如果碰巧选了pivot是2,发现2是第4th大的,而2<4, 所以我们需要找比2大的。这样夹逼之后看是否有答案,有的话输出,没有的话返回-1.

最后请问:这是谁家的什么面试题?
回复

使用道具 举报

🔗
匿名的 2021-3-2 02:31:18 | 只看该作者
全局:
-9,8,1,-1,2 則輸出 2 因為2 “恰好”是此數列中第二大的數

2是第三大的数字诶 是我理解错了还是你写错了 》。《
回复

使用道具 举报

🔗
 楼主| AmberLNLF 2021-3-2 02:45:36 | 只看该作者
全局:
匿名的 发表于 2021-3-2 02:31
-9,8,1,-1,2 則輸出 2 因為2 “恰好”是此數列中第二大的數

2是第三大的数字诶 是我理解错了还是你写错 ...

咦 第一大是8 第二大是 2, 沒錯吧...
回复

使用道具 举报

🔗
匿名的 2021-3-2 03:03:49 | 只看该作者
全局:
AmberLNLF 发表于 2021-3-2 02:45
咦 第一大是8 第二大是 2, 沒錯吧...

我理解错了 抱歉!
回复

使用道具 举报

🔗
hayden 2021-3-2 04:31:43 | 只看该作者
全局:
感觉QuickSelect不能做
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
hayden 2021-3-2 10:51:05 | 只看该作者
全局:

我猜根据楼主的意思,具体找第几大是data dependent的。返回的数n是数组的第n大。
回复

使用道具 举报

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

本版积分规则

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