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

加州 妹子一枚 监督自己每天⛽️刷题!!欢迎大家评论分享心得!!

🔗
 楼主| ootsuka 2018-9-18 14:13:46 | 只看该作者
全局:
9/17 Mon
感觉自己DFS的掌握太差了,打算今天主要看DFS的题目,希望能有点感觉
新题
109. Convert Sorted List to Binary Search Tree (the same as 108) (Medium)
此题需要将linkedList来build tree。一定要建立helper function来recursively call itself 并且是用DFS不断增加深度。buildTree的task其实就是每次找到root 节点,并且在建立root.left和root.right 时不断call function。找到root节点就是要找到一个list中间的值,回想linkedlist的找middle节点的方法是用快慢指针的方法!
113. Path Sum II (Medium)
Backtracking 问题。老步骤,向helper function传入root, 总res,当前的depth, 当前currList。一进入helper function立马加入当前节点,再讨论root节点和非root节点的情况。重要的一步:最后时刻remove掉currList中的最后一个。
210. Course Schedule II
Topological Sorting. 深度最深的课程表示:被其他课程依赖最多的->应该最先修的课程,与207code变化不大,增加一个result list,在dfs中每次结束运算,添加到res即可
513. Find Bottom Left Tree Value BFS
Doing BFS from right to left will simply return the last node in the queue

旧题
108. Convert Sorted Array to Binary Search Tree
比109题简单,因为是array,直接可以用left index and right index 来找处在middle 位置的值
111 Min Depth of Binary Tree
Return (left == 0 || right == 0 ) ? left + right + 1: Math.min(left, right) + 1;
意思为如果左右subtree有一个为null时,那么就一定要left + right + 1而不能取最小的0
112 Path Sum
求是否存在从root到leaf节点value的和等于sum。Recursive function:针对三种情况讨论:1)node为null 2)该node是最后的leaf节点并且等于sum 3)recursive该node的left和right。
207 Course Schedule
Topological Order. 建立graph来存每节课所要求的prerequisites。用一个int array来存每个结点的访问状态 1 = visiting;2 = visited. 再对每一节课过一遍dfs查看是否有环。在dfs中对每个点的prerequisites也过一遍dfs看是否有环。

今日收获🌺
        • 如何判断是backtracking呢?
                ○ 看同一个level(depth)是是否面临着多重选择,那么就需要用backtracking的老套路
        • Topological Sorting (with DFS)
                ○ Topological Sorting is mainly used for scheduling jobs from the given dependencies among jobs.
                ○ 时间复杂度: O(V + E) V: vertex; E: Edges, 当依赖关系越多,E越接近于V的数量,就几乎是线性时间
        • DFS 与 Topological 的区别
                ○ In DFS, we print a vertex and then recursively call DFS for its adjacent vertices.  Print-> “5 2 3 1 0 4”, In Topological, we need to print a vertex before its adjacent vertices. (有前后顺序)  例如:4或者5一定要比 0 node先print出来
                ○ In DFS, helper function只有一个返回状态;In Topological sort, 有两个返回状态: visited & visiting 来判断graph中有无环出现


回复

使用道具 举报

🔗
 楼主| ootsuka 2018-9-20 02:18:57 | 只看该作者
全局:
littlechen32 发表于 2018-9-17 12:07
leetcode 上边有个explore,里面有常见题型,大概155道,建议那些反复做,总计模板套路,我最近也要开始重新 ...

你好,你是指explore里按topic分类的那些吗?最近做题顺序有些凌乱,想改变策略
回复

使用道具 举报

🔗
Yunxi 2018-9-20 03:17:04 | 只看该作者
全局:
感觉按照专题刷题,效率高些!
回复

使用道具 举报

🔗
 楼主| ootsuka 2018-9-20 05:16:25 | 只看该作者
全局:
好的,谢谢建议
回复

使用道具 举报

🔗
vtiaocao 2018-9-20 07:30:59 | 只看该作者
全局:
ootsuka 发表于 2018-9-14 21:06
9/14 Fri
4. Median of Two Sorted Arrays hard
题目要求O(log (m+n)) 那么次题一定是用binary sea ...

能用自己的知识写出4……太强了,赞一个
回复

使用道具 举报

🔗
 楼主| ootsuka 2018-9-20 08:54:38 | 只看该作者
全局:
vtiaocao 发表于 2018-9-20 07:30
能用自己的知识写出4……太强了,赞一个

不是啦,我没那么厉害,看了discussion的
回复

使用道具 举报

🔗
 楼主| ootsuka 2018-9-20 13:01:03 | 只看该作者
全局:
9/19
开始改变做题方法,并不打算一味地做新题和难题,打算在top interview questions中按照章节做题,包括之前做过的题目也重新再做一遍。每天一个topic,并加以总结和分析做题技巧。
【Array & Strings】
3Sum
没有一次bug free因为第一个for loop的结束idx范围写错了,不可以图快想当然!并且一开始非常重要的一步是sort array
5 Longest Palindromic Substring
用maxLen和startIdx作为global var记录即可
334 Increasing Triplet Subsequence
题目大意:求是否在array中找到从左向右a < b < c 的数。只需O(n) 即可。做法:另外找两个变量: small 和medium。小于small则更新small, 小于medium则更新medium,若大于两个数,则存在。一开始需要将small和medium都update成最大integer。这个方法和414找the third maximum number 类似。414中用三个Integer来存三大数字。
163 Missing Ranges
不难。这道题的坑是数字有可能out of bound. 解决方法:用long来存数字。code技巧:为了方便,可以单独写个addRange的helper function就不用多写重复的代码了。
18 4Sum
策略: Array sort后再两个for loop,转换成2Sum的问题,在用2ptrs就可以解决。这道题麻烦在处理细节上:1) 在两次for loop和2ptrs时要记得去重
2)两句话很重要,一个是用来找出不存在的情况 break出去,一个是用来pass掉当前的nums[i]
if(nums[i] + nums[j] + nums[j + 1] + nums[j + 2] > target) break;
if(nums[i] + nums[j] + nums[n - 1] + nums[n - 2] < target) continue;

4Sum2
与4Sum截然不同的做法,次题做法是用HashMap存下前两个sum的值和次数,在后两次sum时就可以知道是否有满足的subsum存在在map中
总结sum题目,主要两种方法:
        • 问是否存在或者问有多少个组合数能让3sum或4sum等于某一个target值时,可以用HashMap来帮助存储subsum的值,方便之后寻找。
        • 但是当return 原数组数值的题目,就不能用map来存,map就没有什么用了,就用传统的for loop将多sum转换成2Sum,中间步骤重要的是去重!
今天做的题太少,惭愧,明天抓紧时间,提高效率!
回复

使用道具 举报

🔗
 楼主| ootsuka 2018-9-21 14:35:07 | 只看该作者
全局:
9/20 Thur
First Missing Positive
和find duplicate number, find missing number 题目的做法是一样的,就是利用number和idx的关系来, 有了num,得到idx = num - 1 然后将它变成负数,最后iterate整个array, 哪一个number没有变成负数,那么它做对应的idx + 1就是丢失的
这道题唯一不同的就是将负数和0变成Integer.max_value就不需要考虑它了。
非常常见的做法:考虑num和idx的对应关系
128. Longest Consecutive Sequence
求在此数组中,能连成sequence的最长长度。在这个数组中,是无序的,并且要求是O(n)的时间,所以不能用double for loop,那么能记录这个数组中都有什么数唯一的方法就是用HashSet来存储。接下来,针对每一个数,分别有左bound和右bound,如果也在set中存在,就继续左--, 右++。另外可以优化的方法是:在每一次找过left 和right后,set来remove该数字,避免之后重复计算
159. Longest Substring with At Most Two Distinct Characters
340. Longest Substring with At Most K Distinct Characters
两道题一摸一样的,除了code中k改成2, sliding window类型题目的一种,O(n)
特别的是这道题的window constrain是看有多少种不同的characters,那么这个的记录只能用map,key是char,value是how many count of that char in the window. 套路:在iterate整个string的for loop中,一开始就要update map, 然后考虑如果window size(即 map.size()) 大于k时该怎么办,将leftmost左端点右移,update map,查看如果map.get(c)== 0时->remove map中的c
76 Minimum window Substring
也是一道window题目,求满足target string最短的window长度。用int array 来hash target string。Iterate right指针。

【LinkedList】
Odd Even Linked List
易错点:
while loop的termination情况,到底是(head != null) 还是(head.next != null)不可以想当然
一般有 slow 和 fast两个指针的时候,while的条件是根据fast来定的ex: while(fast!= null && fast.next != null)

今日收获
Window substring的题目(基本都需要map或者int array来存char的hash结果)
        • 一种constrain是规定了window size = K,那么用hashmap来存所经过的substring里char的情况。Key-value pair中的value不同的题目存的是不同的:有存char出现的index;有存该char出现的次数。在大的for loop中先增加current char,在针对map的size 和K的大小关系来讨论是否要右移left pointer缩小window size
        • 一种是求涵盖target string最短的window size. 可以用一个match var来记录满足与t string一致的char数量。
回复

使用道具 举报

🔗
 楼主| ootsuka 2018-9-21 14:36:56 | 只看该作者
全局:
有学习有投工作才会觉得算过了踏实的一天。不知道能不能达成自己的目标,但相信每天的坚持会让自己离目标更近!
回复

使用道具 举报

🔗
jiang718 2018-9-22 01:06:31 | 只看该作者
全局:
巧呀,我也一样今年五月毕业,在加州,也是全天候刷题投公司。楼主加油!
回复

使用道具 举报

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

本版积分规则

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