1033. 移动石子直到连续
Posted lgz0921
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1033. 移动石子直到连续相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/moving-stones-until-consecutive/
思路:
最大移动次数:最大值-最小值-2(因为要想最大,就要一步一步移动,移动的最大的次数就是最大值-最小值-2)。
最小移动次数:首先明确最小移动次数只有三个选择0,1,2【0:就是一开始是连续的。1:有两种情况,第一种是只有一半是连续的(比如3 4 6、4 6 7),第二种是都不是连续的但是存在两个相差是2的坐标(比如1 3 5 、1 6 8)。2:其余情况都是2】。注意最小移动次数是1的情况(这里容易出错)~~~
上代码:
class Solution {
fun numMovesStones(a: Int, b: Int, c: Int): IntArray {
val sortedArray = arrayOf(a, b, c).sortedArray()
val minL = when (sortedArray[1] - sortedArray[0]) {
1 -> 0
else -> 1
}
val minR = when (sortedArray[2] - sortedArray[1]) {
1 -> 0
else -> 1
}
var min = minL + minR
if (sortedArray[1] - sortedArray[0] == 2 || sortedArray[2] - sortedArray[1] == 2) {
min = 1
}
return arrayOf(min, sortedArray[2] - sortedArray[0] - 2).toIntArray()
}
}
以上是关于1033. 移动石子直到连续的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 1040. 移动石子直到连续 II(滑动窗口)
LeetCode.1033-移动石头直到连续(Moving Stones Until Consecutive)