欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

283.移动零(java实现)--2种解法(暴力,双指针)LeetCode

时间:2023-07-09
文章目录

题目:解法1:暴力解法2:双指针 题目:

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

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

示例 1:

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

示例 2:

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

提示:

1 <= nums.length <= 10^4
-2^31 <= nums[i] <= 2^31 - 1

进阶:你能尽量减少完成的操作次数吗?

解法1:暴力

public void moveZeroes(int[] nums) { int zero_count=0; for (int i=0;i

时间复杂度:On

空间复杂度:O1

public static void moveZeroes(int[] nums) { int zero_count=0; for (int i=0;i0){ int tmp=nums[i]; nums[i]=0; nums[i-zero_count]=tmp; } } }

时间复杂度:On

空间复杂度:O1

解法2:双指针

public void moveZeroes(int[] nums) { int zero_index=0; for (int i=0;i

时间复杂度:On

空间复杂度:O1

public static void moveZeroes(int[] nums) { int zero_index=0; for (int i=0;i

时间复杂度:On

空间复杂度:O1

public static void moveZeroes(int[] nums) { int zero_index = 0, noZero_index = 0; while (noZero_index < nums.length-1) { if (nums[zero_index] != 0) { zero_index++; } if (nums[noZero_index] == 0) { noZero_index++; } if (noZero_index < zero_index) { noZero_index++; } if (nums[noZero_index] != 0 && noZero_index > zero_index) { nums[zero_index] = nums[noZero_index]; nums[noZero_index] = 0; } } }

时间复杂度:On

空间复杂度:O1

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。