当前位置:网站首页>算法---整数替换(Kotlin)
算法---整数替换(Kotlin)
2022-08-09 23:31:00 【小米科技Android 研发曹新雨】
题目
给定一个正整数 n ,你可以做如下操作:
如果 n 是偶数,则用 n / 2替换 n 。
如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。
返回 n 变为 1 所需的 最小替换次数 。
示例 1:
输入:n = 8
输出:3
解释:8 -> 4 -> 2 -> 1
示例 2:
输入:n = 7
输出:4
解释:7 -> 8 -> 4 -> 2 -> 1
或 7 -> 6 -> 3 -> 2 -> 1
示例 3:
输入:n = 4
输出:2
提示:
1 <= n <= 231 - 1
解决思路
1.按照题目思路 直接递归求解
2.添加记忆化 防止重复运算
解决方法
方法1:
fun integerReplacementV2(n: Int): Int {
if (n == 1) return 0
return if (n % 2 != 0) {
2 + integerReplacement(n / 2 + 1).coerceAtMost(integerReplacement(n / 2))
} else{
1 + integerReplacement(n / 2)
}
}
方法2:
var map = HashMap<Int,Int>()
fun integerReplacement(n: Int): Int {
if (n == 1) return 0
if (!map.containsKey(n)){
if (n % 2 != 0) {
map[n] = 2 + integerReplacement(n / 2 + 1).coerceAtMost(integerReplacement(n / 2))
} else if (n != 1) {
map[n] = 1 + integerReplacement(n / 2)
}
}
return map[n]!!
}
总结
1.注意这个边界情况 不然产生了负数 可以一直除下去 导致stackOverFlow
2.官方题解还有一种方法 不过太过于难于理解
我不希望真实项目中存在那种写法 可读性和可维护性太差
边栏推荐
猜你喜欢
ES6 从入门到精通 # 12:数组的扩展方法一
首席信息官如何将可持续性和技术结合起来
如何抑制告警风暴?
上交所实时行情文件汇总
【SSL集训DAY2】有趣的数【数位DP】
WPF DataGrid 使用数据模板
Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom
RebatMq消息中间件(一) 各个中间件介绍
mysql无法远程连接 Can‘t connect to MySQL server on ‘xxx.xxx.xxx.xxx‘ (10060 “Unknown error“)
2022中高级Android面试题汇总来助你通过面试
随机推荐
deepstream学习笔记(三):deepstream-imagedata-multistream解析与接入适配yolov5模型测试
Wireshark经典实践和面试13点总结
The technical aspects of the byte have been passed, and the salary has been negotiated for 20K*13, but the result is still being brushed. I asked the HR why...
Linux安装Oracle和postgrepSQL数据库
解锁时间生成与比较
【「收藏」Oracle 数据库安装】
ES6 Beginner to Mastery #13: Extension Methods for Arrays 2
巴比特 | 元宇宙每日必读:国内首个数字人产业专项支持政策发布,2025年北京数字人产业规模将破500亿元...
Impala 疑问
工程 (七) ——PolarSeg点云语义分割
数字孪生智慧制造生产线项目实施方案,平台认知与概念
【集训DAY3】中位数
When knowledge and action are one
Golden Warehouse Database KingbaseGIS User Manual (6.6. Geometric Object Verification Function, 6.7. Spatial Reference System Function)
拼多多店铺运营不得不知的留个运营小知识
MATLB|和她跌宕起伏最终到达人生之峰【浪漫旅途】
Creo5.0 introductory tutorial free material
Leecode-205. 同构字符串
断开和服务器共享连接的方法「建议收藏」
New window Display Agreement