三色排序
来源:互联网 发布:软件测试人员基本素质 编辑:程序博客网 时间:2024/04/24 20:00
有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序。
给定一个只含0,1,2的整数数组A及它的大小,请返回排序后的数组。保证数组大小小于等于500。
测试样例:[0,1,1,0,2,2],6返回:[0,0,1,1,2,2]
我的提交
# -*- coding:utf-8 -*-class ThreeColor: def sortThreeColor(self, A, n): # write code here zindex = -1 tindex = n i = 0 while i < tindex: if A[i] == 0: zindex += 1 A[zindex], A[i] = A[i], A[zindex] i += 1 elif A[i] == 1: i += 1 else: tindex -= 1 A[tindex], A[i] = A[i], A[tindex] print("i = " + str(i) + " -> " + str(A)) return Aif __name__ == '__main__': three = ThreeColor() print(three.sortThreeColor([1,2,0,2],4))
参考答案
import java.util.*;public class ThreeColor { public int[] sortThreeColor(int[] A, int n) { if (A == null || A.length < 2) { return A; } int left = -1; int index = 0; int right = A.length; while (index < right) { if (A[index] == 0) { swap(A, ++left, index++); } else if (A[index] == 2) { swap(A, index, --right); } else { index++; } } return A; } public void swap(int[] arr, int index1, int index2) { int tmp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = tmp; }}
阅读全文
0 0
- 三色排序
- 三色排序
- 三色排序
- 排序14:三色排序
- 三色旗排序问题
- igt 三色排序问题
- 三色旗排序问题
- 三色旗排序
- 牛客网 | 三色排序
- Sort Colors 三色排序
- 三色球排序
- 三色排序练习
- 三色排序练习题
- 荷兰国旗/三色排序
- 三色排序 -- 算法小结
- 三色球数组分类排序
- 三色排序(荷兰国旗问题)
- 荷兰国旗问题,三色排序
- ROC曲线知识
- (上传文件错误)java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
- ios 百度地图api所遇到的问题以及解决方法
- 1000: A + B Problem
- (HDU
- 三色排序
- 学习笔记16-C++ main(int argc, char *argv[])
- Thinking in Java笔记(第五章package)
- qsort与sort()
- PHP开发环境搭建 Apache2.4+PHP7.1.8+PHPStorm (加调试模式)
- comet4j笔记
- 手把手教你给win10系统右键菜单添加命令提示符(管理员)
- java接口
- oracle怎么查某个字符第n次出现的位置,如第二次