刪除指定元素並返回刪除後陣列個數

2021-10-23 13:43:46 字數 1525 閱讀 5193

給定乙個陣列 nums?和乙個值 val,你需要原地移除所有數值等於val的元素,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o(1) 額外空間的條件下完成。

元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。

示例 1:

給定 nums = [3,2,2,3], val = 3,

函式應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。

你不需要考慮陣列中超出新長度後面的元素。

示例2:

給定 nums = [0,1,2,2,3,0,4,2], val = 2,

函式應該返回新的長度 5, 並且 nums 中的前五個元素為 0, 1, 3, 0, 4。

注意這五個元素可為任意順序。

你不需要考慮陣列中超出新長度後面的元素。

說明:為什麼返回數值是整數,但輸出的答案是陣列呢?

請注意,輸入陣列是以「引用」方式傳遞的,這意味著在函式裡修改輸入陣列對於呼叫者是可見的。

你可以想象內部操作如下:

nums 是以「引用」方式傳遞的。也就是說,不對實參作任何拷貝

int len = removeelement(nums, val);

在函式裡修改輸入陣列對於呼叫者是可見的。根據你的函式返回的長度, 它會列印出陣列中該長度範圍內的所有元素。

#include

#include

#include

#include

#include

using

namespace std;

class

myclass

int len = nums.

size()

;sort

(nums.

begin()

, nums.

end())

; vector<

int>

::iterator iter = nums.

begin()

;while

(*iter++

!= val && iter != nums.

end())

--iter;

vector<

int>

::iterator it = nums.

erase

(iter)

;while

(*it == val)

return len - nums.

size()

;}};

下面這種做法是最優

int j = nums.

size()

;int i =0;

while

( i < j )

if( nums[i]

== val )

nums[i]

= nums[

--j]

;else

i ++

;return j;

查詢陣列指定元素並刪除

本文 arr.splice arr.findindex item item.id id 1 item 只是引數可以寫成 i 或者 v 都可以 後面的額id是陣列的id,是不能隨便寫的,如果你陣列裡面寫的是id,這裡就寫id,如果陣列裡面寫的是num,那這裡就寫num 後面的id是你想要刪除的元素的i...

簡寫陣列刪除指定元素

注意 很多人誤以為陣列的pop 方法可以刪除指定元素,實則不是這樣,雖然你給他傳參也不會報錯,但是它始終刪除的是陣列中的最後乙個元素。方式一 在array原型物件上新增刪除方法 強調文字 強調文字 加粗文字加粗文字 標記文字 查詢指定的元素在陣列中的位置 array.prototype.indexo...

物件陣列篩選指定元素 刪除指定元素

給乙個陣列物件,再給乙個陣列字串,篩選出包含陣列字串的陣列物件部分 const arr1 const arr2 1,2 const arr3 arr1.filter item arr2.includes item.id arr3為 意思是,arr2中includes包含arr1id的為true,ar...