📣 独立日限时特惠: VIP通行证立减$68
楼主: dayu071
跳转到指定楼层
上一主题 下一主题
收起左侧

狗家电面

全局:
可以用xor  index+1 和 num 进行xor 当结果是0的时候就找到了
回复

使用道具 举报

🔗
幕云飞 2018-1-4 17:25:30 | 只看该作者
全局:
为什么我觉得第二个case解是2呢?
题意说最小index,而且没规定生序或者降序
回复

使用道具 举报

🔗
8888888 2018-1-6 12:52:38 | 只看该作者
全局:
哇 跟我的题简直一样
回复

使用道具 举报

🔗
dengzeyu147 2018-1-13 23:01:44 | 只看该作者
全局:
fentoyal 发表于 2018-1-4 03:23
握手,看了ls用sum的, 我以为就我这么想呢。。

很屌!!请问原理是什么啊 请教大佬
回复

使用道具 举报

🔗
nicemayi 2018-1-18 18:29:10 | 只看该作者
全局:
先从后往前遍历第一次,维护一个最小堆;再从前往后遍历第二次,维护一个最大堆;在第二次遍历的时候,当最大堆的top小于最小堆的top时候return此时的index,否则最小堆弹出top并放入最大堆中。
回复

使用道具 举报

🔗
zzy1993 2018-1-18 22:47:40 | 只看该作者
全局:
我有个思路。找到的这个index,一定满足 max(A[0 to index] ) < min(A[index + 1 to N]),所以开一个int[] left保存从左往右的最大值,再开一个int[] right保存从右往左的最小值,然后选出 left[index] <= right[index + 1]那个index
回复

使用道具 举报

🔗
wjw779 2018-1-19 16:47:04 | 只看该作者
全局:
九零 发表于 2018-1-4 03:15
当前位置数组的最大值

请问层主能举个例子吗,不是很理解,谢谢
回复

使用道具 举报

🔗
wjw779 2018-1-19 16:56:50 | 只看该作者
全局:
fentoyal 发表于 2018-1-4 03:13
贡献个我的思路,很简洁, 大家看对不对:

请问层主能说一下思路吗,不是很理解算法,谢谢
回复

使用道具 举报

🔗
fentoyal 2018-1-20 04:00:50 | 只看该作者
全局:
wjw779 发表于 2018-1-19 16:56
请问层主能说一下思路吗,不是很理解算法,谢谢

按题目要求,其实就是数组可以分两份,满足 左边最大的 <右边最小,且 分割点坐标尽可能小。
分割点坐标尽可能小这个简单,就从左往右找分割点就行了。

关键说左边最大的 <右边最小
如果是一个普通数组,这个一趟遍历O(1)空间应该是不行的(没证明,直觉)。
但条件是数组数是1 ~ n, 那可以利用一下:
比如说这个数组:
2 3 5 X X X
当你看到5时,你不看后面是啥,是不是可以立刻知道,最终答案(分割点)坐标(1-base坐标)肯定>=5了。
所以原理就是你坐标i = 你从左边数到i的最大值时,则i是一个合理的分割点:比如
2 3 5 4 1 6 7 8
到1时,1左边最大为5,1的坐标也是5(第5个,idx=4)那这5个数就是自成一体的。如果1左边最大为7:
2 3 7 4 1 6 5  8
那想让左边包含全部1到7的数字,分割点至少在7,所以得继续往右走到5,这时坐标为7,最大为7,找到分割点。

评分

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

查看全部评分

回复

使用道具 举报

🔗
fentoyal 2018-1-20 04:01:19 | 只看该作者
全局:
dengzeyu147 发表于 2018-1-13 23:01
很屌!!请问原理是什么啊 请教大佬

我在ls的回帖里简单说了下。
回复

使用道具 举报

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

本版积分规则

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