尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

LeetCode 热题100 No.4——移动零

LeetCode 热题100 No.4——移动零 题目描述283. 移动零 - 力扣LeetCode解题思路这道题是双指针的经典问题。用双指针左指针记录非零数字要存放的位置右指针遍历数组遇到非零数就放到左指针位置并左指针右移遍历结束后左指针往后的位置全部赋值为 0实现把所有 0 挪到数组末尾原地修改数组就可以了。代码如下class Solution { public: void moveZeroes(vectorint nums) { int l0; // l指向非零元素该放的位置i遍历整个数组 for(int i0;inums.size();i) { if(nums[i]!0) { nums[l]nums[i]; l; } } // l后面全部填充0 for(int il;inums.size();i) { nums[i]0; } } };时间复杂度O(n)空间复杂度O(1)这道题我一开始想直接删除 0 再 push_back但是 vector 删除元素会移动大量元素效率很差双指针才是正解。
返回列表