自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 二叉树遍历非递归

preimport typingclass Solution: def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: if not root: return [] stack = [root] ans = [] while stack: cur = stack.pop() a

2022-03-03 14:52:42 338

原创 124. 二叉树中的最大路径和

124. 二叉树中的最大路径和import typingclass Solution: def __init__(self): self.ans = float('-inf') def maxPathSum(self, root) -> int: def helper(root): if not root: return 0 left = max(helper(root

2022-03-03 13:38:09 265

原创 买卖股票的最佳时机

买卖股票的最佳时机1class Solution: def maxProfit(self, prices: List[int]) -> int: dp = [[-1] * 2 for _ in range(len(prices))] dp[0][0] = 0 dp[0][1] = -prices[0] for i in range(1, len(prices)): dp[i][0] = max(dp[i-

2022-03-02 16:44:32 267

原创 56. 合并区间

56. 合并区间class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: ans = list() intervals.sort(key = lambda x : x[0]) start, end = intervals[0][0], intervals[0][1] for i in range(1,len(intervals)

2022-02-24 15:36:06 497

原创 刷题记录:241. 为运算表达式设计优先级

241. 为运算表达式设计优先级class Solution: def diffWaysToCompute(self, expression: str) -> List[int]: res = list() for idx, symbol in enumerate(expression): if symbol == '+' or symbol == '-' or symbol == '*': leftP

2022-02-23 19:59:40 91

原创 刷题记录:34. 在排序数组中查找元素的第一个和最后一个位置

34. 在排序数组中查找元素的第一个和最后一个位置class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { if(nums.empty()) return vector<int>{-1, -1}; int left = left_bound(nums, target); if(left == -1) r

2022-02-21 11:47:03 125

原创 刷题记录:19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode *p1 = head, *p2 = head; for(int i = 0; i < n; ++i){ p1 = p1->next; } if(p1 == nullptr){

2022-02-10 23:03:33 645

原创 刷题记录:10. 正则表达式匹配

10. 正则表达式匹配class Solution: def isMatch(self, s: str, p: str) -> bool: size_s, size_p = len(s), len(p) match = [[False for _ in range(size_p + 1)] for _ in range(size_s + 1)] for i in range(size_s + 1): for j in

2022-02-10 15:59:31 460

原创 刷题记录:752. 打开转盘锁

752. 打开转盘锁from queue import Queueclass Solution: def openLock(self, deadends: List[str], target: str) -> int: def turnUp(s, idx): if s[idx] == '9': s = s[:idx] + '0' + s[idx+1:] else:

2022-02-07 21:32:30 426

原创 刷题记录:70. 爬楼梯

70. 爬楼梯class Solution: def climbStairs(self, n: int) -> int: if n <= 2: return n pre, cur = 1, 2 for i in range(3,n+1): pre, cur = cur, pre + cur return cur

2022-02-03 19:49:16 739

原创 刷题记录:5. 最长回文子串

5. 最长回文子串class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) l, r = 0, 0 dp = [[False] * n for _ in range(n)] for i in range(n): dp[i][i] = True for j in range(1,n):

2022-02-03 14:44:54 480

原创 刷题记录:3. 无重复字符的最长子串

3. 无重复字符的最长子串class Solution: def lengthOfLongestSubstring(self, s: str) -> int: cur_str = set() cur, longest = 0, 0 l, r, n = 0, 0, len(s) while r < n: if s[r] not in cur_str: cur_str.

2022-02-03 14:14:20 365

原创 刷题记录:2. 两数相加

2. 两数相加# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: p

2022-02-03 13:41:44 470

原创 刷题记录:打家劫舍123

打家劫舍1打家劫舍2打家劫舍31class Solution: def rob(self, nums): n = len(nums) if n == 1: return nums[0] pre, nxt = nums[0], max(nums[0], nums[1]) for i in range(2, n): pre, nxt = nxt, max(pre + nums[i],

2022-02-01 02:41:19 409

原创 刷题记录:647. 回文子串

647. 回文子串class Solution: def countSubstrings(self, s: str) -> int: n = len(s) dp = [[False] * n for _ in range(n)] count = n for i in range(n): dp[i][i] = True for j in range(1,n):

2022-02-01 02:04:08 454

原创 刷题记录:1143. 最长公共子序列

1143. 最长公共子序列常规动态规划class Solution: def longestCommonSubsequence(self, text1: str, text2: str) -> int: n1, n2 = len(text1), len(text2) dp = [[0] * (n2 + 1) for _ in range(n1 + 1)] for i in range(1, n1 + 1): for

2022-01-30 23:28:23 713

原创 刷题记录:416. 分割等和子集

416. 分割等和子集class Solution: def canPartition(self, nums: List[int]) -> bool: target = sum(nums) / 2 if target != int(target): return False n = len(nums) target = int(target) dp = [[False]

2022-01-30 21:28:24 568

原创 刷题记录:322. 零钱兑换12

322. 零钱兑换很常规的动规class Solution: def coinChange(self, coins: List[int], amount: int) -> int: dp = [float('inf') for _ in range(amount + 1)] dp[0] = 0 # print(dp) for i in range(1,amount+1): for coin in coi

2022-01-30 12:15:12 382

原创 刷题记录:538. 把二叉搜索树转换为累加树

538. 把二叉搜索树转换为累加树# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def convertBST(self, root:

2022-01-27 16:53:34 302

原创 刷题记录:347. 前 K 个高频元素

347. 前 K 个高频元素1 暴力计数+排序 O(nlogn)class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: count = collections.defaultdict(int) for val in nums: count[val] += 1 return sorted(coun

2022-01-23 16:46:01 358

原创 刷题记录:437. 路径总和 III

437. 路径总和 III方法1 爆搜 竟然不超时!~class Solution: def pathSum(self, root: TreeNode, targetSum: int) -> int: count = 0 def dfs(root, cur_sum): if not root: return if cur_sum + root.val == targetSum:

2022-01-22 21:58:33 1576

原创 刷题记录:312. 戳气球

312. 戳气球class Solution: def maxCoins(self, nums: List[int]) -> int: nums_extra = [1] + nums + [1] size = len(nums_extra) dp = [[0] * size for _ in range(size)] for len_of_sec in range(2, size): # enumerate differen

2022-01-22 20:25:03 272

原创 刷题记录:560. 和为 K 的子数组

560. 和为 K 的子数组class Solution: def subarraySum(self, nums: List[int], k: int) -> int: HashMap = {0:1} n = len(nums) count, pre = 0, 0 for i in range(n): pre += nums[i] if pre - k in HashMap:

2022-01-20 21:41:10 670

原创 刷题记录:543. 二叉树的直径

543. 二叉树的直径# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def diameterOfBinaryTree(self, r

2022-01-20 19:43:06 197

原创 刷题记录:删除无效的括号

删除无效的括号考虑到题目要求求出所有最长组合,考虑用暴力搜索尝试每一种情况,并在特定情况进行剪枝。import copyclass Solution: def removeInvalidParentheses(self, s): l_count, l_remove = 0, 0 r_count, r_remove = 0, 0 for i in s: if i == '(': l_count

2022-01-19 12:50:30 548

原创 刷题记录:反转二叉树

反转二叉树class Solution: def invertTree(self, root): def swap(node): if node == None: return node.right, node.left = node.left, node.right swap(node.left) swap(node.right) swa

2022-01-14 20:56:58 106

原创 刷题记录:207. 课程表

207. 课程表考查是否有环class Solution: def canFinish(self, numCourses, prerequisites): HashMap = {} for prerequisite in prerequisites: start, end = prerequisite[1], prerequisite[0] if start not in HashMap:

2022-01-14 20:06:03 101

原创 刷题记录:最大正方形

最大正方形class Solution: def maximalSquare(self, matrix): m, n = len(matrix), len(matrix[0]) # define the DP array dp = [[0] * n for _ in range(m)] # start DP maxArea = float("-inf") for i in range(m):

2022-01-07 20:58:37 103

原创 刷题记录:岛屿数量

岛屿数量class Solution: def numIslands(self, grid): m, n = len(grid), len(grid[0]) isUsed = [[False] * n for _ in range(m)] # print(isUsed) directions = [[1, 0], [-1, 0], [0, -1], [0, 1]] Islands = 0 def df

2022-01-07 20:57:11 350

原创 刷题记录:每日温度

每日温度class Solution: def dailyTemperatures(self, temperatures: List[int]) -> List[int]: stack = [] # to store the index res = [0] * len(temperatures) for day,temperature in enumerate(temperatures): while stack an

2022-01-07 13:24:28 110

原创 刷题记录:LRU

LRU# jonas 2022.1.6class Doublelist: def __init__(self, key=None, val=None, pre=None, _next=None): # key value pair self.key = key self.val = val # pointer to the pre,next node self.pre = pre self.next

2022-01-06 15:36:18 90

原创 刷题记录:二叉树展开为链表

二叉树展开为链表# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def flatten(self, root: TreeNode) -

2022-01-05 20:06:34 595

原创 刷题记录:单词搜索

单词搜索class Solution: def exist(self, board, word): directions = [[-1, 0], [1, 0], [0, -1], [0, 1]] row, col = len(board), len(board[0]) matrix = [[True] * col for _ in range(row)] ans = False def backtracking(id

2022-01-05 16:56:18 200

原创 刷题记录:颜色分类

颜色分类class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ p0,p1 = 0,0 for index in range(len(nums)): if nums[index] == 0

2022-01-05 13:38:59 626

原创 刷题记录:最小路径和

最小路径和class Solution: def minPathSum(self, grid: List[List[int]]) -> int: dp = copy.deepcopy(grid) for i in range(1,len(grid)): dp[i][0] += dp[i-1][0] for j in range(1,len(grid[0])): dp[0][j] += dp[0][

2022-01-05 11:51:25 157

原创 刷题记录:最大子数组和

最大子数组和class Solution: def maxSubArray(self, nums: List[int]) -> int: if len(nums) == 1: return nums[0] dp = copy.deepcopy(nums) // travese from end to begin ans = nums[-1] for i in range(len(nums)

2022-01-04 15:30:28 259

原创 刷题记录:全排列

全排列class Solution: def permute(self, nums: List[int]) -> List[List[int]]: ans = [] cur_comb = [] size_nums = len(nums) // base case if len(nums) == 1: return [nums] elif not nums:

2022-01-04 14:49:39 270

原创 刷题记录:组合总和

组合总和class Solution: def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: ans = [] combination = [] cur_total = 0 candidates.sort() // print(candidates) def backtracking(idx

2022-01-04 14:27:34 186

原创 刷题记录:搜索旋转排序数组

搜索旋转排序数组class Solution: def search(self, nums: List[int], target: int) -> int: p_left,p_right = 0,len(nums)-1 while p_left <= p_right: mid = (p_right - p_left)//2 + p_left if nums[mid] == target:

2022-01-03 19:48:41 172

原创 刷题记录:最长有效括号

最长有效括号class Solution: def longestValidParentheses(self, s: str) -> int: if not s: return 0 res = 0 stack = [-1] # travesal the list for i in range(len(s)): if s[i] == "(":

2021-12-30 15:00:48 214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除