中级农民
- 积分
- 105
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-2-16
- 最后登录
- 1970-1-1
|
我觉得是这样:
两种方法:
1。 每一个数组值都读写到了- def moveZeros1(arr):
- if not arr:
- return
- index = 0
- for i in range(len(arr)):
- if arr[i] != 0:
- arr[index] = arr[i]
- index += 1
- while index < len(arr):
- arr[index] = 0
- index += 1
复制代码 2。 用quicksort 的 partition 的话只需要做交换,所以可以减少读写次数
这里的0相当于就把它甩到数组末尾就可以了- def moveZeros(arr):
- if not arr:
- return
- lastIndex = len(arr) - 1
-
- i = 0
- while i < lastIndex:
- if arr[i] == 0:
- arr[i], arr[lastIndex] = arr[lastIndex], arr[i]
- lastIndex -= 1
- else:
- i += 1
复制代码 |
|