#每日一题 力扣27题 移除元素

编程入门 行业动态 更新时间:2024-10-22 23:03:44

前一阵去西藏玩了,停更了几天,现在接着续更。
照例先上题目

题目要求原地修改数组,采用快慢指针法,快指针用于遍历数组,慢指针用于记录有效元素后一位。满指针和快指针之间的元素为有效元素。
起始时,快指针和慢指针都指向第一个元素。在遍历时每当快指针所指元素为val时,说明该元素要被移除,所以快指针向后移,将该元素置于快指针和慢指针之间。当快指针所指元素不为val时,要将该元素置于慢指针之前,所以将快指针的元素放置在慢指针处,慢指针和快指针均向后移。
附上代码:

class Solution {
public:int removeElement(vector<int>& nums, int val) {int p = 0, q = 0;int n = nums.size();for (; p < nums.size(); p++) {if (nums[p] != val) {if (p != q){int temp = nums[q];nums[q++] = nums[p];nums[p] = temp;}else ++q;}else --n;}return n;}
};

代码可以精简一下:

class Solution {
public:int removeElement(vector<int>& nums, int val) {int p = 0, q = 0;for (; p < nums.size(); p++) {if (nums[p] != val) {if (p != q)nums[q] = nums[p];++q;}}return q;}
};

还可以再精简一下!!

class Solution {
public:int removeElement(vector<int>& nums, int val) {int p = 0, q = 0;for (; p < nums.size(); p++) {if (nums[p] != val) {   nums[q++] = nums[p];}}return q;}
};

希望自己的代码风格能越来越精简规范。

更多推荐

移除,元素,力扣

本文发布于:2023-05-28 12:30:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/320928.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:移除   元素   力扣

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!