示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。...,也是双指针;
唯一的区别是不在i指针扫描的时候替换零;
而是在替换完毕所有非零元素后,把剩余的全部位数都改为0;
解题代码
「方法一」 - 统计0的个数:
时间复杂度:
- N个元素就需要遍历N次...] [1,2] [0,0]
题解对比与分析
注意:以下数据都是在力扣中提交后返回的结果,每次提交都有可能不一致。...方法 执行时间 内存消耗
「方法一」- 统计0的个数 96 ms(战胜17.82%) 37.1 MB
「方法二」- 双指针交换 72 ms(战胜87.23%) 37.2 MB
「方法三」- 双指针替换后清零...左右两边都往中间移动;
需要移动左右两头的问题都可以考虑双指针;
相同情况下两遍距离越远越好;
区域受限于较短边的高度;
所以让较矮的那边的指针往内移动;
一直以上面的规则移动知道两个指针重合;
解题代码