給定乙個陣列 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。
注意這五個元素可為任意順序。
你不需要考慮陣列中超出新長度後面的元素。
solution:(定義首部和尾部兩個指標,當首部指標對應的元素是需要刪除的元素時,和最後乙個元素交換,使尾部指標減1實現刪除元素,如果不需要刪,則將首部指標加1.最後返回last+1即刪除後array的長度)
class
solution
(object):
defremoveelement
(self, nums, val)
:"""
:type nums: list[int]
:type val: int
:rtype: int
"""ifnot nums:
return
0
i, last =0,
len(nums)-1
while i <= last:
if nums[i]
== val:
nums[i]
, nums[last]
= nums[last]
, nums[i]
last -=
1else
: i +=
1return last+
1
solution = solution(
)nums =[1
,2,3
,3,5
,3,7
,3,8
]length = solution.removeelement(nums,3)
print
(nums[
:length]
)
[1, 2, 8, 7, 5]
Python leetcode 2 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
2 兩數相加 Python LeetCode
兩數相加 給定兩個非空鍊錶來代表兩個非負整數,位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8 原因 342 465 807 解法 把鍊錶l1和l2中的數字...
python leetcode 最大回文數
直接暴力求解時間超出,選取manacher演算法 class solution def longestpalindrome self,s t join s 前後插入 是為了防止越界,不需要進行邊界判斷 n len t p 0 n 每一處的回文半徑 c r 0 r為當前訪問到的最右邊的值,c為此時對稱...