本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:程序员总部,程序员的家,探索程序员的人生之路!分享IT最新技术,关注行业最新动向,让你永不落伍。了解同行们的工资,生活工作中的酸甜苦辣,谋求程序员的最终出路!

  价值13000svip视频教程,java大神匠心打造,零基础java开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2021-05(18)

2021-06(46)

2021-07(9)

2021-08(51)

2021-09(45)

JAVA(2021-11-19)leetcode每日一题---- 整数替换

发布于2021-11-21 21:14     阅读(744)     评论(0)     点赞(30)     收藏(5)


本题我采用的贪心算法,一个数要么是偶数,要么是奇数,这显而易见,所以我们就要根据这两个条件分类讨论,如果是偶数,那么直接就除以二,操作数加1就好了

如果是奇数,就要讨论一番,举一个例子,如果n为7 ,那么他变成8更容易,仅仅需要一次操作数就可以,但是要是变成4,就需要三次操作数,我们需要快速的判断出来要变大还是变小。

我们可以通过%4操作做到,一个奇数%4,要么是3,要么是1,如果是1,比如5%4,那么我们肯定要将其变成4,即n=(n-1)/ 2,反之如果%4得3,比如7,那么一定是变成8,即n=(n+1)/2.

  1. class Solution {
  2. public int integerReplacement(int n) {
  3. int res = 0;
  4. while(n!=1){
  5. if((n&1)==0){
  6. n/=2;
  7. res++;
  8. } else if(n % 4 ==1){
  9. n/=2;
  10. res+=2;
  11. } else{
  12. if(n==3){
  13. res+=2;
  14. n=1;
  15. } else{
  16. res+=2;
  17. n = n / 2 + 1;
  18. }
  19. }
  20. }
  21. return res;
  22. }
  23. }



所属网站分类: 技术文章 > 博客

作者:听说你很拽

链接:http://www.javaheidong.com/blog/article/326632/fee45f330976e233cc53/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)