首页 > 其他分享 >为什么要写成mid=left+(right-left)/2

为什么要写成mid=left+(right-left)/2

时间:2022-09-05 22:12:16浏览次数:91  
标签:200 right mid 写成 溢出 left

我来解释一下,为什么要写成mid=left+(right-left)/2,而不是mid=(left+right)/2。
因为会溢出!!此时的溢出指的是,mid可能会超出该数据类型的最大值
我们假定一个数据类型

uint8           //数据范围0~255
uint8 left,right,mid;

//假定
left = 200;
right = 250;

//则left+right =450 > 255,此时已经溢出了
//0001 1100 0010 因为只能存储8位,实际1100 0010=194
mid = (left+right)/2;  //此时实际mid=194/2

mid = left+(right-left)/2; //200+(250-200)/2 = 225
//此方法绝对不会溢出,最好写成这样

作者:plainchn
链接:https://leetcode.cn/leetbook/read/binary-search/xe5fpe/?discussion=FevRY1

标签:200,right,mid,写成,溢出,left
From: https://www.cnblogs.com/my-blog-site/p/16659781.html

相关文章

  • sql语法:inner join on, left join on, right join on详细使用方法
    sql语法:innerjoinon,leftjoinon,rightjoinon详细使用方法 innerjoin(等值连接)只返回两个表中联结字段相等的行leftjoin(左联接)返回包括左表中的所有......
  • 【The connection to the server localhost:8080 was refused - did you specify the
    问题k8s报错$kubectlgetnodeTheconnectiontotheserverlocalhost:8080wasrefused-didyouspecifytherighthostorport?解决方法将master节点中的/......
  • 在 GCP 中创建具有稳定扩散的您自己的 Midjourney 应用程序
    在GCP中创建具有稳定扩散的您自己的Midjourney应用程序到现在为止,您可能已经在互联网上看到了美丽而逼真的AI生成图像。任何人都可以使用提示生成这些图像,即对想要......
  • Typescript类型体操 - Trim Left
    题目中文实现TrimLeft<T>,它接收确定的字符串类型并返回一个新的字符串,其中新返回的字符串删除了原字符串开头的空白字符串。例如typetrimed=TrimLeft<'HelloWo......
  • 404.sum-of-left-leaves 左叶子之和
    注意判断左叶子的条件classSolution{private:intget_sum(TreeNode*root,intsum){if(root->left!=nullptr&&root->left->left==nullptr&&......
  • 35. SQL--right join:右连接
    1.前言sqlrightjoin和leftjoin是相对的,rightjoin将返回右表(table2)中的所有记录,即使左表(table1)中没有匹配的记录也是如此。当左表中没有匹配的记录时,rightjoin仍......
  • 查询文件的版本号Copyright信息
    查询文件的版本号Copyright信息目前找到的实用的方法有两种,一种是cmd中利用wmic的库,一种是C#中的GetVersionInfo()方法。CMD中获取:获取单个文件:遍历某文件夹下所有文......
  • 【Traefik二次开发】中间件 Middleware 开发
    本篇只讨论HTTP中间件中间件定义https://doc.traefik.io/traefik/middlewares/overview/Attachedtotherouters,piecesofmiddlewareareameansoftweakingthe......
  • Leftmost Ball
    题意:给你\(n\)种颜色的球,每个球有\(k\)个,把这\(n\timesk\)个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色),求有多少种不同的颜色序列。思路......
  • LINQ 左连接(Left Join)
     1.数据准备usingSystem.Collections.Generic;namespaceLINQTutorial{publicclassEmployee{publicintID{get;set;}publics......