- 博客(35)
- 收藏
- 关注
原创 牛客9.21练习:实现二叉树的前中后遍历(改进中序)
先搞懂二叉树的中序遍历,也就是正常的递归。循序渐进得出二叉树的前中后遍历。# 二叉树的中序遍历class Solution: def threeOrders(self , root ): in_order = [] def dfs(root): if root == None: return None dfs(root.left) # 左 in_
2020-09-21 22:49:55
299
原创 牛客9.21练习:判断链表是否有环(双指针法)
快慢指针的解法, 一个指针走两步 一个指针走一步,如果快指针直接到了null 说明没有环, 如果有环的话 总有一次结果会让快指针和慢指针相等。# class ListNode:# def __init__(self, x):# self.val = x# self.next = None# @param head ListNode类 # @return bool布尔型#class Solution: def hasCycle(self , h
2020-09-21 22:25:57
291
原创 20200903纪念品笔试题
题目描述:李华顺利到达了巴黎,李华遇到了许多心动的纪念品想带回家,但是他又不想自己太累,而且他买纪念品也有相应的预算k,现给出他心动的纪念品清单:总共n件,其中每件都各有其价格price,重量weight,心动值v(1-5),需要注意在心动值不同的情况下,李华优先选心动值大的纪念品,若心动值相同,李华会优先选择比较便宜的纪念品,具体见样例。同时给出李华在保证不累的情况下,最多能拿的物品重量m,在不超过预算并且保证不累的情况下,李华最多可以带几件纪念品回家?输入描述:第一行三个正整数,分别为:纪念
2020-09-05 23:42:54
777
1
原创 动态规划(转化为二维数组)问题专栏(专治各种不会)
注:动态规划的题目是看了忘,忘了看,感觉没掌握核心,所以我决定要写一个专栏来详细的解出动态规划的题目,旨在记录自己的心路历程,同时也帮助和我一样对动规有困难的同学。如果有同学一样和我一样对动态规划不是很了解,或者有大佬提建议,大家都可以在下方留言,谢谢大家!主要有以下题目(慢慢增加):个数题目1力扣64. 最小路径和2力扣64. 最小路径和3力扣64. 最小路径和4力扣64. 最小路径和5力扣64. 最小路径和6力扣64. 最小路径和7
2020-09-04 18:27:38
615
原创 深度优先搜索专栏(专治各种不会)
此文章旨在将同类型的深度优先搜索题目全部整合在一起,解决深度优先搜索的题型力扣200.岛屿数量我的题解:https://blog.youkuaiyun.com/qq_41978942/article/details/108377785力扣题解:https://leetcode-cn.com/problems/number-of-islands/solution/dao-yu-shu-liang-by-leetcode/代码:class Solution: def numIslands(self, gr
2020-09-03 10:59:23
210
原创 力扣刷题9月2日(200. 岛屿数量)笔试题原题,深度优先搜索+递归,关键:将遍历过的岛屿状态变为‘1’
岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[[‘1’,‘1’,‘1’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘0’,‘0’],[‘0’,‘0’,‘0’,‘0’,‘0’]]输出: 1示例 2:输入:[[‘1’,‘1’,‘0’,‘0’,‘0’].
2020-09-03 10:53:07
259
转载 什么是Cache?解释他的命中率.
这里记录我找到的网上比较写的比较好的文章,以免下次再找篇一“Cache”是什么Cache(即高速缓冲存储器(Cache Memory),是我们最常听到的一个词了。在老鸟们眼中,这个词或许已没有再谈的必要,因为他们对Cache从设计的必要性到工作原理、工作过程等等都已了如指掌了;而对菜鸟朋友们而言,这些未必就很清楚。那么,它们到底是指的什么呢?不用急,下面就请随笔者一起来全面认识Cache。为什么要设计Cache我们知道,电脑的内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频(对于雷
2020-09-03 10:38:06
6743
2
原创 力扣每日打卡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
198
原创 力扣每日打卡8月27日打卡(332. 重新安排行程,中等)图,邻接表,递归,未做出,看懂
邻接表+递归我的思路:在python中要引入import collections步骤:1先将图存入邻接表2将邻接表中的元素进行排序3依次按键取出值,在将值作为下一次的键进行递归,4最后将遍历过的值从后往前依次加入到列表里核心思想–深度搜索+回溯大佬思路:# 首先先把图的邻接表存进字典,然后对字典的value进行排序# 然后从’JFK’开始深搜,每前进一层就减去一条路径,# 直到某个节点不存通往其他节点的路径时,说明该节点就为此次行程的终点# 需要跳出while循环进行回溯,返回到.
2020-08-27 16:18:19
333
原创 力扣每日打卡8月26日打卡(17. 电话号码的字母组合,中等)回溯法,未做出,看懂
方法:回溯法实现原理:回溯算法用于寻找所有的可行解,如果发现一个解不可行,则会舍弃不可行的解。在这道题中,由于每个数字对应的每个字母都可能进入字母组合,因此不存在不可行的解,直接穷举所有的解即可。实际代码:创建第两个数组,第一个数组list1是临时数组,第二个数组lsit2是return数组。一边遍历所有数字,一边放入第一个数组,等遍历所有的数字,统一加进第二个数组。第一遍查找完所有字母后,pop最后一个元素,更换元素再输出假设输出为‘234’list1 ->‘a’ ->‘a’,‘d.
2020-08-26 11:55:43
189
原创 力扣每日打卡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
169
原创 力扣每日打卡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
218
原创 力扣每日打卡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
207
原创 8月21日力扣练习(1170. 比较字符串最小字母出现频次,简单)思路:模拟比较
我们来定义一个函数 f(s),其中传入参数 s 是一个非空字符串;该函数的功能是统计 s 中(按字典序比较)最小字母的出现频次。例如,若 s = “dcce”,那么 f(s) = 2,因为最小的字母是 “c”,它出现了 2 次。现在,给你两个字符串数组待查表 queries 和词汇表 words,请你返回一个整数数组 answer 作为答案,其中每个 answer[i] 是满足 f(queries[i]) < f(W) 的词的数目,W 是词汇表 words 中的词。示例 1:输入:queri
2020-08-21 16:51:55
246
原创 力扣每日打卡8月14日打卡(20. 有效的括号,简单)思路:用列表模拟栈 成功自己做出来
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true来源:力扣(LeetCod
2020-08-20 19:17:53
212
原创 力扣每日打卡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
187
原创 力扣每日打卡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
255
原创 力扣每日打卡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
191
原创 力扣每日打卡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
228
原创 力扣每日打卡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
223
原创 力扣每日打卡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
220
原创 力扣每日打卡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
296
原创 力扣每日打卡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
279
原创 8月8日 牛客竞赛(Python3):1、石头、剪刀、布I;2、牛牛排队;3、石头、剪刀、布II
链接:https://ac.nowcoder.com/acm/contest/6908/C题目描述牛牛为了让牛妹崇拜他,决定和牛妹进行石头剪刀布游戏。当然,普通的石头剪刀布根本吸引不到牛妹,也无法展现牛牛高超的能力,所以牛牛想起了他在一本漫画中看到的规则,游戏规则如下:两个人进行石头剪刀布大战,开始时会发给每个人n张牌,然后两人进行n次剪刀石头布大战,每一次两人分别选择自己的n张牌中的一张,打出,每张牌只能用一次。牛牛每赢一局会+1分,每输一局会-1分,每平局一局不加分也不减分。牛牛这个游戏已经
2020-08-08 22:46:12
916
原创 8月8日 力扣练习(Python3):第99:恢复二叉搜索树(困难)
链接:https://leetcode-cn.com/problems/recover-binary-search-treearr[0] = 1arr[0] = 4 node.val (3) < arr[0].val(4) 进入if (not arr[1]:)循环 arr[1] = 4 , arr[2] = 3arr[0] = 3 node.val (2) < arr[0].val(3) 不满足if (not arr[1]:)循环 , arr[2] = 2所以是 arr..
2020-08-08 16:38:44
176
原创 8月7日 力扣练习(Python3):第112:路径总和题///注意最后是 self.方法
DFS首先是 DFS 解法,该解法的想法是一直向下找到叶子节点,如果到叶子节点时sum == 0,说明找到了一条符合要求的路径。当题目中提到了叶子节点时,正确的做法一定要同时判断节点的左右子树同时为空才是叶子节点。方法一:递归:深度优先搜索编程实现要点:注意最后是 self.方法return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)递归终止判断条件:i.
2020-08-07 23:15:46
311
原创 8月7日 力扣练习(Python3):第101题:对称二叉树
链接:https://leetcode-cn.com/problems/symmetric-tree方法一:递归编程实现要点:递归终止判断条件if not left and not right:(如果两者都为空,返回True)return Trueif not (left and right) :(如果一方为空,返回 False)return Falseif left.val != right.val:(如果两者值不相等,返回 False)return False具体实现:# De.
2020-08-07 21:47:14
259
原创 8月7日 力扣练习(Python3):第104题:二叉树的最大深度
方法一:迭代编程实现要点:具体实现:root.val = 3 时, 进入 right_height = self.maxDepth(root.right)) 【注释:root.right = 20】进入1递归:root.val = 20时,进入 right_height = self.maxDepth(root.right)) 【注释:root.right = 7】进入2递归:root.val = 7时,进入 right_height = self.maxDepth(root.ri.
2020-08-07 20:46:13
302
原创 8月6日 力扣练习(Python3):第102题:二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:题目链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal参考链接:https://blog.youkuaiyun.com/qq_20011607/article/details/89142173(方法三)方法一:迭代编程实现要点:建立临时栈:queue(维护从上到下层序的遍历)[3,9,20,15,7]建立输出数组:res
2020-08-06 21:15:03
232
原创 8月5日 力扣练习(Python3):第145题:二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xebrb2/方法一:递归知识点:二叉树根节点的值:root.val二叉树的左子树:root.left二叉树的右子树:root.right# Definition for a binary tree node.# class TreeNo
2020-08-05 16:56:51
156
原创 8月5日 力扣练习(Python3):第94题:二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xecaj6/方法:递归知识点:二叉树根节点的值:root.val二叉树的左子树:root.left二叉树的右子树:root.right# Definition for a binary tree node.# class TreeNode
2020-08-05 16:48:29
226
原创 8月5日 力扣练习(Python3):第144题:二叉树的前序遍历
力扣练习(Python3):栈类:第144题:二叉树的前序遍历:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xeywh5/主要方法:递归知识点:二叉树根节点的值:root.val二叉树的左子树:root.left二叉树的右子树:root.right# Definition for a
2020-08-05 16:29:12
214
原创 牛客8月4日每日刷题《剑指offer》变态跳台阶:
剑指offer:链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387?toCommentId=6660743[编程题]变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。大佬解释:到达1阶台阶只有1种可能,到达2阶台阶
2020-08-04 22:10:38
134
原创 力扣每日打卡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
174
原创 python运行过程出不了结果
使用过程出现 ImportError:Importing the multiarray numpy extension module failed. Most likely you are trying to import a fail注意,这种情况是第二次安装python或者3,4…次,第一次安装出现的不是这种解决方法,请出门左转。解决方法:由于原来安装过python,所以出现了重复的库,...
2019-03-26 23:13:28
2981
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅