先簡單回顧一下,今天預計分析兩個題目:
題目敘述:
測資的 Input/Output
題目如果給你 [1,1,2] 那你要把多餘的元素刪掉,並回傳不重複元素個數
python 實作如下:
- python 實作
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
# k 會用來計算不重複元素的位置
k = 1
# j 會走得比較快,把不重複的值,丟給 k 位置儲存
for j in range(1, len(nums)):
# 判斷第 j 個位置跟第 j-1 的位置,是否不相等,若不相等,就把 nums[k] 儲存 nums[j],並 k 向右移動
if nums[j] != nums[j - 1]:
nums[k] = nums[j]
k += 1
return k
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
j = 1
while j < len(nums):
if nums[j] == nums[j-1]:
nums.pop(j)
j -= 1
j += 1
return len(nums)
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
nums[:] = sorted(set(nums))
return len(nums)
題目敘述:
題目會給你一個從小排序到大的資料,跟希望找到的兩數相加的和 (target)
你需要找出哪兩個位置的值,相加會等於 target
哪兩個位置的值相加為 target,只會有一種答案
同一個元素不能加兩次
測資的 Input/Output
題目會給你一個遞增的數列,跟希望找到的目標總和 (target)
回傳一個 list 結構的資料,裡面要包含相加會等於 target 的 index
python 實作
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
left = 0
right = len(numbers)-1
while not numbers[left] + numbers[right] == target:
while numbers[left] + numbers[right] > target and left != right:
right -= 1
while numbers[left] + numbers[right] < target and left != right:
left += 1
return [left+1,right+1]