每日一题
qq_41978942
这个作者很懒,什么都没留下…
展开
-
力扣每日打卡9月1日打卡(486. 预测赢家,中等)动态规划,未做出,看懂
方法:动态规划1、定义一个二维数组dp[ i ][ j ] ,二维数组i, j 表示当数组剩下nums[ i ]到nums[ j ]时,当前玩家与另一个玩家分数之差的最大值,当前玩家不一定为先手2、当i > j 时才有意义,所以表格的下半部分为03、当i = j 时,仅剩一个数字,则当前玩家只能拿这个数字,则dp[ i ][ i ] = nums[ i ]4、当i < j 时,当前的玩家可以选择nums[ i ] 或者 nums[ j ] ,然后轮到另一个玩家在剩余数组中选择数字。在.原创 2020-09-01 17:27:59 · 116 阅读 · 0 评论 -
力扣每日打卡8月27日打卡(332. 重新安排行程,中等)图,邻接表,递归,未做出,看懂
邻接表+递归我的思路:在python中要引入import collections步骤:1先将图存入邻接表2将邻接表中的元素进行排序3依次按键取出值,在将值作为下一次的键进行递归,4最后将遍历过的值从后往前依次加入到列表里核心思想–深度搜索+回溯大佬思路:# 首先先把图的邻接表存进字典,然后对字典的value进行排序# 然后从’JFK’开始深搜,每前进一层就减去一条路径,# 直到某个节点不存通往其他节点的路径时,说明该节点就为此次行程的终点# 需要跳出while循环进行回溯,返回到.原创 2020-08-27 16:18:19 · 184 阅读 · 0 评论 -
力扣每日打卡8月26日打卡(17. 电话号码的字母组合,中等)回溯法,未做出,看懂
方法:回溯法实现原理:回溯算法用于寻找所有的可行解,如果发现一个解不可行,则会舍弃不可行的解。在这道题中,由于每个数字对应的每个字母都可能进入字母组合,因此不存在不可行的解,直接穷举所有的解即可。实际代码:创建第两个数组,第一个数组list1是临时数组,第二个数组lsit2是return数组。一边遍历所有数字,一边放入第一个数组,等遍历所有的数字,统一加进第二个数组。第一遍查找完所有字母后,pop最后一个元素,更换元素再输出假设输出为‘234’list1 ->‘a’ ->‘a’,‘d.原创 2020-08-26 11:55:43 · 139 阅读 · 0 评论 -
力扣每日打卡8月25日打卡(491. 递增子序列,中等)未做出,看懂
方法:递归+哈希查重视频题解:https://leetcode-cn.com/problems/increasing-subsequences/solution/gua-he-xin-shou-de-shi-pin-jiang-jie-by-sheldonx-4/class Solution: def findSubsequences(self, nums: List[int]) -> List[List[int]]: # res数组存放最后答案 res .原创 2020-08-25 10:25:08 · 115 阅读 · 0 评论 -
力扣每日打卡8月24日打卡(459. 重复的子字符串,简单)
a b c d a b c d a b c d 0 1 2 3 4 5 6 7 8 9 10 11当循环到d时,i为3时,0与4对比,1与5对比,2与6对比,3与7对比之后4与8对比,5与9对比,6与10对比,7与11对比,循环对比s[ j ] = 4 5 6 7s[ j - i ] = 4-4 5-4 6-4 7-4 0 1 2 3 class Solution: def re.原创 2020-08-24 20:12:41 · 130 阅读 · 0 评论 -
力扣每日打卡8月21日打卡(111. 二叉树的最小深度(对比:二叉树最大深度),简单)
思路:递归+深度优先搜索class Solution: def minDepth(self, root: TreeNode) -> int: # 边界条件 if not root: return 0 if not root.left and not root.right: return 1 min_depth = 10 ** 9 if root..原创 2020-08-21 18:18:53 · 130 阅读 · 0 评论 -
力扣每日打卡8月14日打卡(20. 有效的括号,简单)思路:用列表模拟栈 成功自己做出来
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true来源:力扣(LeetCod原创 2020-08-20 19:17:53 · 103 阅读 · 0 评论 -
力扣每日打卡8月20日打卡(529. 扫雷游戏,中等)dfs 未做出,已理解
方法:深度优先搜索思路:模拟点击,注意边界条件,输入是否合法,判断元素class Solution: def updateBoard(self, board: List[List[str]], click: List[int]) -> List[List[str]]: # 如果board不存在元素,则直接返回 if not board or not board[0]: return board rows, ...原创 2020-08-20 18:12:12 · 110 阅读 · 0 评论 -
力扣每日打卡8月18日打卡(109. 有序链表转换二叉搜索树,中等)未做出来
方法:递归此题难点,1:获得链表的中位数,2:建立一个树 (建立第一个函数是获取中位值,第二个函数是建立树)关键语法 root = TreeNode(mid.val)class Solution: def sortedListToBST(self, head: ListNode) -> TreeNode: # 难点,获得中位数 and 建立一个树 def midLocation(left, right): fast =.原创 2020-08-18 17:06:21 · 162 阅读 · 0 评论 -
力扣每日打卡8月17日打卡(110. 平衡二叉树,简单)未做出来
力扣官方题解:https://leetcode-cn.com/problems/balanced-binary-tree/solution/ping-heng-er-cha-shu-by-leetcode-solution/解题方法:递归大函数是遍历左右子树比较大小abs(height(root.left) - height(root.right))<= 1 (求树与子树之间的差值)and self.isBalanced(root.left) and self.isBalanced(root.原创 2020-08-17 14:54:41 · 122 阅读 · 0 评论 -
力扣每日打卡8月13日打卡(43. 字符串相乘))(还用到字符串相加) 自己写的超时了
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头,除非是数字 0 本身。不能使用任何标准库的大数类型(比如 Big原创 2020-08-13 17:40:09 · 152 阅读 · 0 评论 -
力扣每日打卡8月12日打卡(133. 克隆图(中等))没做出来...
好难,这个题给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。邻接列原创 2020-08-12 20:11:13 · 153 阅读 · 0 评论 -
力扣每日打卡8月11日打卡(130. 被围绕的区域(中等))
给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向原创 2020-08-11 21:46:17 · 164 阅读 · 0 评论 -
力扣每日打卡8月10日打卡(696. 计数二进制子串(简单))
给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。示例 2 :输入: “10101”输原创 2020-08-10 22:44:23 · 184 阅读 · 0 评论 -
力扣每日打卡8月9日打卡(93. 复原IP地址(中等))
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]链接:https://leetcode-cn.com/problems/restore-ip-addresses=================================================原创 2020-08-09 14:55:11 · 160 阅读 · 0 评论 -
力扣每日打卡8月3日打卡( 415 字符串相加)
(从8.3日开始坚持每日打卡)给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-strings使用·python3思路:逆序挨个求和,判断原创 2020-08-03 15:46:38 · 126 阅读 · 0 评论