给定一个数组,它的第 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)
有更加好的思路,或者解题方法评论区留言谢谢