个人做网站有什么坏处,网站设计风格怎么写,画册专业设计公司,wordpress发送邮件移动零 1. 题目解析2. 讲解算法原理数组划分#xff0c;数组分块#xff08;核心思想#xff09;如何做到 3. 编写代码 1. 题目解析 题目地址#xff1a;点这里 2. 讲解算法原理
数组划分#xff0c;数组分块#xff08;核心思想#xff09; dest一般初始化为-1#x… 移动零 1. 题目解析2. 讲解算法原理数组划分数组分块核心思想如何做到 3. 编写代码 1. 题目解析 题目地址点这里 2. 讲解算法原理
数组划分数组分块核心思想 dest一般初始化为-1
如何做到 首先初始化变量 dest 和 cur分别表示非零元素应该存储的位置和当前元素的位置。初始时dest 被设为-1cur 被设为0。同时获取数组 nums 的长度 n。 进入一个循环循环条件是 cur 小于等于 n。在每一次循环中检查当前元素是否为非零元素。 如果当前元素不为零则将 dest 的值增加 1然后交换位置 dest 和位置 cur 上的元素。这样做的目的是将非零元素移动到数组的前部分保持它们的相对顺序。如果当前元素为零则不进行任何操作继续下一个循环。 这样经过循环遍历后所有的非零元素都会被移动到数组的前部分而零元素会留在数组的后部分。 循环结束后数组 nums 中的非零元素已经被移动到了前部分并保持了它们的相对顺序。而零元素则留在了数组的后部分。 3. 编写代码
void moveZeroes(vectorint nums) {int dest-1;int cur0;int nnums.size()-1;while(curn){if(nums[cur]!0){dest;swap(nums[dest],nums[cur]);}cur;}}