LeetCode基础算法题第180篇:最大的69数

技术提高是一个循序渐进的过程,所以我讲的leetcode算法题从最简单的level开始写的,然后到中级难度,最后到hard难度全部完。目前我选择C语言,Python和Java作为实现语言,因为这三种语言还是比较典型的。由于篇幅和精力有限,其他语言的实现有兴趣的朋友请自己尝试。

如果有任何问题可以在文章后评论或者私信给我。

如果有朋友希望我讲些其他话题,请在评论区留言或者私信给我。

持续分享,敬请关注。


LeetCode 1323. 最大的69数(Maximum 69 Number)

问题描述:

给定一个仅由数字6和9组成的正整数num。你可以将6变成9或者9变成6,如果最多只允许改变一位,那么num最大能变成几?

注:

  • 1 <= num <= 10^4;
  • num 仅包含 6 或 9;

示例:

LeetCode基础算法题第180篇:最大的69数

C语言实现:

这道题非常之简单,解法不止一种,我只说我认为最精简的一种,如果有更好的解法,欢迎读者朋友,在评论区继续补充。

直接上代码:

LeetCode基础算法题第180篇:最大的69数

因为num最大就是一个四位数,所以我想,最好的办法就是从高位向低位遍历,这样如果找到第一个6,将其替换为9,也就是在这一位上直接加3,结果就是得到最大数。我们只需要一次遍历即可。

定义变量n,初始值是1000,用来提取某位的数值,随着遍历的继续,n会被不断的除10;m初值是num,注意这是一个变量,随着遍历的继续,如果高位是9,那么会被一次次丢弃。

注意for循环的条件,一定要判断n是否为真,因为n是可能为0的,如果不判断,那么m/n可能会发生除0异常了。

举一个例子, num = 9966:

第一次循环:n=1000,m = 9966;

第二次循环:n=100,m = 966;

第三次循环:n=10,m = 66,返回 = num + 3*n = 9996 ;

LeetCode基础算法题第180篇:最大的69数

Java语言实现:

Java 的实现和C语言的实现一致,不再撰述。

代码如下:

LeetCode基础算法题第180篇:最大的69数

LeetCode基础算法题第180篇:最大的69数

Python语言实现:

Python 的实现和C语言的实现一致,唯一不同是for循环改用while循环,不再撰述。

代码如下:

LeetCode基础算法题第180篇:最大的69数

LeetCode基础算法题第180篇:最大的69数


分享到:


相關文章: