【一天一道Leetcode】移除元素

本篇推文共計(jì)2000個(gè)字,閱讀時(shí)間約3分鐘。
01
題目描述

題目描述:
給你一個(gè)數(shù)組nums和一個(gè)值val,你需要原地移除所有數(shù)值等于val的元素,并返回移除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須僅使用O(1)額外空間并原地修改輸入數(shù)組。
元素的順序可以改變。你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
示例 1:
輸入:nums = [3,2,2,3], val = 3
輸出:2, nums = [2,2]
解釋:函數(shù)應(yīng)該返回新的長(zhǎng)度 2,
并且 nums 中的前兩個(gè)元素均為 2。
你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
例如,函數(shù)返回的新長(zhǎng)度為 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],
也會(huì)被視作正確答案。提示:
1. 0 <= nums.length <= 100
2. 0 <= nums[i] <= 50
3. 0 <= val <= 100
02
思路和方法
由題意最后只用輸出新數(shù)組的長(zhǎng)度
我們可以利用遍歷從數(shù)組第一個(gè)元素進(jìn)行遍歷,依次對(duì)比當(dāng)前數(shù)組元素是否與給定的目標(biāo)值相同,將不同的數(shù)組元素往數(shù)組前面移動(dòng)。
類似于篩選,將符合條件的元素,排到隊(duì)伍前面。
最后輸出與給定目標(biāo)值元素不同的那部分?jǐn)?shù)組長(zhǎng)度。
例如我們用一個(gè)例子來直觀地說明。
初始數(shù)組num=[1,1,2,2,3,3],給定的值為3
設(shè)定1個(gè)起點(diǎn)進(jìn)行遍歷
i=0,
設(shè)定1個(gè)節(jié)點(diǎn),
node=0
用于把和給定目標(biāo)值不相同的數(shù)組元素往數(shù)組前面移動(dòng),
如果num[i]!=val
則令num[node]=num[i]
利用這樣的方式,將同一個(gè)數(shù)組與給定目標(biāo)值不同的元素都往前移動(dòng)。
我們的代碼輸出為:
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
node=0
for i in range(0,len(nums)):
if nums[i]!=val:
nums[node]=nums[i]
node+=1
i+=1
return node
【年終總結(jié)】你好2021,再見2020。

【秋招紀(jì)實(shí)錄】一篇特別正經(jīng)的【騰訊】求職經(jīng)驗(yàn)分享

【一天一道Leetcode】笨階乘
你與世界
只差一個(gè)
公眾號(hào)
評(píng)論
圖片
表情

