• java荷兰国旗问题


    荷兰国旗包含三种颜色:红、白、蓝。

    有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。
    按颜色进行排序

    示例 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] 为 0、1 或 2
     
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/sort-colors
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    

    题目描述:

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

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

    public void sortColors(int[] nums) {
        int zero = -1, one = 0, two = nums.length;
        while (one < two) {
            if (nums[one] == 0) {
                swap(nums, ++zero, one++);
            } else if (nums[one] == 2) {
                swap(nums, --two, one);
            } else {
                ++one;
            }
        }
    }
    
    private void swap(int[] nums, int i, int j) {
        int t = nums[i];
        nums[i] = nums[j];
        nums[j] = t;
    }
    

    无意中发现了一位清华大佬的算法刷题笔记,关注公众号『勾玉技术』回复『清华算法』领取

  • 相关阅读:
    测试一下你的T-SQL基础知识-count
    测试一下你的T-SQL基础知识-subquery
    Microsoft SQL Server 2012 管理 (2): Auditing
    Webpack
    react
    Webpack 傻瓜式指南(一)
    谈谈react-router学习
    使用Flexible 实现手淘H5 页面的终端适配学习
    Promise 让异步更优
    基于LeanCloud云引擎的Web全栈方案
  • 原文地址:https://www.cnblogs.com/bronya0/p/14409409.html
Copyright © 2020-2023  润新知