查看: 1492| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[二分/排序/搜索] 问一个平均值求法的问题 微小 但搞不明白的问题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
假设 a > b  ,均为 int类型
求 a b两数的平均值  avg
2 种方式
① avg = b+(a-b)/2;
② avg = (a+b)/2
差别好像 没有吧 为什么 leetcode上 大多才用第一种计算方式呢
从计算公式上来说 结果都是相同的没什么区别阿

评分

参与人数 2大米 +4 收起 理由
adorming + 1 很有用的信息!
14417335 + 3

查看全部评分


上一篇:刷题有什么好的讲解详细APP或者书吗
下一篇:【转专业】开个帖子记录自己的刷题之旅
全局:
因为直接算a+b的话、 当a和b都接近最大支持的整数的时候,运算就会溢出

评分

参与人数 3大米 +3 收起 理由
salutgamin + 1 一语点醒梦中人
CSDH + 1 赞一个
ripxd + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

推荐
drmn68 2019-7-8 00:07:07 | 只看该作者
全局:
楼上的同学们已经说得很清楚了,就是怕不怕整数溢出的问题。

我们平时算法中需要大量用到,求一段区间的中值(比如二分,各种排序等)。一般有两种写法:
int mid = (left  + right) / 2;
or
int mid = left + (right - left) /2;

如果是long型, 两种写法没有区别。但是如果是int型,在left 和 right 接近 Integer.MAX_VALUE时,相加后会整数溢出。所以推荐 一直用第二个写法。

关键点是,减少给面试官挑刺的机会!


不少题目的整数减法时也需要注意,另个整数想减,也有可能溢出的。所有有时候需要先转化为long,在运算。

有一个面试时讨巧的办法,你直接告诉面试官。我知道这地方可能会溢出,但是我们为了简化.....
这样子他知道你有这个知识储备,也不会因为你用第一种写法就给你减分。

希望对你有所帮助。

评分

参与人数 1大米 +1 收起 理由
lbc + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
如果同正/负数 2有可能溢出
如果异号 1可能溢出

评分

参与人数 1大米 +1 收起 理由
mc2 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| yanjinbin 2019-7-9 16:50:06 | 只看该作者
全局:
谢谢 想起来了 这个问题 哈哈  
确实是这样的呢  整型溢出的问题
回复

使用道具 举报

🔗
miaoxinhuili 2019-7-10 00:55:19 | 只看该作者
全局:
谢谢分享诶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表