給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。python
設計一個算法來計算你所能獲取的最大利潤。你能夠儘量地完成更多的交易(屢次買賣一支股票)。算法
注意:你不能同時參與多筆交易(你必須在再次購買前出售掉以前的股票)。數組
示例 1:app
輸入: [7,1,5,3,6,4] 輸出: 7 解釋: 在第 2 天(股票價格 = 1)的時候買入,在第 3 天(股票價格 = 5)的時候賣出, 這筆交易所能得到利潤 = 5-1 = 4 。 隨後,在第 4 天(股票價格 = 3)的時候買入,在第 5 天(股票價格 = 6)的時候賣出, 這筆交易所能得到利潤 = 6-3 = 3 。
示例 2:函數
輸入: [1,2,3,4,5] 輸出: 4 解釋: 在第 1 天(股票價格 = 1)的時候買入,在第 5 天 (股票價格 = 5)的時候賣出, 這筆交易所能得到利潤 = 5-1 = 4 。 注意你不能在第 1 天和第 2 天接連購買股票,以後再將它們賣出。 由於這樣屬於同時參與了多筆交易,你必須在再次購買前出售掉以前的股票。
示例 3:設計
給定一個整數數組,判斷是否存在重複元素。 若是任何值在數組中出現至少兩次,函數返回 true。若是數組中每一個元素都不相同,則返回 false。 示例 1: 輸入: [1,2,3,1] 輸出: true 示例 2: 輸入: [1,2,3,4] 輸出: false 示例 3: 輸入: [1,1,1,3,3,4,3,2,4,2] 輸出: true
利用元祖去重,比長度
class Solution: def containsDuplicate(self, nums: List[int]) -> bool: return len(nums) != len(set(nums))
給定兩個有序整數數組 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成爲一個有序數組。code
說明:排序
示例:索引
```
輸入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3內存
輸出: [1,2,2,3,5,6]
```
最大的問題是在原數據上修改,其餘問題應不大
class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead. """ start_nums1 = nums1[:m] nex_nums1 = nums2[:n] nums1.clear() for a in start_nums1: nums1.append(a) for b in nex_nums1 : nums1.append(b) nums1.sort()
給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。若是目標值不存在於數組中,返回它將會被按順序插入的位置。
你能夠假設數組中無重複元素。
示例 1:
輸入: [1,3,5,6], 5 輸出: 2
示例 2:
輸入: [1,3,5,6], 2 輸出: 1
示例 3:
輸入: [1,3,5,6], 7 輸出: 4
示例 4:
輸入: [1,3,5,6], 0 輸出: 0
跟着題目講解走,咱們先要實現, 1.這個值再列表中,這個值插入後就是原先相同值的索引 2,這個值不在列表中 ⑴列表中的值有比這個大的,這個值插入就是剛恰好比他大的值的索引 ⑵列表中的值沒有有比這個大的,這個值插入就在末尾,末尾索引能夠爲len(列表)
class Solution: def searchInsert(self, nums: List[int], target: int) -> int: if target in nums: return nums.index(target) else: for a in range(len(nums)): if nums[a] > target: return a break #後面不必進行運行了減小內存 else: return len(nums)
有更加好的思路,或者解題方法評論區留言謝謝