[leetcode]397. Integer Replacement
来源:互联网 发布:mac文件打包怎么做 编辑:程序博客网 时间:2024/06/04 18:14
题目链接:https://leetcode.com/problems/integer-replacement/
Given a positive integer n and you can do operations as follow:
- If n is even, replace n with
n/2
. - If n is odd, you can replace n with either
n + 1
orn - 1
.
What is the minimum number of replacements needed for n to become 1?
Example 1:
Input:8Output:3Explanation:8 -> 4 -> 2 -> 1
Example 2:
Input:7Output:4Explanation:7 -> 8 -> 4 -> 2 -> 1or7 -> 6 -> 3 -> 2 -> 1
方法一:
class Solution{public: int integerReplacement(int n) { return getOne(n); } int getOne(int n) { if(n==INT32_MAX) return 32; else if(n==1) return 0; else if(n%2==0) return getOne(n/2)+1; else if(n%2!=0) return min(getOne(n+1),getOne(n-1))+1; return 0; }};
方法二:
思路:
All you need is determine replace n
with n + 1
or n - 1
, when n is odd. since,
- if n is even, you get no choice, just replace it with
n / 2
. - if n is odd, you can either
add 1
orreduce 1
.
If n + 1 % 4 == 0
, replace n
with n + 1
will short the path. Otherwise, replace n
with n - 1
is always the right direction.
class Solution {public: int integerReplacement(int n) { if (n == 1) return res; if (n == 3) { res += 2; return res; } if (n == INT32_MAX) return 32; res ++; if (n & 1) if ((n + 1) % 4 == 0) integerReplacement(n + 1); else integerReplacement(n - 1); else integerReplacement(n / 2); return res; }private: int res = 0;};
阅读全文
0 0
- 【Leetcode】397. Integer Replacement
- [leetcode]397. Integer Replacement
- LeetCode 397. Integer Replacement
- LeetCode 397. Integer Replacement
- LeetCode 397. Integer Replacement
- LeetCode 397. Integer Replacement
- LeetCode 397. Integer Replacement
- leetcode 397. Integer Replacement
- 【LeetCode】 397. Integer Replacement
- [LeetCode]397. Integer Replacement
- Leetcode-397. Integer Replacement
- [leetcode]397. Integer Replacement
- [leetcode]397. Integer Replacement
- LeetCode—397. Integer Replacement
- Leetcode 397. Integer Replacement[medium]
- 【Leetcode】397. Integer Replacement QuestionEditorial Solution【E】
- [leetcode] 397. Integer Replacement 解题报告
- Leetcode 397. Integer Replacement (Easy) (cpp)
- syslog的启用
- 输入框自动提示的实现
- linux常用命令之移动,拷贝,删除文件
- linux--yum
- Synchronized关键字解析
- [leetcode]397. Integer Replacement
- RIP动态路由协议的配置命令
- HDU 4512 吉哥系列故事——完美队形I(最长公共上升子序列 LCIS)
- interview tips
- 总结移动端页面开发时需要注意的一些问题
- PyQt5使用QPdfWriter方式写pdf文档
- 双目视觉---图像匹配基本算法总结
- Codeforces Round #415 C. Do you want a date?
- activity取消跳转动画