【LeetCode】面试题64. 求1+2+…+n
发布日期:2021-07-01 02:39:43
浏览次数:2
分类:技术文章
本文共 2401 字,大约阅读时间需要 8 分钟。
来自
题目描述
求 1+2+…+n ,要求不能使用乘除法、for
、while
、if
、else
、switch
、case
等关键字及条件判断语句(A?B:C
)。
示例 1:
输入: n = 3输出: 6
示例 2:
输入: n = 9输出: 45
限制:
- 1 <= n <= 10000
题解
逻辑(短路)与
看完标题,发现这是一道面试题!!!
看到第一行的“要求不能使用……”,我人傻了,没错,就是人傻了~~
想用“递归”,但是乘除法不能用、条件判断也不能用🤣🤣🤣
这要怎么做啊?!
等等,没说不能用运算符哦!!!
试试看呗~~
直接写写源码~~
class Solution { // int res = 0; public int sumNums(int n) { // boolean x = n > 1 && sumNums(n - 1) > 0; boolean x = n > 1 && (n += sumNums(n - 1)) > 0; // res += n; // return res; return n; }}
思路吗?就直接看源码就懂了!!!
不懂,那就看多几次!!!
补充
逻辑运算符的短路效应:
常见的逻辑运算符有三种,即 “与&&
”,“或 ∣∣
”,“非 !
” ; 而其有重要的短路效应,如下所示: if(A && B) // 若 A 为 false ,则 B 的判断不会执行(即短路),直接判定 A && B 为 falseif(A || B) // 若 A 为 true ,则 B 的判断不会执行(即短路),直接判定 A || B 为 true
本题需要实现 “当 n = 1n=1 时终止递归” 的需求,可通过短路效应实现。
n > 1 && sumNums(n - 1) // 当 n = 1 时 n > 1 不成立 ,此时 “短路” ,终止后续递归
异常捕获
这个方法会超时,但是确实是可以。class Solution { int[] test=new int[]{ 0}; public int sumNums(int n) { try{ return test[n]; }catch(Exception e){ return n+sumNums(n-1); } }}
移位运算符
移位运算符确实可以解,但是好像不是很多人用它写。
class Solution { public int sumNums(int n) { int ans = 0, A = n, B = n + 1; boolean flag; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; flag = ((B & 1) > 0) && (ans += A) > 0; A <<= 1; B >>= 1; return ans >> 1; }}
我在题解区看到了“你是我见过最变态的题解”,不信就看👇
原帖是转载地址:https://melodyjerry.blog.csdn.net/article/details/106497087 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月18日 02时35分40秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux下的同步与异步
2019-05-02
Ajax中的XMLHttpRequest对象详解
2019-05-02
GDB命令大全
2019-05-02
IT行业培训必读:优秀程序员的十个习惯
2019-05-02
实例属性和类属性
2019-05-02
StringIO和BytesIO
2019-05-02
财务分析与决策:同型分析
2019-05-02
今日整理PDF电子书资料
2019-05-02
【语言-c#】C# 超级整数计算
2019-05-02
【软件-Doxgen】工具:程序代码生成xml文档(doxgen)
2019-05-02
【语言-c#】C# 注释详细介绍说明
2019-05-02
MySQL 内存模型
2019-05-02
node.js 实现一个简单的登录拦截器
2019-05-02
c++抽象类、纯虚函数以及巧用纯虚析构函数实现接口类【转】
2019-05-02
Caffe 安装错误记录及解决办法【转】
2019-05-02
Android用类继承Application的全局变量使用注意
2019-05-02