283. 移动零
自己的
思路是双指针,右指针用来找非零元素,找到后赋值给左指针,保证左指针的左面都是非零元素。遍历到最后,让左指针本身和右边全为零即可
class Solution { public void moveZeroes(int[] nums) { int i = 0; int j = 0; while(j < nums.length){ if(nums[j] != 0){ nums[i] = nums[j]; i ++; } j ++; } for(;i < nums.length; i ++) nums[i] = 0; } }
官方的
class Solution { public void moveZeroes(int[] nums) { int n = nums.length, left = 0, right = 0; while (right < n) { if (nums[right] != 0) { swap(nums, left, right); left++; } right++; } } public void swap(int[] nums, int left, int right) { int temp = nums[left]; nums[left] = nums[right]; nums[right] = temp; } }
同样是双指针解法,但官方用了交换元素
本文作者:清澈的澈
本文链接:https://www.cnblogs.com/lmc7/p/18095868
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步