作者:
链接:http://proprogrammar.com:443/article/855
声明:请尊重原作者的劳动,如需转载请注明出处
求 1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3 输出: 6
示例 2:
输入: n = 9 输出: 45
难度:中等;标签:无;编程语言:JAVA
class Solution {
int[] dp = new int[5001];
{
for(int i = 1; i < dp.length; i++){
dp[i] = dp[i - 1] + i;
}
}
public int sumNums(int n) {
if(n > 5000){
return dp[5000] + (n - 5000) * 5000 + dp[n-5000];
}
return dp[n];
}
}
n的范围是<10000,事先算一下5000以内的,5000以外的通过5000以内的算一下
class Solution {
public int sumNums(int n) {
int sum = n;
boolean flag = n > 0 && (sum += sumNums(n - 1)) > 0;
return sum;
}
}
这里就是语言技巧了,总得来说就是递归,这样写代码短,这里用逻辑运算技巧使代码变短,还可以用:?使代码变短
亲爱的读者:有时间可以点赞评论一下
全部评论