Python LeetCode 27 移除元素

2021-09-14 05:18:25 字數 1303 閱讀 4137

給定乙個陣列 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為此時對稱...