質問 26 と 80 は、順序付けられた配列内の重複の削除に関するものです。
このような問題については、次のことを考慮する必要があります。
- k 個の同一の番号が保持されるため、最初の k 個の番号を直接保持できます。
- 後続の数値については、それを保持するための前提条件は、現在書き込まれている位置の前の k 番目の要素と比較し、それらが同じでない場合は保持することです。
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i=0
for num in nums:
if i<1 or nums[i-1]!=num:
nums[i]=num
i+=1
return i
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
i=0
for num in nums:
if i<2 or nums[i-2]!=num:
nums[i]=num
i+=1
return i
質問 27 は、順序なし配列内の指定された要素を削除するというものです。
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i=0
for num in nums:
if num!=val:
nums[i]=num
i+=1
return i