高階程式設計技術 Python 第九周作業
阿新 • • 發佈:2019-01-28
Move Zeroes (#283)
來源:https://leetcode.com/problems/move-zeroes/description/
題意:
給定一個數組 nums
,編寫一個函式將所有 0
移動到陣列的末尾,同時保持非零元素的相對順序。
示例:
輸入:[0,1,0,3,12]
輸出:[1,3,12,0,0]
分析:
訪問一遍陣列,記錄0的個數tot,並在陣列末尾append上tot個0,最後remove去tot個0。利用list的remove函式功能,每次刪去的都是陣列中的第一個0,不會把末尾的0刪去。
def moveZeroes(self, nums): """ :type nums: List[int] :rtype: void Do not return anything, modify nums in-place instead. """ n = len(nums) tot = 0 for i in range(0, n): if nums[i] == 0: nums.append(0) tot = tot+1 for i in range(0, tot): nums.remove(0)
狀態:
這種方式看起來比較慢,排在leetcode榜的很後面。
Search Insert Position (#35)
來源:https://leetcode.com/problems/search-insert-position/description/
題意:
給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。
你可以假設陣列中無重複元素。
分析:簡單的二分查詢。
def searchInsert(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ l = 0 r = len(nums)-1 while l <= r: mid = int((l+r)/2) if nums[mid] < target: l = mid+1 else: r = mid-1 return l
狀態: