首页 > 其他分享 >二分法 左闭右闭 左开右闭 的区别

二分法 左闭右闭 左开右闭 的区别

时间:2022-10-24 23:37:30浏览次数:46  
标签:左开 right target nums 二分法 middle 右闭 left

const res = search([1, 2, 3, 4, 534, 34, 2], 34)
console.log(res)

function search(nums: number[], target: number): number | void {
  // [left,right] : 左闭右闭的情况
  let left = 0
  let right = nums.length - 1 // 因为是右闭,所以right = nums.length-1
  while (left <= right) { // 这里是<=,比如说[1,1]
    let middle = (left + right) / 2
    // 首先通过前面的 nums[middle]>target , 我们已经判断这个middle不是了,所以就是right=middle-1 ,
    // 试想,如果right=middle,加上我们是左闭右闭,所以在接下来的循环中我们其实多把middle计算了
    if (nums[middle] > target) right = middle - 1
    else if (nums[middle] < target) left = middle + 1
    else return middle
  }
  return
}

console.log('----------------------------------')
const res2 = search([1, 2, 3, 4, 534, 34, 2], 34)
console.log(res2)
function search2(nums: number[], target: number): number | void {
  // [left,right) : 左闭右开的情况
  let left = 0
  let right = nums.length // 因为是右开,所以right = nums.length
  while (left < right) { //这里就不能填写 <=,很明显[1,1),就是不合理的逻辑
    let middle = (left + right) / 2
    // 因为是左必右开,所以我们的左边实际上是不会算在里面的,所以right=middle,这个middle是不会算在里面的.
    // 而如果right=middle-1,然后这个middle-1,则会被漏掉,因此,right=middle,这和上面的左闭右闭情况有区分
    if (nums[middle] > target) right = middle
    else if (nums[middle] < target) left = middle + 1
    else return middle
  }
  return
}

标签:左开,right,target,nums,二分法,middle,右闭,left
From: https://www.cnblogs.com/zhuoss/p/16823454.html

相关文章

  • 886. 可能的二分法 : 判定二分图模板题
    题目描述这是LeetCode上的886.可能的二分法,难度为中等。Tag:「二分图」、「染色法」、「并查集」、「DFS」给定一组 ​​n​​​ 人(编号为 ​​1,2,...,n​​......
  • LeetCode 886. 可能的二分法
    二分法模板题,每日打卡10.16classSolution{public:vector<vector<int>>g;vector<int>color;booldfs(intu,intc){color[u]=c;......
  • 算法之二分法
    目录算法简介之二分法(需要写的出来)一、简介二、什么是算法三、二分法算法简介之二分法(需要写的出来)一、简介关于算法我们只需要稍微了解一下就可以了,对于算法,刚入行的......
  • 可能的二分法
    题目给定一组 n 人(编号为 1,2,...,n), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。给定整数n 和数组dislikes ,其中 ......
  • 二分法/三元表达式
    算法简介1.什么是算法?算法就是帮助我们解决问题的有效方法,例如我们自己想去哪里,我们的脑子就自动开始思考,路程怎么样,先去哪里再去哪里,这就是我们人脑的计算。2.实际算法......
  • 二分法及常见内置函数(部分)
    昨日内容回顾多层语法糖的顺序语法糖多层使用时,从被装饰的函数开始由下而上读取,由上而下执行。有参装饰器有参装饰器可以为装饰器提供额外的参数。defwrapper(pa......
  • 匿名函数,二分法,三元表达示
    算法简介及二分法1.什么是算法 算法就是解决问题的有效方法不是所有算法都很高效也有不合格的算法2.算法应用场景 推荐算法:比如抖音成像算法:AI相关几乎覆......
  • 二分法
    目录今日内容回顾今日内容详解算法简介及二分法三元表达式各种生成式匿名函数常见内置函数今日内容回顾算法简介及二分法三元表达式各种生成式匿名函数常见内置函数......
  • 二分法、三元表达式及匿名函数
    二分法、三元表达式及匿名函数目录二分法、三元表达式及匿名函数一、算法简介及二分法二、三元表达式三、各种生成式1.列表生成式2.字典生成式3.集合生成式4.元组四、匿名......
  • 算法、二分法、函数
    目录算法简介及二分法三元表达式各种生成式/表达式/推导式匿名函数内置函数作业算法简介及二分法1.什么是算法算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解......