移动零

移动零

​ 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

题解

​ 很简单的双指针思路,左指针指向第一个零元素,保证右指针在左指针后面,并指向非零元素,交换左右指针的元素

class Solution {
	public void moveZeroes(int[] nums) {
		int left = 0;
		int right = 0;

		while (left < nums.length && nums[left] != 0)
			left++;
		right = left + 1;
		while (right < nums.length) {
			if (nums[right] != 0) {
				swap(nums, left, right);
				left++;
			}
			right++;
		} 
	}
	
	public void swap(int[] num, int left, int right) {
		int temp = num[left];
		num[left] = num[right];
		num[right] = temp;
	}
}
上一篇:项目随记--二维码、条形码工具类


下一篇:Sping Boot 自定义注解使用示例-自定义方法注解