Leetcode Integer Replacement
来源:互联网 发布:淘宝宝贝详情图片制作 编辑:程序博客网 时间:2024/06/05 14:07
题意:遇到偶数除以2,奇数 +1 或者 - 1。看多少次后能达到1。
思路:BFS。
class Solution {public: int integerReplacement(int n) { pair<int64_t, int64_t> addNode; addNode.first = n, addNode.second = 0; node.push_back(addNode); int i = 0; while(node[i].first != 1) { if(node[i].first % 2 == 0) { addNode.first = node[i].first / 2; addNode.second = node[i].second + 1; node.push_back(addNode); } else { addNode.first = node[i].first + 1; addNode.second = node[i].second + 1; node.push_back(addNode); addNode.first = node[i].first - 1; addNode.second = node[i].second + 1; node.push_back(addNode); } i ++; } return node[i].second; } private: vector<pair<int64_t, int64_t>> node;};
另一种思路是尽可能减少1的位数。比如111-> 1000 好于 111->110。但是也有例外,如3,要单独讨论。
class Solution {public: int integerReplacement(int n) { int c = 0; int64_t m = n; while(m != 1) { if((m & 1) == 0) m >>= 1; else if(m == 3 || ((m >> 1) & 1) == 0) m --; else m ++; c ++; } return c; }};
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] Integer Replacement
- LeetCode 397. Integer Replacement
- LeetCode[397] Integer Replacement
- LeetCode 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 Integer Replacement
- [leetcode]397. Integer Replacement
- 初识LISP(2)——结构、循环与函数
- hadoop datanode启动不起来解决办法
- freebsd下安装mysql(percona5.7)
- Asp.net MVC中的ViewData与ViewBag
- android 查看端口号被占用
- Leetcode Integer Replacement
- React-Native 之 项目实战(四)
- Qt+ITK+VTK安装
- Linux正则表达式详解
- ActivityManagerService简要分析
- struts2文件上传
- Go学习笔记(二)初试Go第一个Go语言
- 观光旅游-SSL 1763
- iOS 底层解析weak的实现原理(包含weak对象的初始化,引用,释放的分析)