LeetCode C++ 剑指 Offer 64. 求1+2+…+n【Bit Manipulation】中等
发布日期:2021-07-01 02:58:19
浏览次数:3
分类:技术文章
本文共 657 字,大约阅读时间需要 2 分钟。
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3输出: 6
示例 2:
输入: n = 9输出: 45
限制: 1 <= n <= 10000
解法1 直接乘除
class Solution { public: int sumNums(int n) { return n * (n + 1) / 2; }};
运行效率如下:
执行用时:4 ms, 在所有 C++ 提交中击败了30.48% 的用户内存消耗:6.2 MB, 在所有 C++ 提交中击败了37.91% 的用户
解法2 快速乘和右移
class Solution { public: int sumNums(int n) { //乘法改为快速乘函数,除法换为>>1 int a = n, b = n + 1, ans = 0; while (b) { if (b & 1) ans += a; a <<= 1; b >>= 1; } return ans >> 1; }};
运行效率如下:
执行用时:4 ms, 在所有 C++ 提交中击败了30.48% 的用户内存消耗:6.3 MB, 在所有 C++ 提交中击败了28.12% 的用户
转载地址:https://memcpy0.blog.csdn.net/article/details/111399616 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年05月07日 23时46分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Unix环境变量--信号(一)
2019-05-02
Unix环境变量--线程基础
2019-05-02
Unix环境变量--缓冲区
2019-05-02
Unix环境变量--POSIX异步I/O
2019-05-02
UNIX环境变量--存储映射I/O
2019-05-02
tinyhttpd源码学习1
2019-05-02
Plus One
2019-05-02
Linux内核完全剖析0.12(一)
2019-05-02
Sum Root to Leaf Numbers
2019-05-02
ffmpeg提取音频存为PCM
2019-05-02
我也学android(1)搭个环境
2019-05-02
Reverse Linked List II
2019-05-02
题目1511:从尾到头打印链表
2019-05-02
来吧,用设计模式来干掉 if-else
2019-05-02
为什么 Redis 要比 Memcached 更火?
2019-05-02
涨姿势:为啥MySQL官方不推荐使用uuid或者雪花id作为主键?
2019-05-02
一个小小的签到功能,到底用MySQL还是Redis?
2019-05-02
36岁退休!阿里 P8 六年实现“财务自由”,裸辞环游世界!
2019-05-02
QQ号终于能修改了?
2019-05-02
Kafka如果丢了消息,怎么处理的?
2019-05-02