c# leetcode75. 颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。
此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。
注意:
不能使用代码库中的排序函数来解决这道题。
示例:
输入: [2,0,2,1,1,0]
输出: [0,0,1,1,2,2]
进阶:
一个直观的解决方案是使用计数排序的两趟扫描算法。
首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。
你能想出一个仅使用常数空间的一趟扫描算法吗?
链接:https://leetcode-cn.com/problems/sort-colors
public static void SortColors(int[] nums){int[] counts = new int[3];foreach (var x in nums){counts[x]++;}int index = 0;for (int i = 0; i <=2; i++){while (counts[i]-->0){nums[index++] = i;}}}
这个题已经确定了有几种颜色,所以创建了int[] counts=new int[3];
这道题的返回类型是void.就要求在nums上进行修改。
循环三次,每次 当前 counts[i]的值还有数据,就将值加入nums里
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
