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

[数组] 返回第二大的元素index

 
全局:

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

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

x
不吹不黑
现场编程
今天店面居然遇到这题
开始以为很简单,写了个直接赋值的
   if(nums[i]>largest){

            }else if(nums[i]>second){
结果烙印一笑,我立马**
给了个 test case: int[] nums3={6,6,1,6,5,3,5,2,1,3};
让我run

然后烙印和我一起在intellij下debug
然后在烙印指导下把程序写完了

纯好奇, 这题要没刷过,有多少人能现场bug free
要求O(n),一次遍历就找到index

上一篇:有必要买个iPad Pro来刷题吗?
下一篇:由104. Maximum depth of binary tree引申的关于global result和self.result的疑问
全局:
如果要求一次遍历,这样应该行(用[1,2,3]的6种组合试了都过):
  1. def findSecond(a):
  2.     largest = float('-inf')
  3.     second = float('-inf')
  4.     idx_l, idx_s = 0, 0
  5.     for idx, val in enumerate(a):
  6.         if val > largest:
  7.             second, idx_s = largest, idx_l
  8.             largest, idx_l = val, idx
  9.         elif val > second and val != largest:
  10.             second, idx_s = val, idx
  11.     return idx_s
复制代码

评分

参与人数 1大米 +1 收起 理由
liszt + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
这种top-k in N的题,如果k很接近N而且N不是特别大,可以直接全部排序,complexity是N log N。如果k比较小或者N特别大,那么只要存一个大小为k的container,每次替换k里面最大或者最小的一个(linear search),那么整体complexity是kN。如果最后需要排序,那么再加上k log k即可。

评分

参与人数 2大米 +3 收起 理由
andyZZZzhao + 1 赞一个
14417335 + 2

查看全部评分

回复

使用道具 举报

全局:
不是黑楼主 这个题一遍做对不难的 Facebook这道题是期待你10min以内做完

top K算法也是对的 你这个是top2 时间是
O(N)没问题 只是需要再拿一个数据结构比如array处理下标

更简单就是维护 largest,second Largest,second largest index三个变量

补充内容 (2021-08-28 01:30 +08:00):
应该也需要维护largest index

评分

参与人数 1大米 +1 收起 理由
美帝马甲 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

全局:
这个用一个两元素最小堆不是更简单…
回复

使用道具 举报

🔗
wisdompeak2 2021-8-27 17:09:16 | 只看该作者
全局:
我能 zszszszszszszszs
回复

使用道具 举报

🔗
 楼主| 美帝马甲 2021-8-27 17:48:55 | 只看该作者
全局:
说topk的人,思路不大对
这题的套路是用largest,second替换,遍历一次即可,时间复杂度是O(n)
2th 和3th都是这个思路

评分

参与人数 1大米 +1 收起 理由
易潇 + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
本帖最后由 你的鱼跑了 于 2021-8-27 08:51 编辑

已经想歪了
烙印还行,还耐心给你引导。

有的面试官抓住这种问题fail你


补充内容 (2021-08-27 23:40 +8:00):
加一句 是 我想歪了
没有说楼主哈
回复

使用道具 举报

全局:
美帝马甲 发表于 2021-08-27 02:48:55
说topk的人,思路不大对
这题的套路是用largest,second替换,遍历一次即可,时间复杂度是O(n)
2th 和3th都是这个思路
为什么遍历一遍不是o(kn)而是o(n)呢?
回复

使用道具 举报

🔗
易潇 2021-8-27 22:07:16 来自APP | 只看该作者
全局:
用2元素最小堆求的话时间复杂度是ON · logK。堆每次插入是logK,判断是否需要pop是1,pop+heapify也是logK
回复

使用道具 举报

🔗
莫涯泉水 2021-8-27 22:27:53 | 只看该作者
全局:
先遍历一遍找到最大,再遍历一遍找到次大,这样O(N)。这样行么?
回复

使用道具 举报

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

本版积分规则

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