题目描述

求 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);
    }
}