- 博客(6)
- 收藏
- 关注
原创 Leetcode 3. 无重复字符的最长子串
class Solution: # 滑动窗口双指针 def lengthOfLongestSubstring(self, s: str) -> int: occ = set() n = len(s) right, res = -1 , 0 for left in range(n): if left != 0: occ.remove(s[left-1])
2022-01-05 10:02:13
3217
原创 剑指Offer 48. 最长不含重复字符的子字符串
class Solution: # hashmap + 动态规划 def lengthOfLongestSubstring(self, s: str) -> int: hashmap = {} tmp, res = 0, 0 for j in range(len(s)): # dict.get(keyname, defaultValue) i = hashmap.get(s[j], -1)
2022-01-05 09:51:14
285
原创 剑指Offer 63. 股票的最大利润
class Solution: # 经典的动态规划dp # 注意题目,是一次买卖,所以可以用一个变量保存当前最小的买入价格 # 空间上可以不用数组,用一个变量保存结果即可 def maxProfit(self, prices: List[int]) -> int: res = 0 cost = float("+inf") # 这是正无穷大 for price in prices: cost
2022-01-05 05:43:20
216
原创 剑指Offer 42. 连续子数组的最大和
class Solution: # 动态规划思想dp + 在原数组上修改 # 注意不是看nums原本里面的值的正负,而是一个个与前一个数相加后的正负 def maxSubArray(self, nums: List[int]) -> int: for i in range(1,len(nums)): nums[i] += max(nums[i-1], 0) return max(nums) ...
2022-01-04 15:25:03
288
原创 堆排序 - python3实现
堆排序算法-python3实现 # 堆化函数-将最大值升到root,即数组最前面的位置,同时在此过程中尽量把大的值向“上”移 # arr-待堆化的数组,n-数组长度,i-堆中当前待比较值的下标 def heapify(arr, n, i): largest = i left = 2*i + 1 right = 2*i + 2 if left < n and arr[largest] < arr[left]: largest = left if right < n and
2021-09-26 07:55:02
303
原创 快速排序 - python3实现
快速排序算法-python实现 # lst-传入列表,i-左边界,j-右边界 def quick_sort(lst, i, j): # 越界退出 if i >= j: return # 选取lst最左侧元素为pivot,将左右边界赋值给low、high指针 pivot = lst[i] low = i high = j while low < high: # 从后往前找一个比pivot小的元素 while low < high and lst[high] >
2021-08-30 22:28:13
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅