2021/3/11 剑指 Offer 64. 求1+2+…+n

求1+2+3+...+n

https://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1

题目描述

求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

示例1

输入: n = 3
输出: 6

示例2

输入: n = 9
输出: 45

解题思路

直接上公式。
当 n 为偶数时,就是众所周知图片说明
当 n 为奇数时,要在上面式子的基础上再加上中间的数,中间的数就是 (n + 1) / 2,即公式为图片说明
对比上下两式,其实只要在最后面多出来的 (n + 1) 上加上一个系数 k,当 n 为奇数时 k = 1,当 n 为偶数时 k = 0。用与运算即可满足这个条件。

Java代码实现

class Solution {
    public int sumNums(int n) {
        return (n + 1) * (n >> 1) + (n & 1) * ((n + 1) >> 1);
    }
}
全部评论

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务