13-移动零

发布时间:2026/7/31 14:56:05

13-移动零 1.题目描述2.代码 (双指针)1遍历判断条件后交换。左指针指向已排序好的序列中第一个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; } }2列举所有情况数组长度小于等于1直接返回。数组长度大于1情况1左指针0右指针1非0交换后变成情况2左右指针均向右移动。情况2左指针1右指针0左右指针均向右移动。情况3左指针1右指针1左右指针均向右移动。情况4左指针0右指针0右指针向右移动。class Solution { public void moveZeroes(int[] nums) { int nnums.length; if(n1){ return ; } for(int l0,r1;rn;r){ if(nums[l]0 nums[r]!0){ nums[l]nums[r]; nums[r]0; l; }else if(nums[l]0 nums[r]0){ }else{ l; } } } }注以上资源来自力扣(LeetCode)

相关新闻