楼主: zjccpmh
跳转到指定楼层
上一主题 下一主题
收起左侧

失业的第x天

 
🔗
 楼主| zjccpmh 2019-4-11 12:13:27 | 只看该作者
全局:
zjlvmiao 发表于 2019-4-11 09:25
楼主是不是可以先用完pto,再请unpaid/parental leave,最后再拿三个月pip package走人?

是的 理论上应该这样做
回复

使用道具 举报

🔗
 楼主| zjccpmh 2019-4-11 16:25:29 | 只看该作者
全局:
失业第三天打卡今天准备把binary search 类别的题目过一遍,以后就基本不用再动binary search了。毕竟简单。
几道值得刷的题目
33. Search in Rotated Sorted Array 关键在于分清楚落在左边和右边的不同情况 忘了最外层if可以判断是在左边还是右边,这样可以把归类弄的简单点 todo明天再写一遍
k-th smallest element in two sorted array算复习下两个array 找中点 1. 没有想清楚递归的含义。其实应该focus在想清楚当前层是什么意思。 当前层是找在2个array里面的第k个,通过的做法是比较2个array的第k/2个。
2. 当进入当层递归时,某个数组的startindex 以后越界了,那么意味着,所有的k个数都从另外一个数组里面拿。想清楚物理意义,这样代码才不会错。落实到代码:
return nums2[start2 + k - 1];
3. 当前层的第k个数的index 应该是 k - 1. 比如,第一个数的index是0. 代码:
mid1 = start1 + k / 2
- 1
4. 对于当前层应该怎么传数值给下一层递归,还是通过物理意义。当前层从单一一个array里找了k / 2个数字, 所以下一层要
找 k - k/2 个数字。而不是k/2。 千万注意
again:明天再写一遍
k-th element closest to target in array其实就是找到了target以后,把左半边array 和右半边array分开,做一遍  k-th smallest element in two sorted array Math.abs(input[i] - target);


对于 33. Search in Rotated Sorted Array,我其实忘了具体的trick是怎么样的了,所以就干脆直接很笨的分类讨论再归纳起来。
Step 1: 分类
mid  >  target
1. both on left -> update right
2. both on right -> update right
3. mid on left, target on right -> update left

mid < target
1. both on left -> update left
2. both on right -> update left
3. mid on right target on left -> update right
step2: 合并
mid  >  target

   mid on left, target on right -> update left

   else  -> update right
mid < target

   mid on right target on left -> update right

   else -> update left
虽然最后代码没有最优的方式优雅,但是锻炼这种能力还是很重要的,毕竟你不能保证你记得所有题的trick或者一眼看穿马甲。

回复

使用道具 举报

🔗
饮风醉月 2019-4-12 05:34:15 | 只看该作者
本楼:
全局:
楼主加油!
回复

使用道具 举报

🔗
halowoyaojob 2019-4-12 07:22:07 | 只看该作者
全局:
楼主加油!不要灰心
回复

使用道具 举报

🔗
 楼主| zjccpmh 2019-4-12 15:30:55 | 只看该作者
全局:
失业第四天打卡
面试:
以为默据了,等了一个多礼拜,等到黑车加一轮电面。
另外西雅图的一家小公司,2周前电面LRU cache没答上来,国人大哥还是放我过去了,给了onsite。心里还是蛮感激自己目前面试碰到的面试官都挺照顾我的。
刷题:
作为耿直情商低的码农,和地主有不同意见被罚了。没很大激情再在论坛里每天熬夜打很多字多总结一遍题目。不是不做笔记,是把笔记放在我自己交的code里好了。把我知道的关于dev-list和pip的东西都发出去了,希望能帮到一些“同事”吧。
打卡里面只更新最重要的部分好了。
selection sort with 3 stacks 3个stack,original,temp,result 1. 可以把original的数据扔进temp,每次取最小,然后把除了最小的以外的数据push回original stack。
2. 试了判断original || temp不为空,并且把不为空的那个设为original,这样每次循环的话,只用移一次。这种少移一次的情况,在最后只剩一个元素的情况下需要特殊处理
没有toto,😄
  selection sort with 2 stacks        1.把temp stack和result stack 结合
2. 需要多存一个local variable来表示result stack里面有多少已经是最优解了,不需要再pop
merge sort array merge那步独立出来,写成一个单独的函数,代码清晰很多。 写了3种版本,
1. helper function 返回一个sort好的subarray,然后在当前层把它merge起来。耗费了额外的空间
2. 在helper function里面新建2个temp array,用于存当前没merge的结果,做merge时候把数字一个个填到input arrya里面去。
3. 在最顶成调用helper function的时候,传一份helper[inpput.length] 的array,用这同一份array做merge时候的临时变量。
看起来没有什么区别的3种写法,其实是不同的方法,在不同的难一些的题目上会有区别。
quick sort left和right指针的物理意义很重要。
left左侧不包含left,全部比pivot小
right右侧,不包含right,全部比pivot大
1.while (start <= end) {
    while (start <= end && array[start] < pivot)  {              start++;            }
     while (start <= end && array[end] > pivot) {
         end--;            }
      if (start <= end) {                swap(array, start++, end--);            }
⚠️:物理意义,left左边不包含left,right右边不包含right。那么其实当left和right同时指向某个点的时候,这个点和pivot的关系还没确定。
2. 写partition的时候,用上把pivot'换到最右边,然后pratition做完了,再和left index指向的数值调换的trick。 为什么是和left index指向的点换? 因为left左边全比pivot小。
3. partition 单独放到一个函数里面去
rainbow sort (sort 1,0 -1 的array)3根指针 left, mid, right
物理意义:
left: left左边全为-1,
mid: 当前正在scan的点
right: right右边全为1
  if (array[middle] == -1) {
     swap(array, left++, middle++);
} else if (array[middle] == 0) {
     middle++;
} else {
    swap(array, middle, right--); //mid不++
}
不写了,没心情了


回复

使用道具 举报

🔗
JohnsonJiang 2019-4-12 15:41:05 | 只看该作者
全局:
zjccpmh 发表于 2019-4-12 15:30
失业第四天打卡
面试:
以为默据了,等了一个多礼拜,等到黑车加一轮电面。

谢谢LZ了!LZ每天总结很用心了!
回复

使用道具 举报

🔗
susiejss 2019-4-13 04:26:48 | 只看该作者
全局:
楼主加油~~~我还没上岸,一起努力!如果能保持每天都这么认真做事情,那是没啥问题的。
回复

使用道具 举报

🔗
 楼主| zjccpmh 2019-4-14 15:48:47 | 只看该作者
全局:
没什么重要的更新就先不打卡了,再把狗家的面经和高频题整理一遍,会把整理结果放在github上的。
先忙着去准备狗家了。
回复

使用道具 举报

🔗
13abc 2019-4-18 03:37:36 | 只看该作者
本楼:
全局:
楼主加油!
回复

使用道具 举报

🔗
 楼主| zjccpmh 2019-4-18 04:41:14 | 只看该作者
全局:
失业第10天了,时间好快。
coding 部分,正在整理所有dp,1-2天内会整理完,然后应该是放在github上,里面会include我上过的两个培训机构讲过的题。

shadow了2个亚麻vo,给近期做vo的小伙伴一些建议。
1. 考虑conner case,可以和面试官商量说先focus在主体部分,最后再处理,但是不提,ignore conner case是大忌。
2. 别上来就说我要用个map/array/set之类的数据结构,或者上来就说我要把input就sort一下。对了还好,错了的话,就是一个乱用数据结构的锅了。
3. 面试官问在xxx情况下会怎么样呢,很可能是你漏了某些情况,或者bug。就算根据提示改对了,也是说有bug,在提示下改好了。但是如果人家扔过来的hint接不住,那么就是非常negative的反馈了。
4. 面试里,制造点闪光点还是很有用的。
5. 再简单的题目,也要和面试官复述一下,确保你听懂了。然后做点assumption,写下来。一上来就写代码,大忌
比如two sum:
input size >= 2
然后分析case, 写出来
case1: left + right  > target -> move right--
case2:  ....

6. 写完了之后,别说我做完了,说我基本做完了,然后跑个数据验证下。别用嘴跑,或者用鼠标点着代码跑。
比如 two sum
1, 2, 4,5  6

left:     1    2   4    4  
right:   6    6   6    5
target: 9
回复

使用道具 举报

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

本版积分规则

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