题目

剑指 Offer 64. 求1+2+…+n
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3
输出: 6
示例 2:
输入: n = 9
输出: 45
限制:
1 <= n <= 10000

想法1

我的想法比较简单…就是调用库函数, 例如Python自带的sum()函数, 代码的话就是简单的一行:

class Solution:def sumNums(self, n: int) -> int:return sum(range(n+1))

但是这样的话算是取巧了, 面试时候用这个就是等着凉凉… …

想法2

这里借鉴了LeetCode官方题解的方法, 思路比较巧, 是使用递归, 判断的话使用&&, 算是中规中矩吧. 代码C++

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

至于那个俄罗斯农民那个方法简直不想看, 就是把循环分开了…

想法3: 使用位运算和pow()函数

这个算是个擦边球吧, 要是人家pow也不让用呢…

class Solution:def sumNums(self, n: int) -> int:return (pow(n, 2) + n) >> 1

想法4: 利用异常处理

这里参考了评论老哥的方法, 也是个好办法, 就是用代码执行的异常处理结构, 作为递归中止的条件, 数组溢出则停止求和.

这里以Python的实现为例:

class Solution:def sumNums(self, n: int) -> int:try:a = [0]return a[n - 1] + nexcept Exception:return n + sum1n(n - 1)

可以说是一种很不错的方法了.

令人拍案叫绝的方法!

参考了评论的一位大佬, 惊呆我一整天…

话不多说, 上代码C++(Python好像没有这个特性):

class Solution {public:int sumNums(int n) {// 初始化一个char类型的二维数组, 代替乘法char a[n][n+1];// 计算内存并右移一位代替除以2的操作return sizeof(a)>>1;}
};

LeetCode 剑指Offer 64.求1,2到n的和, 不使用循环/判断及乘除相关推荐

  1. 【LeetCode】剑指 Offer 64. 求1+2+…+n

    [LeetCode]剑指 Offer 64. 求1+2+-+n 文章目录 [LeetCode]剑指 Offer 64. 求1+2+-+n package offer;public class Solu ...

  2. 【LeetCode笔记】剑指 Offer 64. 求1 + 2 + ... + n (Java、限制语法、二刷)

    文章目录 题目描述 思路 && 代码 注释版代码(方便理解): 无注释版代码(方便背诵= =) 二刷 题目描述 鬼鬼,又到了我最喜欢的戴着脚镣跳舞环节. 讲道理,我觉得这类题应该整个归 ...

  3. 剑指Offer 64 求1+2+...+n

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

  4. 剑指 Offer 64. 求1+2+…+n(面试题中的短路与)

    题目: 求 1+2+-+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 示例 1: 输入: n = 3 输出: 6 示例 2 ...

  5. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

  6. 剑指offer 64.68Ⅰ.68Ⅱ. 搜索与回溯算法(中等)

    64. 题目: 剑指 Offer 64. 求1+2+-+nhttps://leetcode-cn.com/problems/qiu-12n-lcof/ 想法:使用递归.但是终止递归需要if,能不能不用 ...

  7. 【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 67 把字符串转成整数 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符 ...

  8. 【LeetCode 剑指offer刷题】树题16:Kth Smallest Element in a BST

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Kth Smallest Element in a BST Given a binary search tree, ...

  9. 【LeetCode 剑指offer刷题】回溯法与暴力枚举法题6:Number of Islands

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Number of Islands Given a 2d grid map of '1's (land) and ' ...

最新文章

  1. 如何使用jquery判断一个元素是否含有一个指定的类(class)
  2. 『Spring.NET+NHibernate+泛型』框架搭建之DAO(三)★
  3. 【翻译】C#表达式中的动态查询
  4. ping cat.flag.php,关于2020年强网杯-强网先锋-主动的赛题解析
  5. and型变量哲学家问题C语言,利用AND型信号量解决哲学家进餐问题,要windows下的C/C++的完整源代码程序。(五个哲学家五只筷子)...
  6. Redis系列(三)-Redis发布订阅及客户端编程
  7. 一篇不错的vim命令入门
  8. JAVA 表格组件 + rs.beforeFirst()使用
  9. 黑群晖外网访问的完美解决方案【无公网IP】
  10. 蜂考数据结构c语言版答案
  11. 复印机扫描显示服务器链接错误代码,如何开启扫描失败后显示网络错误代码
  12. apache24+php8配置
  13. pytorch下可训练分段函数的写法
  14. 同一个图表创建双坐标轴,显示多个图例
  15. 希尔伯特(hilbert)矩阵与最小二乘法
  16. 动态图片怎么做?教你一键合成gif动图
  17. 解锁三星bl锁有几种方法_三星手机通用解锁教程 官方解锁Bootloader教程
  18. 逻辑是对的不一定推出正确的结果
  19. OpenStack Kolla-Ansible部署Designate域名解析服务DNS服务DNSaas
  20. Android预装第三方app

热门文章

  1. Springboot热部署(热部署原理)和用IDEA开发需要的配置
  2. WebGL学习笔记(二)
  3. nyoj 聪明的kk
  4. 洛谷T1967 货车运输 Kruskal最大生成树倍增LCA
  5. svn://127.0.0.1/shop
  6. 领会CSS,实际中的研究
  7. 怎样练习一万小时(转)
  8. RTT——IO设备管理篇·基本概念理解
  9. linux+分离线程+退出,Linux下线程终止操作.pdf
  10. 检测mysql运行失败_MySQL 查看最近执行失败的SQL语句