题目来源:https://leetcode.com/problems/move-zeroes/
题目难度:Easy
解答1[Java]:
1 | import java.util.ArrayList; |
复杂度分析
时间复杂度:$O(n)$
空间复杂度:$O(n)$
解答2[Java]:
1 | class Solution { |
第 6 到 10 行有一个判断:
1 | if (k != i) { |
这个判断其实可以不要,因为只要遇到第一个 0 元素之后,后边的判断就是多余的了。不如改为直接赋值。加上了判断就一定会判断 n 次,但是如果直接赋值,多余的赋值操作的次数是少于 n 次的,所以开销更小。
所以 5-11 行可以直接改为:
1 | if (nums[j] != val) { |
复杂度分析
时间复杂度:$O(n)$
空间复杂度:$O(1)$
对末尾加零的操作优化
1 | class Solution { |