本文主要是介绍Sort Colors II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考点击打开链接
每次只对两个颜色min 和max排序,其他的都不变,于是中间再用I的方法即可求解。
class Solution {/*** @param colors: A list of integer* @param k: An integer* @return: nothing*/public void sortColors2(int[] colors, int k) {// write your code hereint start = 0, end = colors.length - 1, count = 0;while (count < k) {int min = Integer.MAX_VALUE;int max = Integer.MIN_VALUE;for (int i = start; i <= end; i++) {min = Math.min(min, colors[i]);max = Math.max(max, colors[i]);}int left = start, cur = start, right = end;while (cur <= right) {if (colors[cur] == min) {swap(colors, left, cur);left++;cur++;} else if (colors[cur] > min && colors[cur] < max) {cur++;} else {swap(colors, right, cur);right--;}}count = count + 2;start = left;end = right;}}private void swap(int[] colors, int right, int cur) {int temp = colors[right];colors[right] = colors[cur];colors[cur] = temp;}
}
这篇关于Sort Colors II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!