LeetCode 全系列速通 (一)

  Рет қаралды 15,348

古城算法

古城算法

Күн бұрын

Пікірлер: 62
@eddiedu3725
@eddiedu3725 2 жыл бұрын
1:05 知识点 - 【本期: binary search (3), 2 pointers (2), Sliding Window (2)】 2:48 Binary Search 定义 5:13 LC First Bad Version 【二分】 7:35 LC 410 Split Array Largest Sum 【二分 - 猜】 19:04 LC 300 Longest Increasing Subsequence 【单序列dp】 23:11 LC 300 Longest Increasing Subsequence 【Intelligently Build a Subsequence + 二分最优】 30:51 双指针 32:34 LC 283 Move Zeroes. 【双指针 - 同向】 40:10 LC 11 Container with most water 【双指针 - 相向】 49:06 LC 16 3Sum Closest 【双指针 - 相向】 57:36 LC 142 Linked List Cycle II 【双指针 - 同向】 1:00:50 Sliding Window 1:03:32 LC 209 Minimum Size Subarray Sum 【Sliding WIndow】【Prefix Sum】 1:09:35 LC 340 Longest Substring with At Most K Distinct Characters【Sliding WIndow】 必做
@Grace0720mcy
@Grace0720mcy 2 жыл бұрын
2:48 Binary Search 定义 5:13 LC 278 经典题 7:35 LC 410 特别难的题可以用二分来猜答案 19:04 LC 300 非常经典 也是单序列dp 23:11 LC 300 解法二 暴力构造解 再用二分优化 30:51 双指针 32:34 LC 283 40:10 LC 11 反向 49:06 LC 16 3Sum closest 详见n sum系列 57:36 LC 142 快慢指针找环 1:00:50 Sliding window 非常常考 1:03:32 LC 209 Fixed size window 1:09:35 LC 340 面试超常见 非常经典 必做题
@klayyou2
@klayyou2 2 жыл бұрын
49:06 LC 16 3Sum closest 有個優化空間, 如果最大的兩個值和nums[i]之和小於target, 可以直接移動到下一個i,不用進while, 等於的話直接把和返回, python版本要加這個優化才會AC
@chankwongyin7455
@chankwongyin7455 2 жыл бұрын
fuxk,這麼好的channel怎麼現在我才發現??
@古城算法
@古城算法 2 жыл бұрын
hahaha, 谢谢支持呀~
@chankwongyin7455
@chankwongyin7455 2 жыл бұрын
@@古城算法 請問你的playlist有沒有建議的順序去看?
@古城算法
@古城算法 2 жыл бұрын
@@chankwongyin7455 可以直接从全速通开始看,那部分不理解再看详解的基础算法
@frederickbarbarossa2746
@frederickbarbarossa2746 Жыл бұрын
平价一下 4:50 的第二个板子 两种情况 第一种情况 target在nums之中 返回最后的mid作为其在nums中的index;第二种情况 target不在nums中 返回最后的start=end作为target应该插入位置的index(注意这个情况下mid不应返回 而应该返回 start=end)
@yezhouchen9710
@yezhouchen9710 Жыл бұрын
在340的follow up当中,有个问题请教下哦。1.没有办法定位left index的原因是 被硬盘删掉了? 2. 有关于更新的j 可否直接写成map.get(map.keySet().iterator().next().next()) 我理解是一样的就是删除掉的char c的下一个节点的index ?非常感谢楼主
@古城算法
@古城算法 Жыл бұрын
因为没有办法把所有array放入memory, 就导致了传统做法的第14行left++,无法找到这个index对应的value,因为memory已经丢失了前一部分的array, 只能放入subarray的信息,也无法再回去找效率太低太低了。 不可以的,这个算法找的是删除掉的character的index的下一位,不是unique character插入的下一位。本身map里面保存的是unique character的插入顺序,不一定是连续的,比如(a, 0) -> (b, 1) -> (c, 2) 又插入了b就变成了 (a, 0) -> (c, 2) -> (b, 3), 这里a的next本来应该是index=1是正确答案,但是如果你做next().next()就变成了index = 2 (c), 变成了错误答案。
@frederickbarbarossa2746
@frederickbarbarossa2746 Жыл бұрын
1:09:09 line19 为什么 i从1开始 j从nums length开始?
@古城算法
@古城算法 Жыл бұрын
抱歉最近小忙,没有办法关注这边的很多回复。
@frederickbarbarossa2746
@frederickbarbarossa2746 Жыл бұрын
@@古城算法 我其实写这些问题也是给自己刷题做一个note 将来回看知道自己思考了什么
@古城算法
@古城算法 Жыл бұрын
@@frederickbarbarossa2746 给你点赞👍
@claudiasun4758
@claudiasun4758 2 жыл бұрын
古城 你是我的神 面试急救大法 最后那个stream以前snap onsite原题 厉害
@古城算法
@古城算法 2 жыл бұрын
太棒了,加油加油!
@siyang8458
@siyang8458 2 жыл бұрын
非常感谢这个总结视频!希望60道串讲的视频能在今年31号前都上传~ 也希望能尽快来一节two pointers的总结!城主辛苦啦!圣诞和新年快乐!
@古城算法
@古城算法 2 жыл бұрын
必须的,全系列速通(二)的ppt已经做好了
@siyang8458
@siyang8458 2 жыл бұрын
@@古城算法 城主太良心了!谢谢🙏
@古城算法
@古城算法 2 жыл бұрын
@@siyang8458 感谢支持!
@wjjnova
@wjjnova 2 жыл бұрын
@@古城算法 您讲的太好了,请问ppt提供下载吗?
@古城算法
@古城算法 2 жыл бұрын
@@wjjnova 当然drive.google.com/drive/u/0/folders/17I-0mEeaY8X5j7RRMh0x_a2zNLu7jafq
@thetop5of
@thetop5of 2 жыл бұрын
大赞城主!想问一下,有没有全系列速通60题的leetcode题号?谢过城主!
@古城算法
@古城算法 2 жыл бұрын
@@jinqin4879 抱歉暂时没有呢,只是在ppt里面有
@frederickbarbarossa2746
@frederickbarbarossa2746 Жыл бұрын
6:35 三个解法没有完全按照模版来 比如第二个模版 line26 start = 1 end = n 则end - start = n - 1 而在前边的第二个模版里边 start = 0, end = len 则 end - start = len =n 还有个问题就是 在line30 return left 如何证明最后一次的left就是first bad?
@minigoldendoodle
@minigoldendoodle 2 жыл бұрын
可否给一个60题的leetcode编号列表?谢谢啦
@古城算法
@古城算法 2 жыл бұрын
好的,以后安排起来~
@frederickbarbarossa2746
@frederickbarbarossa2746 Жыл бұрын
22:52 line15可否删掉 而在函数返回dp[nums.length -1]?
@古城算法
@古城算法 Жыл бұрын
这个问题你可以自己跑一下代码就知道能不能行了。
@yezhouchen9710
@yezhouchen9710 Жыл бұрын
在142中有个问题想要请教楼主哦 为什么142中判空的while写法 不能写成 while(fast != null && slow != null)呢
@古城算法
@古城算法 Жыл бұрын
因为fast比slow快,fast会先跳到结尾如果没有环。所以不需要考虑slow之需要考虑fast,而fast本身一次走2步,只判断当前就会出现fast.next = null, fast.next.next = null.next, 就出现了npe
@huiliu2803
@huiliu2803 Жыл бұрын
142 肯定不对.. c = a? a可以无限长. 可以随笔画个例子
@古城算法
@古城算法 Жыл бұрын
说的对,标准版应该是C + N * Loop = A 这里代码不需改变是因为第二次快慢指针同速度的时候,慢指针会在loop里面再慢慢转圈等快指针到来,这里的图只是给了一个简单例子。 应该考虑到快指针会转圈跑 N * loop才会等到慢指针来loop
@yanyan1022
@yanyan1022 2 жыл бұрын
不好意思又来打扰你。 278第一个模板返回left,是不是因为while(left
@古城算法
@古城算法 2 жыл бұрын
最后的跳出条件是左右指针交换位置,如果不确定的话可以加一个extra variable来标记最后一次valid position, 最后直接return这个extra varaible就可以了。
@yanyan1022
@yanyan1022 2 жыл бұрын
@@古城算法 谢谢回复!
@NextGlobalization
@NextGlobalization 2 жыл бұрын
@@古城算法 城主,我想follow下这个问题。我有时候看到while(left < right) 有时候是while(left
@thetop5of
@thetop5of 2 жыл бұрын
@古城算法,请问全系列速通系列的PPT中,好像还少了动态规划9题的PPT,不知道之后会补上吗?多谢!
@古城算法
@古城算法 2 жыл бұрын
动态规划还没有做,因为考到的概率比较低,大概会在OOD, BQ之后再做吧
@choliu1918
@choliu1918 2 жыл бұрын
请问一下209题,用二分法猜答案,如果input是[2,14] target = 15 的话好像就不对了呢
@古城算法
@古城算法 2 жыл бұрын
我跑了一下对的呢呀,请问你是哪里不可以呢? //O(nlong) public int minSubArrayLen(int s, int[] nums) { int i = 1, j = nums.length, res = 0; while (i = 0) sum -= nums[i - size]; if (sum >= s) return true; } return false; }
@choliu1918
@choliu1918 2 жыл бұрын
@@古城算法 我用的是Python写的,是不是语言的关系呀? input是[2,14] left = 1, right = 1 然后第一次while loop进去到二分法的那个function, 在for loop的时候,第一次sum 是2(i=0) 然后第二个sum是16(i=2),这个时候因为i-size = 0 所以sum-nums[1-1] sum就变成了14,所以二分法function return False. 那么 Left = mid + 1 变成了2, 所以while loop就跳出来了,这样的话res就还是0。 我把我得代码贴在下面 class Solution: def minSubArrayLen(self, s: int, nums: List[int]) -> int: n = len(nums) l,r = 1, n-1 res = 0 def helper(size,nums,s): cur_sum = 0 for i in range(len(nums)): cur_sum += nums[i] if i - size >=0: cur_sum -=nums[i-size] if cur_sum >= s: return True return False while l
@klayyou2
@klayyou2 2 жыл бұрын
@@choliu1918 因為你的二分搜索使用閉區間, 初始範圍應該是[1, len(nums)] 不是[1, len(nums)-1], 因為len(nums)有可能是答案, 改完就AC了
@caterpillar3991
@caterpillar3991 2 жыл бұрын
4:37 binary search 模板二,end的初始值是不是不应该取len呀‘
@古城算法
@古城算法 2 жыл бұрын
应该是n哦 right 指针一开始的定义是在数组下标范围外的,[left, right),所以在需要移动 right 指针的时候不能写成 right = mid - 1。这样会遗漏掉一些下标的判断。
@shimaozheng4524
@shimaozheng4524 2 жыл бұрын
340的follow up不能用TreeMap或者一般的HashMap吧?用LinkedHashMap你是想每次都remove最老的character。
@shimaozheng4524
@shimaozheng4524 2 жыл бұрын
哦用TreeMap的时候是用index作为key,那其实没有必要这样,LinkedHashMap已经做了同样的事,还不用去sort。
@huiliu2803
@huiliu2803 Жыл бұрын
300 好像不对?
@古城算法
@古城算法 Жыл бұрын
请问是哪里不对了?某一个解法吗?
@Flora7489
@Flora7489 Жыл бұрын
@@古城算法 他意思是暴力那个解法, 总感觉这个方法有点像贪心。 就像你举得例子,再举个例子 比如:5,1,2,7,10,3,2,11. 当跑到10的时候解里面存的是1,2,7,10这个时候进来个3,然后解就变成了1,2,3,10. 这个解确实应该能保证最后的长度是对的,但是其实这个解的答案是错的。就像你下面也写了,就不是特别喜欢这种解法,因为最后算给出的具体答案是错的,但是长度是对的。
@aaronhu850
@aaronhu850 2 жыл бұрын
非常感谢!!!!
@tonygai9181
@tonygai9181 2 жыл бұрын
狠狠地爱住了!
@古城算法
@古城算法 2 жыл бұрын
爱了爱了哈哈哈
@watery000
@watery000 2 жыл бұрын
经典!
@kaching9606
@kaching9606 2 жыл бұрын
mark一下,30:51 双指针
@kaching9606
@kaching9606 2 жыл бұрын
1:00:51 滑动窗口
@tonygai9181
@tonygai9181 2 жыл бұрын
爱了
@Angel-bw2lb
@Angel-bw2lb 2 жыл бұрын
今天的视频有一点模糊
@古城算法
@古城算法 2 жыл бұрын
对的,录制的时候忘记把zoom的用户列表关闭了,结果录制出来了1080p,不知道bilibili那边会不会清晰一些
@古城算法
@古城算法 2 жыл бұрын
哦,我看了一下后台,更高清的还在procesing中,最后有4k
@fer-ic1wh
@fer-ic1wh 2 жыл бұрын
@@古城算法 看了评论才知道可以选4k 赞👍
@古城算法
@古城算法 2 жыл бұрын
@@fer-ic1wh 赞也 ~~
LeetCode 全系列速通(二)
2:01:00
古城算法
Рет қаралды 6 М.
Молодой боец приземлил легенду!
01:02
МИНУС БАЛЛ
Рет қаралды 1,9 МЛН
Hoodie gets wicked makeover! 😲
00:47
Justin Flom
Рет қаралды 133 МЛН
快乐总是短暂的!😂 #搞笑夫妻 #爱美食爱生活 #搞笑达人
00:14
朱大帅and依美姐
Рет қаралды 12 МЛН
比特幣9萬還可以買嗎?
12:41
HackBear 泰瑞
Рет қаралды 85 М.
LeetCode 全系列速通 (五)
1:36:09
古城算法
Рет қаралды 3,1 М.
Blind 75 (Grind 75) -- Week1: Arrays
1:18:59
古城算法
Рет қаралды 3,1 М.
Complete Dynamic Programming Practice - Noob to Expert | Topic Stream 1
3:50:43
嘉宾分享(三) 奔涌的后浪老王 MLE 多个offer
2:28:23
古城算法
Рет қаралды 1 М.
Sliding Window Technique - Algorithmic Mental Models
36:45
Ryan Schachte
Рет қаралды 362 М.
Молодой боец приземлил легенду!
01:02
МИНУС БАЛЛ
Рет қаралды 1,9 МЛН