網(wǎng)站續(xù)費(fèi)模版怎么優(yōu)化網(wǎng)站性能
數(shù)組_移除元素
- 一、leetcode-27
- 二、題解
- 1.代碼
- 2.思考
一、leetcode-27
移除元素
給你一個(gè)數(shù)組 nums 和一個(gè)值 val,你需要 原地 移除所有數(shù)值等于 val 的元素。元素的順序可能發(fā)生改變。然后返回 nums 中與 val 不同的元素的數(shù)量。
假設(shè) nums 中不等于 val 的元素?cái)?shù)量為 k,要通過(guò)此題,您需要執(zhí)行以下操作:
- 更改 nums 數(shù)組,使 nums 的前 k 個(gè)元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
- 返回 k。
樣例輸入:nums = [3,2,2,3], val = 3
樣例輸出: 2, nums = [2,2,,]
解釋:你的函數(shù)函數(shù)應(yīng)該返回 k = 2, 并且 nums 中的前兩個(gè)元素均為 2。
你在返回的 k 個(gè)元素之外留下了什么并不重要(因此它們并不計(jì)入評(píng)測(cè))。
二、題解
1.代碼
class Solution {
public:int removeElement(vector<int>& nums, int val) {int slow=0,fast=0;while(fast<nums.size()){if(nums[fast]!=val){nums[slow++]=nums[fast];}fast++;}return slow;}
};
2.思考
使用快慢指針不需要每次都把后面所有的元素往前移,這樣只要遍歷一次
當(dāng)快指針等于val,什么都不做直接后移fast
當(dāng)快指針不等于val,把值賦給慢指針,快慢指針一起后移