LeetCode 剑指Offer 64.求1,2到n的和, 不使用循环/判断及乘除
题目
剑指 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的和, 不使用循环/判断及乘除相关推荐
- 【LeetCode】剑指 Offer 64. 求1+2+…+n
[LeetCode]剑指 Offer 64. 求1+2+-+n 文章目录 [LeetCode]剑指 Offer 64. 求1+2+-+n package offer;public class Solu ...
- 【LeetCode笔记】剑指 Offer 64. 求1 + 2 + ... + n (Java、限制语法、二刷)
文章目录 题目描述 思路 && 代码 注释版代码(方便理解): 无注释版代码(方便背诵= =) 二刷 题目描述 鬼鬼,又到了我最喜欢的戴着脚镣跳舞环节. 讲道理,我觉得这类题应该整个归 ...
- 剑指Offer 64 求1+2+...+n
求1+2+...+n 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 1 # -*- coding:ut ...
- 剑指 Offer 64. 求1+2+…+n(面试题中的短路与)
题目: 求 1+2+-+n ,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 示例 1: 输入: n = 3 输出: 6 示例 2 ...
- leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列
剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...
- 剑指offer 64.68Ⅰ.68Ⅱ. 搜索与回溯算法(中等)
64. 题目: 剑指 Offer 64. 求1+2+-+nhttps://leetcode-cn.com/problems/qiu-12n-lcof/ 想法:使用递归.但是终止递归需要if,能不能不用 ...
- 【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 67 把字符串转成整数 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符 ...
- 【LeetCode 剑指offer刷题】树题16:Kth Smallest Element in a BST
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Kth Smallest Element in a BST Given a binary search tree, ...
- 【LeetCode 剑指offer刷题】回溯法与暴力枚举法题6:Number of Islands
[LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Number of Islands Given a 2d grid map of '1's (land) and ' ...
最新文章
- 如何使用jquery判断一个元素是否含有一个指定的类(class)
- 『Spring.NET+NHibernate+泛型』框架搭建之DAO(三)★
- 【翻译】C#表达式中的动态查询
- ping cat.flag.php,关于2020年强网杯-强网先锋-主动的赛题解析
- and型变量哲学家问题C语言,利用AND型信号量解决哲学家进餐问题,要windows下的C/C++的完整源代码程序。(五个哲学家五只筷子)...
- Redis系列(三)-Redis发布订阅及客户端编程
- 一篇不错的vim命令入门
- JAVA 表格组件 + rs.beforeFirst()使用
- 黑群晖外网访问的完美解决方案【无公网IP】
- 蜂考数据结构c语言版答案
- 复印机扫描显示服务器链接错误代码,如何开启扫描失败后显示网络错误代码
- apache24+php8配置
- pytorch下可训练分段函数的写法
- 同一个图表创建双坐标轴,显示多个图例
- 希尔伯特(hilbert)矩阵与最小二乘法
- 动态图片怎么做?教你一键合成gif动图
- 解锁三星bl锁有几种方法_三星手机通用解锁教程 官方解锁Bootloader教程
- 逻辑是对的不一定推出正确的结果
- OpenStack Kolla-Ansible部署Designate域名解析服务DNS服务DNSaas
- Android预装第三方app
热门文章
- Springboot热部署(热部署原理)和用IDEA开发需要的配置
- WebGL学习笔记(二)
- nyoj 聪明的kk
- 洛谷T1967 货车运输 Kruskal最大生成树倍增LCA
- svn://127.0.0.1/shop
- 领会CSS,实际中的研究
- 怎样练习一万小时(转)
- RTT——IO设备管理篇·基本概念理解
- linux+分离线程+退出,Linux下线程终止操作.pdf
- 检测mysql运行失败_MySQL 查看最近执行失败的SQL语句