二级域名网站价格,巴州区建设局网站,比亚迪新型实体企业,云南网站建设是什么283.移动零 题目示例示例1示例2 解题思路快慢指针实现设计 详细代码 题目
给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。
请注意 #xff0c;必须在不复制数组的情况下原地对数组进行操作。
示例
示例1
… 283.移动零 题目示例示例1示例2 解题思路快慢指针实现设计 详细代码 题目
给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。
示例
示例1
输入nums [0,1,0,3,12]
输出[1,3,12,0,0]示例2
输入nums [0]
输出[0]解题思路
快慢指针
题目要求我们将所有的零移动到数组末尾其实等同于将所有非零元素移动到数组开头。我们可以将所有非零元素移动到数组开头然后将之后的元素赋值为零。我们可以定义两个指针快指针和慢指针。快指针找非零元素慢指针指向非零元素要换到的地方。
实现设计
快指针fast和慢指针slow都初始化为0用快指针fast遍历数组找到非零元素将非零元素放到慢指针slow所指向的位置同时慢指针slow后移。当快指针fast遍历数组结束即证明所有非零元素都移动到了数组开头此时慢指针slow指向非零元素的后一位所以我们只需要将慢指针slow到数组末尾的元素全部赋值为0即可
详细代码
class Solution {public void moveZeroes(int[] nums) {//快指针找非零元素int fast0;//慢指针指向非零元素要换到的地方。int slow 0;//遍历快指针fastwhile(fastnums.length){if(nums[fast]!0){//将非零元素放到slow指向的位置nums[slow]nums[fast];slow;}fast;}//遍历结束所有非零元素都在元素开头//slow指向非零元素后一位将slow到最后的元素全部赋值为0for(int islow;inums.length;i){nums[i]0;}}
}