厦门市建设质量安全协会网站,wordpress把所有东西导出,seo 网站两个ip,wordpress主题绑定域名283.移动零
283. 移动零https://leetcode.cn/problems/move-zeroes/
给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。
请注意 #xff0c;必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nu…283.移动零
283. 移动零https://leetcode.cn/problems/move-zeroes/
给定一个数组 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
思路
做这道题目之前大家可以做一做27.移除元素https://leetcode.cn/link/?targethttps%3A%2F%2Fprogrammercarl.com%2F0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
这道题目使用暴力的解法可以两层for循环模拟数组删除元素也就是向前覆盖的过程。
双指针法在数组移除元素中可以达到O(n)的时间复杂度刷题之Leetcode27题(超级详细)-CSDN博客里已经详细讲解了那么本题和移除元素其实是一个套路。
相当于对整个数组移除元素0然后slowIndex之后都是移除元素0的冗余元素把这些元素都赋值为0就可以了。
代码如下
public void moveZeroes(int[] nums) {int slow 0;for (int fast 0; fast nums.length; fast) {if (nums[fast] ! 0) {nums[slow] nums[fast];}}// 后面的元素全变成 0for (int j slow; j nums.length; j) {nums[j] 0;}}