算法——数组代码
力扣代码。
学习过程
先看了labuladong的基本原理。
然后看了相关一些视频:
滑动窗口【基础算法精讲 03】_哔哩哔哩_bilibili
基本原理
没啥。
力扣代码
167. 两数之和
class Solution(object):def twoSum(self, numbers, target):""":type numbers: List[int]:type target: int:rtype: List[int]"""index1 = 0index2 = len(numbers) - 1while index1 < index2:if numbers[index1] + numbers[index2] > target:index2 = index2 - 1else:if numbers[index1] + numbers[index2] < target:index1 = index1 + 1else:return [index1+1,index2+1]return None
209. 长度最小的子数组
class Solution(object):def minSubArrayLen(self, target, nums):""":type target: int:type nums: List[int]:rtype: int"""left = 0n = len(nums)ans = n + 1s = 0for right, x in enumerate(nums):s += xwhile s >= target:ans = min(ans,right-left+1)s -= nums[left]left += 1return ans if ans<=n else 0
713. 乘积小于k的子数组
class Solution(object):def numSubarrayProductLessThanK(self, nums, k):""":type nums: List[int]:type k: int:rtype: int"""ans = 0prod = 1left = 0if k <=1:return 0for right, x in enumerate(nums):prod *= xwhile prod >= k:prod /= nums[left]left += 1ans += right - left + 1return ans