給定乙個陣列 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...