leetcode122买卖股票 买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 这里我们只要注意就是比较每一个相邻的极大值和前一个极小值的差的总和就是我们需要的值。 class Solution: def maxProfi...
python第22天 恢复二叉搜索树 二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例 1: 输入: [1,3,null,null,2] 1 / 3 2 输出: [3,1,null,null,2] 3 / 1 2 示例 2: 输入: [3,1,4,null,null,2] 3 / 1 4 / 2 输出: [2,1,4,null,null,3] 2 / 1 4 / 3...
python第22天 不同的二叉搜索树 II 给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。 示例: 输入: 3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 ...
python第20天 二叉树的中序遍历 这里先写一个大家都比较熟悉的递归算法 class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: res = [] def helper(root): if not root: return ...
python练习第19天 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 这个就是通过递归 class Solution: def maxDepth(self, root): “”" :type root: TreeNode :rtype: int ...
python算法第18天 给定一个二叉树,检查它是否是镜像对称的。 关于递归的问题主要就是找到递归公式,这里呢就是左子树和右子树进行的递归 lass Solution(object): def isSymmetric(self, root): if not root: return True def dfs(left,right): i...
python练习第19天 两个相同的树 class Solution: def isSameTree(self, p: TreeNode, q: TreeNode) -> bool: if p == None and q == None: return True if p == None or q == None: return ...
python学习第17天 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 这里涉及到动态匹配和回溯算法,我在学习时候也不太...
python第17天 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所...
算法练习第16天 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所...
leetcode第15天 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 class Solution(object): def isValid(self, s): stack = [] judge = {'()',...
python第13天 最长公共前缀 难度 简单 910 收藏 分享 切换为英文 关注 反馈 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 我们这个问题通过纵向搜索来解决,...
leetcode算法练习13天 罗马数字转整数 难度 简单 822 收藏 分享 切换为英文 关注 反馈 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...
算法练习第11天 合并K个排序链表 难度 困难 515 收藏 分享 切换为英文 关注 反馈 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 今天的题目我没什么思路就大致的参考了解答用C++写了一...
python练习第10天 删除l链表中倒数第n值 这里用了双指针的巧妙运用就是,第一个指针先运动n+1个距离然后使得连两个指针之间的距离为n,然后一起运动使这样的距离保持到末尾这样就找到了那个第n个值 class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: a = head ...
leetcode第十天算法练习 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 这里比较重要的是两点,一个是注意最后两个位数相加仍会超过10导致的进位问题,一个是链表递归方法的运用 class Solution: ...
leetcode第八天python算法链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 快慢指针如果,快指针能追到慢指针就说明有环 class Solution: def hasCycle(self, head: ListNode) -> bool: slow = head quick = head...
leetcode算法练习第7天 删除排序链表中的重复元素 难度 简单 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次 这是一道链表的基础题,考验我们对基础链表功能的应用 class Solution: def deleteDuplicates(self, head: ListNode) -> ListNode: p = head if p==None or p.ne...
python练习第7天 今天的算法比较简单,将两个有序数组合并,一个递归可以解决,不过我看了看我以前的做法,发现java是要比python快一些,不知道是不是差异 class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: res = ListNode(None) node ...
leetcode股票问题,第五天 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [3,3,5,0,0,3,1,4] 输出: 6 解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 =...