前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode397. Integer Replacement

leetcode397. Integer Replacement

作者头像
眯眯眼的猫头鹰
发布2019-03-13 16:47:04
3030
发布2019-03-13 16:47:04
举报

题目要求

代码语言:javascript
复制
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:
8

Output:
3

Explanation:
8 -> 4 -> 2 -> 1
Example 2:

Input:
7

Output:
4

Explanation:
7 -> 8 -> 4 -> 2 -> 1
or
7 -> 6 -> 3 -> 2 -> 1

思路和代码

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

代码语言:javascript
复制
    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;
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目要求
  • 思路和代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档