美文网首页
Day 42 数组分成多少块(未通过)

Day 42 数组分成多少块(未通过)

作者: 快乐的老周 | 来源:发表于2020-07-13 10:16 被阅读0次

    数组arr是[0, 1, ..., arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。

    我们最多能将数组分成多少块?

    示例 1:

    输入: arr = [4,3,2,1,0]

    输出: 1

    解释:

    将数组分成2块或者更多块,都无法得到所需的结果。

    例如,分成 [4, 3], [2, 1, 0] 的结果是 [3, 4, 0, 1, 2],这不是有序的数组。

    示例 2:

    输入: arr = [1,0,2,3,4]

    输出: 4

    解释:

    我们可以把它分成两块,例如 [1, 0], [2, 3, 4]。

    然而,分成 [1, 0], [2], [3], [4] 可以得到最多的块数。

    注意:

    arr 的长度在 [1, 10] 之间。

    arr[i]是 [0, 1, ..., arr.length - 1]的一种排列。

    来源:力扣(LeetCode)

    https://leetcode-cn.com/problems/max-chunks-to-make-sorted

    我的思路是双指针:

    class Solution():
    def maxChucksToSorted(self,arr):
    count = 0
    p1 = 0
    p2 = 1
    while p2 < len(arr):
    if arr[p2] > arr[p1]:
    count +=1
    p1 = p2
    p2+=1
    return count+1

    def test_maxChucksToSorted():
    s = Solution()
    arr = [4,3,2,1,0]
    assert s.maxChucksToSorted(arr) == 1
    arr = [1,0,2,3,4]
    assert s.maxChucksToSorted(arr) == 4
    arr = [5,4,3,2,1]
    assert s.maxChucksToSorted(arr) == 1
    arr = [1,2,0,3]
    assert s.maxChucksToSorted(arr) == 2

    相关文章

      网友评论

          本文标题:Day 42 数组分成多少块(未通过)

          本文链接:https://www.haomeiwen.com/subject/xmqocktx.html