当前位置:首页 » 《随便一记》 » 正文

剑指offer系列——剑指 Offer 64. 求1+2+…+n_未见花闻的博客

0 人参与  2022年03月29日 12:17  分类 : 《随便一记》  评论

点击全文阅读


⭐️前面的话⭐️

大家好!本篇文章将介绍的剑指offerOJ题,来自力扣剑指 Offer 64. 求1+2+…+n题解,这道题乍一看很简单,但是不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)使这道题难度上了好几个台阶,本文将使用逻辑运算符短路来模拟构造判断语句,以递归的形式解决这道题,展示代码语言暂时为:Java,C,C++。

📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创,CSDN首发!
📆首发时间:🌴2021年12月13日🌴
✉️坚持和努力一定能换来诗与远方!
💭刷题推荐书籍:📚《剑指offer专项版》,📚《剑指offer第2版》
💬参考在线编程网站:🌐牛客网🌐力扣
博主的码云gitee,平常博主写的程序代码都在里面。
博主的github,平常博主写的程序代码都在里面。
🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!


📌导航小助手📌

  • ⭐️剑指 Offer 64. 求1+2+…+n⭐️
    • 🔐题目详情
    • 💡解题思路
    • 🔑源代码
  • 🌱总结


0

⭐️剑指 Offer 64. 求1+2+…+n⭐️

🔐题目详情

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

示例:

输入: n = 3
输出: 6
输入: n = 9
输出: 45
来源:力扣(LeetCode)链接:剑指 Offer 64. 求1+2+…+n

💡解题思路

方法1:它说不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)你就不用?
方法2:递归,利用逻辑运算符&& ||短路原理,构造判断语句,进行递归条件判断,实现递归。
逻辑与 & & \&\& &&短路原理:
布 尔 表 达 式 1   & &   布 尔 表 达 式 2 布尔表达式1\ \&\& \ 布尔表达式2 1 && 2
如果布尔表达式1为假,布尔表达式2将不会被执行,反之,布尔表达式1为真,布尔表达式2将会被执行。
相当于:

if (布尔表达式1) {
	布尔表达式2;
}

逻辑或 ∣ ∣ || 短路原理:
布 尔 表 达 式 1   ∣ ∣   布 尔 表 达 式 2 布尔表达式1\ || \ 布尔表达式2 1  2
如果布尔表达式1为真,布尔表达式2将不会被执行,反之,布尔表达式1为假,布尔表达式2将会被执行。
相当于:

if (!布尔表达式1) {
	布尔表达式2;
}

🔑源代码

方法2:Java

class Solution {
    public int sumNums(int n) {
        boolean is = n > 1 && (n += sumNums(n  -1)) > 1;
        return n;
    }
}

方法2:C

int sumNums(int n){
    n && (n += sumNums(n-1));
    return n;
}

方法2:C++

class Solution {
public:
    int sumNums(int n) {
        n && (n += sumNums(n-1));
        return n;
    }
};

🌱总结

像这种限制一个条件,让简单题变复杂这种类型的题目有很多,除了这个比较常见的有:

  1. 不用加减乘除做加减法。
  2. 不用乘法做乘法。
  3. 不用乘除模运算做除法。
  4. 不用判断和比较运算符求最大值。

还有很多很多,不一一列举了,遇到这种问题需要从语言的一些常见底层逻辑出发,比如位运算,逻辑符短路,递归,快速幂等,甚至需要考虑加减乘除模等数学运算符的特性与联系,才能将一道简单题以复杂的方式做出来。
常见题如下:
371. 两整数之和
面试题 17.01. 不用加号的加法
剑指 Offer 65. 不用加减乘除做加法
面试题 08.05. 递归乘法
29. 两数相除
50. Pow(x, n)
69. Sqrt(x)
面试题 16.07. 最大数值


觉得文章写得不错的老铁们,点赞评论关注走一波!谢谢啦!

1-99


点击全文阅读


本文链接:http://zhangshiyu.com/post/36965.html

布尔  表达式  递归  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1