Размер видео: 1280 X 720853 X 480640 X 360
Показать панель управления
Автовоспроизведение
Автоповтор
真的牛! 之前都是每做一道二分法就得记他的特殊处理方式,但这个模板是真的适用所有问题而且通俗易懂!受教了!!
讲得太好啦 实际处理中希望能把m换乘L+(R-L)/2 这样可以避免overflow👍👍👍
對 雖然overflow不常遇到 但我平常都直接這樣寫以免忘記
太强了, 看别的讲解, 好多都是炫技, 写的很难懂, 但大佬这个非常好理解, 也更加泛用.
太厉害了,把二分查找法讲明白了,整个原理的解惑也做的特别好!
This is the best binary search tutorial I've seen! Thanks a lot!
This explanation is so clear and very helpful for special types of binary search problems like LC 275
这个真的是我看到讲的最好的视频!
好棒啊。终于找到一个能把二分法说得这么直观易懂通用。
讲的非常清楚。蓝红区域划分的思路很好
这么优质的频道才一百多个关注。
不用这么复杂, 只要记住每次改变left 或者right,不要把target踢掉。 while循环体内比较的时候,考虑所有情况,如果mid是left + (right - left)/2, 那mid会偏左,所以right是可以写成。right = mid,而不用加1的,也不回导致死循环。
你这个方法的最大问题是,返回值不清晰。
其实是向下取整的时候 left 必须= mid - 1 才不会导致死循环
讲的太好了!困扰了很久的二分查找终于解决了。
讲的也太好了吧!!!!,建议翻译成英文版本供全球程序员学习
这个讲的是真好!以前根本不在意l r 的意义 只为了找到值 所以最后会不知道蓝和红的边界
最好的binary search讲解之一 感谢
Super super! I finally can write binary search correctly! Millions of thanks! Can you share more videos about algorithms?
视频好棒,感谢!一个小小建议:感觉背景音乐有一点吵。这么优质的视频其实没必要加背景音乐的哈哈,只有人声讲解就已经很棒了
兄弟可以多出一点可视化视频,赞
讲得好好!!btw我感觉我在听男生版眉姐姐讲二分查找,体验满分!!
这个模版对isBlue()函数中如果存在需要依赖l, r 的值做判断的话是不是会非常麻烦,因为l, r的index有可能不在[0, n) 比如leetcode 33题
or 540. Single Element in a Sorted Array ?? K 的index 是在[1, n - 1) 之间,但是 l 和 r 的取值还是 -1 and n
完全可以啊~ 可以仔细想想
两次bs,第一找蓝色sorted,红色也sorted,第二次就常规搜target。这模版真的好用,感谢up主😘
@@xiaoxiyu8752 woc 我就一直卡在33题不知道怎么用这个方法看了你的回答豁然开朗 感谢!
可以利用nums[-1](或者nums[0])判断,不需要依赖l, r的值
可以算出 因为我不会写代码 但是你讲的二分法有一种两边逼近的作用 先从1.0到2.0 找到 比1.4大 比1.5小 然后再从1.40到1.5中找 找打一个数 每次都从比他大的后以为继续下一位的逼近
深度讲解👍
终于明白了😂😂😂谢谢大哥!!就是配音还有音乐 比较干扰,还是麻烦自己说,不要背景音乐
感觉配乐应该没啥大问题。
我倒覺得音樂好聽XD
大神啊, 希望能多出一些视频解救一下!!! 终于明白了!!!
厉害,大神
请求更新更多!
講得真好
到目前为止 没看过任何一个讲的清楚的二分视频 没有任何人 把初始化left&right, 开闭区间,退出条件(left < right, left + 1 < right, left
真的强
思路不错
這題是不是無法用在33題?感覺比較像通用於普通Binary search
講得太好了 刷題快被搞瘋了
Genius!!!🥳💖
请问l+1!=r 为什么不等价于l< r
这个和LC中常用的二分模板还是非常不一样的
给力!
真的牛逼
治好了我多年的心病
这个模板可以让我的模板精简很多
厉害
仙品,up 早日年入千万
困扰我多年的问题。。
我也写了这个模板也可以 (轻微改动):class Solution: def search(self, nums: List[int], target: int) -> int: left = -1 right = len(nums) while left + 1 != right: mid = left + (right - left) // 2 if nums[mid] == target: return mid if nums[mid] < target: left = mid else: right = mid return -1
学会了,牛逼啊
這也講得太好了吧
这个模版在实际题目中几乎没有用处 应用条件很苛刻 target 不存在 empty list 完全处理不了
牛逼
Leetcode 33题用这个就卡住了.. 不太会了. 请教如何能更好的使用这个在33题, 感谢
我也是这道题模板感觉都不好套上去,一脸懵逼,答案基本都用
用视频讲解的方法完全可以~ 昨晚亲测
leetcode 793 , input 1000000000 ?
这讲的跟灵茶山不一样啊 你没灰色区域么? 就一直都是蓝色 和 红色? 没有走完循环 你是不知道left & right 之间的数字跟target什么关系的。你不能用走完的蓝红区域来讲解啊 😂 你之所以可以 left = mid & right = mid 是因为1. 你left right初试的方法导致 是左开右开的区间 2. 你的退出条件是l + 1 < r 不会造成死循环,所以你可以更新到mid 而不需要 mid+1 or mid-1
👍
540. Single Element in a Sorted Array 我不知道怎么用? 请帮忙
我也是540看到这个视频的,我个人感觉这个模板不适用于540...
@@jerrynie6242 可以的。我看完了视频以后写的,可以交流一下: class Solution { public int singleNonDuplicate(int[] nums) { int lo = -1, hi = nums.length; while(lo + 1 != hi) { int mid = lo + (hi - lo)/2; int curnum = nums[mid]; if(mid > 0 && nums[mid - 1] == curnum) { mid = mid - 1; } if(mid == nums.length - 1 || nums[mid + 1] != curnum) return curnum; if(mid % 2 == 0) { // we always want to move lo pointer to the second number within the pair lo = mid + 1; } else { hi = mid; } } return nums[hi]; }}
这个是我写的,感觉还是可以适用class Solution { public int singleNonDuplicate(int[] nums) { int l = -1; int r = nums.length; int mid = l + (r - l)/2; while ( l + 1 < r) { mid = l + (r - l)/2; if(isValid(nums, mid) ) { l = mid; } else { r = mid; } } return nums[r];} private boolean isValid(int[] nums, int mid) { if ((mid + 1) >= 0 && (mid + 1) < nums.length) { // odd if ((mid + 1) % 2 == 1) { if (nums[mid] == nums[mid+1]) { return true; } else { return false; } } // even else { if (nums[mid] == nums[mid+1]) { return false; } else { return true; } } } return false; }}
@@oliverli8482 都是大佬
背景音乐太难听了
BGM 太吵了
感觉帮助不大。动画很精彩呀,加油。
时隔9个月又来重温,感觉真的是很厉害的方法,帮助很大。但是上面的解答有个很严重的问题是,如果我要求“数字在升序数组中出现的次数”,也就是例如“123444456789”中4的个数,是需要写两个方法的,一个求升序数组中第一个4所在的下标,另一个求升序数组中最后一个4所在的下标。目前的很多解答都是用一个函数就解决了,但是您的方法却需要写两个函数。
又看了一天,本质上红蓝的划分是“循环不变量”的图形体现,真的非常精彩。另外“数字在升序数组中出现的次数”确实写两个函数比较直观一些。
一年后我又回来了。可能我确实不太适合学算法。哈哈,遇到二分还是写的很困难。
加油呀 别灰心 一定可以的 继续努力坚持 @@chaofengchen5862
@@chaofengchen5862 加油 兄弟 !
真的牛! 之前都是每做一道二分法就得记他的特殊处理方式,但这个模板是真的适用所有问题而且通俗易懂!受教了!!
讲得太好啦 实际处理中希望能把m换乘L+(R-L)/2 这样可以避免overflow👍👍👍
對 雖然overflow不常遇到 但我平常都直接這樣寫以免忘記
太强了, 看别的讲解, 好多都是炫技, 写的很难懂, 但大佬这个非常好理解, 也更加泛用.
太厉害了,把二分查找法讲明白了,整个原理的解惑也做的特别好!
This is the best binary search tutorial I've seen! Thanks a lot!
This explanation is so clear and very helpful for special types of binary search problems like LC 275
这个真的是我看到讲的最好的视频!
好棒啊。终于找到一个能把二分法说得这么直观易懂通用。
讲的非常清楚。蓝红区域划分的思路很好
这么优质的频道才一百多个关注。
不用这么复杂, 只要记住每次改变left 或者right,不要把target踢掉。 while循环体内比较的时候,考虑所有情况,如果mid是left + (right - left)/2, 那mid会偏左,所以right是可以写成。right = mid,而不用加1的,也不回导致死循环。
你这个方法的最大问题是,返回值不清晰。
你这个方法的最大问题是,返回值不清晰。
其实是向下取整的时候 left 必须= mid - 1 才不会导致死循环
讲的太好了!困扰了很久的二分查找终于解决了。
讲的也太好了吧!!!!,建议翻译成英文版本供全球程序员学习
这个讲的是真好!以前根本不在意l r 的意义 只为了找到值 所以最后会不知道蓝和红的边界
最好的binary search讲解之一 感谢
Super super! I finally can write binary search correctly! Millions of thanks! Can you share more videos about algorithms?
视频好棒,感谢!一个小小建议:感觉背景音乐有一点吵。这么优质的视频其实没必要加背景音乐的哈哈,只有人声讲解就已经很棒了
兄弟可以多出一点可视化视频,赞
讲得好好!!btw我感觉我在听男生版眉姐姐讲二分查找,体验满分!!
这个模版对isBlue()函数中如果存在需要依赖l, r 的值做判断的话是不是会非常麻烦,因为l, r的index有可能不在[0, n) 比如leetcode 33题
or 540. Single Element in a Sorted Array ?? K 的index 是在[1, n - 1) 之间,但是 l 和 r 的取值还是 -1 and n
完全可以啊~ 可以仔细想想
两次bs,第一找蓝色sorted,红色也sorted,第二次就常规搜target。这模版真的好用,感谢up主😘
@@xiaoxiyu8752 woc 我就一直卡在33题不知道怎么用这个方法看了你的回答豁然开朗 感谢!
可以利用nums[-1](或者nums[0])判断,不需要依赖l, r的值
可以算出 因为我不会写代码 但是你讲的二分法有一种两边逼近的作用 先从1.0到2.0 找到 比1.4大 比1.5小 然后再从1.40到1.5中找 找打一个数 每次都从比他大的后以为继续下一位的逼近
深度讲解👍
终于明白了😂😂😂谢谢大哥!!就是配音还有音乐 比较干扰,还是麻烦自己说,不要背景音乐
感觉配乐应该没啥大问题。
我倒覺得音樂好聽XD
大神啊, 希望能多出一些视频解救一下!!! 终于明白了!!!
厉害,大神
请求更新更多!
講得真好
到目前为止 没看过任何一个讲的清楚的二分视频 没有任何人 把初始化left&right, 开闭区间,退出条件(left < right, left + 1 < right, left
真的强
思路不错
這題是不是無法用在33題?感覺比較像通用於普通Binary search
講得太好了 刷題快被搞瘋了
Genius!!!🥳💖
请问l+1!=r 为什么不等价于l< r
这个和LC中常用的二分模板还是非常不一样的
给力!
真的牛逼
治好了我多年的心病
这个模板可以让我的模板精简很多
厉害
仙品,up 早日年入千万
困扰我多年的问题。。
我也写了这个模板也可以 (轻微改动):
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = -1
right = len(nums)
while left + 1 != right:
mid = left + (right - left) // 2
if nums[mid] == target:
return mid
if nums[mid] < target:
left = mid
else:
right = mid
return -1
学会了,牛逼啊
這也講得太好了吧
这个模版在实际题目中几乎没有用处 应用条件很苛刻 target 不存在 empty list 完全处理不了
牛逼
Leetcode 33题用这个就卡住了.. 不太会了. 请教如何能更好的使用这个在33题, 感谢
我也是这道题模板感觉都不好套上去,一脸懵逼,答案基本都用
用视频讲解的方法完全可以~ 昨晚亲测
leetcode 793 , input 1000000000 ?
这讲的跟灵茶山不一样啊 你没灰色区域么? 就一直都是蓝色 和 红色? 没有走完循环 你是不知道left & right 之间的数字跟target什么关系的。你不能用走完的蓝红区域来讲解啊 😂 你之所以可以 left = mid & right = mid 是因为1. 你left right初试的方法导致 是左开右开的区间 2. 你的退出条件是l + 1 < r 不会造成死循环,所以你可以更新到mid 而不需要 mid+1 or mid-1
👍
540. Single Element in a Sorted Array 我不知道怎么用? 请帮忙
我也是540看到这个视频的,我个人感觉这个模板不适用于540...
@@jerrynie6242 可以的。我看完了视频以后写的,可以交流一下:
class Solution {
public int singleNonDuplicate(int[] nums) {
int lo = -1, hi = nums.length;
while(lo + 1 != hi) {
int mid = lo + (hi - lo)/2;
int curnum = nums[mid];
if(mid > 0 && nums[mid - 1] == curnum) {
mid = mid - 1;
}
if(mid == nums.length - 1 || nums[mid + 1] != curnum) return curnum;
if(mid % 2 == 0) {
// we always want to move lo pointer to the second number within the pair
lo = mid + 1;
} else {
hi = mid;
}
}
return nums[hi];
}
}
这个是我写的,感觉还是可以适用
class Solution {
public int singleNonDuplicate(int[] nums) {
int l = -1;
int r = nums.length;
int mid = l + (r - l)/2;
while ( l + 1 < r) {
mid = l + (r - l)/2;
if(isValid(nums, mid) ) {
l = mid;
} else {
r = mid;
}
}
return nums[r];
}
private boolean isValid(int[] nums, int mid) {
if ((mid + 1) >= 0 && (mid + 1) < nums.length) {
// odd
if ((mid + 1) % 2 == 1) {
if (nums[mid] == nums[mid+1]) {
return true;
} else {
return false;
}
}
// even
else {
if (nums[mid] == nums[mid+1]) {
return false;
} else {
return true;
}
}
}
return false;
}
}
@@oliverli8482 都是大佬
背景音乐太难听了
BGM 太吵了
感觉帮助不大。动画很精彩呀,加油。
时隔9个月又来重温,感觉真的是很厉害的方法,帮助很大。但是上面的解答有个很严重的问题是,如果我要求“数字在升序数组中出现的次数”,也就是例如“123444456789”中4的个数,是需要写两个方法的,一个求升序数组中第一个4所在的下标,另一个求升序数组中最后一个4所在的下标。目前的很多解答都是用一个函数就解决了,但是您的方法却需要写两个函数。
又看了一天,本质上红蓝的划分是“循环不变量”的图形体现,真的非常精彩。另外“数字在升序数组中出现的次数”确实写两个函数比较直观一些。
一年后我又回来了。可能我确实不太适合学算法。哈哈,遇到二分还是写的很困难。
加油呀 别灰心 一定可以的 继续努力坚持 @@chaofengchen5862
@@chaofengchen5862 加油 兄弟 !