题目要求

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 or n - 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 -> 1
or
7 -> 6 -> 3 -> 2 -> 1

思路和代码

可以发现除二后所得到的结果一定优于加减1。因此,如果当前奇数除二为偶数,则直接做除法,否则将当前奇数加一再除以二,得到偶数的结果。

    public int integerReplacement(int n) {int count = 0;while(n != 1){if((n & 1) == 0){n >>>= 1;}else if(n == 3 || ((n>>>1) & 1) == 0){n--;}else{n++;}count++;}return count;}

想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

leetcode397. Integer Replacement相关推荐

  1. LeetCode Integer Replacement

    题意:给出一个正数n,如果n为偶数则n = n /2,如果n为奇数,则n=n + 1或者n=n-1,求其变为1所需要的最少步数. 思路:刚开始用记忆化的dp,当数值比较大时,提示栈溢出.在判断是n=n ...

  2. leetcode 397. Integer Replacement | 397. 整数替换(动态规划,记忆化搜搜)

    题目 https://leetcode.com/problems/integer-replacement/ 题解 一开始写了个 dp,结果因为大数组 OOM 了. dp 数组需要计算每一个值,有的值是 ...

  3. LeetCode 397. 整数替换(Integer Replacement)

    题目描述: 给定一个正整数 n,你可以做如下操作: 1. 如果 n 是偶数,则用 n / 2替换 n. 2. 如果 n 是奇数,则可以用 n + 1或n - 1替换 n. n 变为 1 所需的最小替换 ...

  4. 继续过中等难度.0309

      .   8  String to Integer (atoi)    13.9% Medium   . 151 Reverse Words in a String      15.7% Mediu ...

  5. 探索Julia(part7)--数组与字典函数

    学习笔记,仅供参考,有错必纠 参考自:Julia数据科学应用–Zacharias Voulgaris 使用Julia-1.1.1 数组与字典函数 in 语法: in(item, collection) ...

  6. python算法工程师面试_算法工程师的面试经历及总结

    2017年即将过去,今年是忙碌的一年,从2月17还没开学就来学校,到现在12月初,工作的事情终于尘埃落定,现将这一段经历写下来,希望能帮助来年找工作的学弟学妹,同时,对自己来说,也是一年的工作总结,总 ...

  7. LeetCode All in One 题目讲解汇总(持续更新中...)

    原文地址:https://www.cnblogs.com/grandyang/p/4606334.html 终于将LeetCode的大部分题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开 ...

  8. 机器学习算法工程师面试总结

    转自北邮人论坛 2017年即将过去,今年是忙碌的一年,从2月17还没开学就来学校,到现在12月初,工作的事情终于尘埃落定,现将这一段经历写下来,希望能帮助来年找工作的学弟学妹,同时,对自己来说,也是一 ...

  9. The X protocol C-language Binding (XCB) is a replacement for Xlib

    目录 Introduction News Download Development Documentation Miscellaneous Introduction The X protocol C- ...

  10. B. Partial Replacement

    B. Partial Replacement 题面: You are given a number k and a string s of length n, consisting of the ch ...

最新文章

  1. Android -- 利用Broadcast开启Service
  2. Android解决NDK not configured问题
  3. python编程爱心-python画一个玫瑰和一个爱心
  4. python加法怎么写_51NOD 大数加法以及python写法
  5. boost::process::env相关的测试程序
  6. Apache服务器学习笔记
  7. rasa聊天机器人_Rasa-X是持续改进聊天机器人的独特方法
  8. document.createDocumentFragment 以及创建节点速度比较
  9. 从 vue-cli 源码中,我发现了27行读取 json 文件有趣的 npm 包
  10. YbtOJ#853-平面标记【整体二分,凸壳】
  11. ASP.NET的学习之asp.net整体运行机制
  12. Thinkphp5命名规范
  13. carmaker/matlab联合仿真(一) 新建工程,运行自带example
  14. USB(UVC协议)摄像头
  15. java代码对比工具_代码比较工具(Diffuse)
  16. 计算机操作系统操作系统(第四版)汤小丹版 思维导图(第一章到第七章)
  17. 算法题:Find the closest common ancestor
  18. PDF虚拟打印机(pdfFactory) v5.11 官方版
  19. 一文搞懂基因融合(gene fusion)的定义、产生机制及鉴定方法
  20. c语言生日快乐音乐程序,89S51演奏生日快乐的歌曲c程序

热门文章

  1. Java 中与()短路与()以及 或(|)短路或(||)的关系
  2. GDB调试字符数组时指针和数组区别的体现
  3. bzoj1088 [SCOI2005]扫雷Mine
  4. 添加常见 URL Scheme 列表,方便快速查询⓶QA:URL Scheme适配好为何仍然报错
  5. 使用Xcode Instruments Leak解决内存泄漏问题
  6. Mac如何修改文件默认打开方式?
  7. Ubuntu18.04 上 phpvirtualbox 折腾记
  8. js的函数抖动和函数节流原理
  9. iOS开发: info访问权限配置
  10. linux文件系统变为只读的修复