ขนาดวิดีโอ: 1280 X 720853 X 480640 X 360
แสดงแผงควบคุมโปรแกรมเล่น
เล่นอัตโนมัติ
เล่นใหม่
真是谢谢一姐了,看了那么多视频,就你把我讲懂了....
赞一个!讲的很清楚,可以从3:10开始进入binary search的正题
其他人的视频都没听懂,就你的听懂了。。。。老师你还收学生么
把短的数组放在前面(分割的数组为短的数组),不是因为时间复杂度更低,而是因为把长的数组放在前面(分割长的数组)会导致运行出错。比如说现在有两个数组,短数组有1个元素,长数组有5个元素,如果分割长数组,有可能在分割的过程中,长数组的左边只有一个元素,这时候需要短的那个数组有两个元素,才能分割成功,但是显然短的数组只有1个元素,所以这是不可能的,短数组那边计算的index就会超出短数组的长度,这时候就会报错。反之如果分割短数组,可以保证可以在长数组那边找到足够多的数字补充左边的总数,计算出的index永远都在数组范围内。
謝謝 你講得最清楚! 困擾我好久的題目終於懂了
这讲得太清楚了。没二话,先关注为敬。
也蠻想聽聽一姊講300. Longest Increasing Subsequence題型,解O(N*logN),用binary search的解法去講,因為我看youtuber上跟leetcode的官方solution在display example時,都沒有這麼可視化,如果方便,想聽看看這題。
“找对了,耶!”一姐好可爱
Dhebbsu jidu naba daba ganu jinu rabu deebu Thanu dhan nirankar
其实如果cutB = len/2 - cutA,然后如果为基数就直接return min(r1, r2); 这样貌似更好理解一些
说的对。
老哥说得对,那个(len + 1) / 2 - cutA确实有点纠结
nb
我的理解是一姐的解法是一定要写cutB = (len + 1) / 2 - cutA 的。因为有一个设定,1. 如果两个数组的总长度是偶数,当cut A后,计算得到的cutB一定是让所有左边的个数等于所有右边的个数。2. 如果两个数组的总长度是奇数,当cut A后,计算得到的cutB一定是让所有左边的个数比所有右边的个数多1个。因此,当总长是奇数的时候,才能return Math.max(l1, l2), 返回的就是多出来的这1个数,也就是中位数。
[1,3][2,4,5]比如这个例子,总长度len是5,如果cutA = 1, 那么cutB = len / 2 - cutA = 2 - 1 = 1. 这样左边[1,2], 右边[3,4,5], median就成2了。 如果cutB = (len+1) / 2 - cutA = 2. 这样左边[1,2,3], 右边[4,5], median是3。 如果总长是偶数,是否加1,结果都是对的。
I don't quite understand the part of A_endK = cutA-1 and A_startK=cutA+1. Can someone help with it??
好老师😄😄
7分23秒一看秒懂, 谢谢一姐
讲得不错,但是第一种方法叫mergesort比较欠妥, mergesort是一个专有名词专指对一个数组进行排序,这个只是merge two sorted array
一姐你好,有一部分没懂。8:43 讲到A_startK 和 A_endK 是维护二分搜索的范围,我理解A_startK, A_endK这里就是在A数组做二分搜索时的左右边界。10:08:else if (L2 > R1) {A_startK = cutA + 1;} 反复听了很多遍,也没懂为什么 A_startK = cutA + 1。首先cutA记录的是A数组分割后数字偏小部分数组的长度,A_startK = cutA + 1,将A数组的二分搜索的左边界右移到cutA + 1位,为什么?然后下一轮循环,cutA = (A_endK + A_startK) / 2, 这步计算在常规二分搜索算法里是求中位坐标,在这道题里又该如何理解呢? 希望这里可以再讲的细致一些。
谢谢 ,讲的很清楚!已经多关注了你的频道
请问一姐做图的软件是什么呀
看过其他答案,总感觉理解不透彻。你这个cut的定义很精确,理解起来就很清晰了。
想你以前应该是教书的,优秀教师,三八红旗手一类的
deng pao 哈哈哈哈哈哈😂
讲的挺好的 比其他的清楚很多
很清楚!谢谢一姐!
按照你这个例子,第一次跑的时候cutB应该= (14 + 1)/2 - 2 = 5 而不是 6
一姐讲解的非常厉害,能把代码的link也放在description里就好了
因為有點趕,還沒全看,但如果可以對短 array 做 O(log m) 的動作,但每次亦要在長 array 做 O(log n) 動作,那不是會 O(log m) x O(log n) ?
What if you have more than two sorted arrays
谢谢一姐!很容易听明白
聪明!
谢谢一姐🙂
讲得很清楚啊,看了那么多个视频终于搞懂了。 BTW, 你的声音好像赵小棠。
请问您用什么软件画的动画 ?
Yumin Dev 最普通的google slide
讲的通俗易懂
最开始cutB 图向右多画了一格, 蓝色到9 就结束, 不过这是看过讲的最清楚的一版
讲的挺好的,不过11:00处有个小错误,当时A应该只贡献了3个元素 (2 + 5) / 2 = 3
如果要求O(n)= log(m+n) 呢?
requirement said "The overall run time complexity should be O(log (m+n))."
len+1那里没理解
盯着看了一个小时,终于有点理解了,貌似是如果总长度是奇数就把中位数包到分割线左边?
@@tracy_gao len其实也可以,你自己在纸上画一下,你选择len的话就意味着最后取中位数的时候就得把奇数和偶数的取值方式 交换了
This is a brute force approach, it is O(m+n) time but not O(log(m+n)).
This is binary search!
花了一个半小时, 才弄明白为啥要这样做。这个题目可真难。 不知道一姐是怎么想到的
有些公司是,你沒 O(log (m+n)) 就馬上不請,這是多麼的公平呀。面試變成了 "答案知道" 審核
就冲这个名字,subscribe 一波
You, only you, 让我明白了
老师,你还收学生吗
讲的可太清晰了
Inthatha thinuku daba
666
not the best solution I'm looking for
Binary search is the optimized solution.
真是谢谢一姐了,看了那么多视频,就你把我讲懂了....
赞一个!讲的很清楚,可以从3:10开始进入binary search的正题
其他人的视频都没听懂,就你的听懂了。。。。老师你还收学生么
把短的数组放在前面(分割的数组为短的数组),不是因为时间复杂度更低,而是因为把长的数组放在前面(分割长的数组)会导致运行出错。比如说现在有两个数组,短数组有1个元素,长数组有5个元素,如果分割长数组,有可能在分割的过程中,长数组的左边只有一个元素,这时候需要短的那个数组有两个元素,才能分割成功,但是显然短的数组只有1个元素,所以这是不可能的,短数组那边计算的index就会超出短数组的长度,这时候就会报错。反之如果分割短数组,可以保证可以在长数组那边找到足够多的数字补充左边的总数,计算出的index永远都在数组范围内。
謝謝 你講得最清楚! 困擾我好久的題目終於懂了
这讲得太清楚了。没二话,先关注为敬。
也蠻想聽聽一姊講300. Longest Increasing Subsequence題型,解O(N*logN),用binary search的解法去講,因為我看youtuber上跟leetcode的官方solution在display example時,都沒有這麼可視化,如果方便,想聽看看這題。
“找对了,耶!”一姐好可爱
Dhebbsu jidu naba daba ganu jinu rabu deebu Thanu dhan nirankar
其实如果cutB = len/2 - cutA,然后如果为基数就直接return min(r1, r2); 这样貌似更好理解一些
说的对。
老哥说得对,那个(len + 1) / 2 - cutA确实有点纠结
nb
我的理解是一姐的解法是一定要写cutB = (len + 1) / 2 - cutA 的。因为有一个设定,1. 如果两个数组的总长度是偶数,当cut A后,计算得到的cutB一定是让所有左边的个数等于所有右边的个数。2. 如果两个数组的总长度是奇数,当cut A后,计算得到的cutB一定是让所有左边的个数比所有右边的个数多1个。因此,当总长是奇数的时候,才能return Math.max(l1, l2), 返回的就是多出来的这1个数,也就是中位数。
[1,3]
[2,4,5]
比如这个例子,总长度len是5,如果cutA = 1, 那么cutB = len / 2 - cutA = 2 - 1 = 1. 这样左边[1,2], 右边[3,4,5], median就成2了。 如果cutB = (len+1) / 2 - cutA = 2. 这样左边[1,2,3], 右边[4,5], median是3。 如果总长是偶数,是否加1,结果都是对的。
I don't quite understand the part of A_endK = cutA-1 and A_startK=cutA+1. Can someone help with it??
好老师😄😄
7分23秒一看秒懂, 谢谢一姐
讲得不错,但是第一种方法叫mergesort比较欠妥, mergesort是一个专有名词专指对一个数组进行排序,这个只是merge two sorted array
一姐你好,有一部分没懂。8:43 讲到A_startK 和 A_endK 是维护二分搜索的范围,我理解A_startK, A_endK这里就是在A数组做二分搜索时的左右边界。10:08:else if (L2 > R1) {A_startK = cutA + 1;} 反复听了很多遍,也没懂为什么 A_startK = cutA + 1。首先cutA记录的是A数组分割后数字偏小部分数组的长度,A_startK = cutA + 1,将A数组的二分搜索的左边界右移到cutA + 1位,为什么?然后下一轮循环,cutA = (A_endK + A_startK) / 2, 这步计算在常规二分搜索算法里是求中位坐标,在这道题里又该如何理解呢? 希望这里可以再讲的细致一些。
谢谢 ,讲的很清楚!已经多关注了你的频道
请问一姐做图的软件是什么呀
看过其他答案,总感觉理解不透彻。你这个cut的定义很精确,理解起来就很清晰了。
想你以前应该是教书的,优秀教师,三八红旗手一类的
deng pao 哈哈哈哈哈哈😂
讲的挺好的 比其他的清楚很多
很清楚!谢谢一姐!
按照你这个例子,第一次跑的时候cutB应该= (14 + 1)/2 - 2 = 5 而不是 6
一姐讲解的非常厉害,能把代码的link也放在description里就好了
因為有點趕,還沒全看,但如果可以對短 array 做 O(log m) 的動作,但每次亦要在長 array 做 O(log n) 動作,那不是會 O(log m) x O(log n) ?
What if you have more than two sorted arrays
谢谢一姐!很容易听明白
聪明!
谢谢一姐🙂
讲得很清楚啊,看了那么多个视频终于搞懂了。 BTW, 你的声音好像赵小棠。
请问您用什么软件画的动画 ?
Yumin Dev 最普通的google slide
讲的通俗易懂
最开始cutB 图向右多画了一格, 蓝色到9 就结束, 不过这是看过讲的最清楚的一版
讲的挺好的,不过11:00处有个小错误,当时A应该只贡献了3个元素 (2 + 5) / 2 = 3
如果要求O(n)= log(m+n) 呢?
requirement said "The overall run time complexity should be O(log (m+n))."
len+1那里没理解
盯着看了一个小时,终于有点理解了,貌似是如果总长度是奇数就把中位数包到分割线左边?
@@tracy_gao len其实也可以,你自己在纸上画一下,你选择len的话就意味着最后取中位数的时候就得把奇数和偶数的取值方式 交换了
This is a brute force approach, it is O(m+n) time but not O(log(m+n)).
This is binary search!
花了一个半小时, 才弄明白为啥要这样做。这个题目可真难。 不知道一姐是怎么想到的
有些公司是,你沒 O(log (m+n)) 就馬上不請,這是多麼的公平呀。面試變成了 "答案知道" 審核
就冲这个名字,subscribe 一波
You, only you, 让我明白了
老师,你还收学生吗
讲的可太清晰了
Inthatha thinuku daba
666
not the best solution I'm looking for
Binary search is the optimized solution.