zoukankan      html  css  js  c++  java
  • LeetCode 75. 颜色分类

    75. 颜色分类

    Difficulty: 中等

    给定一个包含红色、白色和蓝色,一共 n个元素的数组,对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

    此题中,我们使用整数 0、 12 分别表示红色、白色和蓝色。

    示例 1:

    输入:nums = [2,0,2,1,1,0]
    输出:[0,0,1,1,2,2]
    

    示例 2:

    输入:nums = [2,0,1]
    输出:[0,1,2]
    

    示例 3:

    输入:nums = [0]
    输出:[0]
    

    示例 4:

    输入:nums = [1]
    输出:[1]
    

    提示:

    • n == nums.length
    • 1 <= n <= 300
    • nums[i]012

    进阶:

    • 你可以不使用代码库中的排序函数来解决这道题吗?
    • 你能想出一个仅使用常数空间的一趟扫描算法吗?

    Solution

    实际上是考察排序。
    题目得要多写,昨天提交的今天再写又提交错误了。

    class Solution:
        def sortColors(self, nums: List[int]) -> None:
            """
            Do not return anything, modify nums in-place instead.
            """
            left, right = 0, len(nums)-1
            self.qSort(nums, left, right)
    
        def qSort(self, arr, low, high):
            if len(arr) <= 1:
                return arr
            if low < high:
                p = self.partition(arr, low, high)
    
                self.qSort(arr, low, p-1)
                self.qSort(arr, p+1, high)
    
        def partition(self, arr, low, high):
            i = low - 1
            pivot = arr[high]
            for j in range(low, high):
                if arr[j] <= pivot:
                    i += 1
                    arr[i], arr[j] = arr[j], arr[i]
            arr[i+1], arr[high] = arr[high], arr[i+1]
            return i+1
    
  • 相关阅读:
    Network UVA
    The Unique MST POJ
    Borg Maze POJ
    javabean,pojo,vo,dto,
    core data,
    iOS block的用法
    写给程序员:我们这一代不是汽车工人
    编译器是如何工作的?
    SQLite可视化管理工具汇总
    NSFetchedResultsController
  • 原文地址:https://www.cnblogs.com/swordspoet/p/14510151.html
Copyright © 2011-2022 走看看