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)

HDU 1033

想要使用片段从导航抽屉活动移动到另一个屏幕,以在所有屏幕上显示抽屉

自动刷新android片段,直到满足条件

如何使用 jQuery 连续移动对象