自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 325

原创 牛客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 304

原创 20200903纪念品笔试题

题目描述: 李华顺利到达了巴黎,李华遇到了许多心动的纪念品想带回家,但是他又不想自己太累,而且他买纪念品也有相应的预算k, 现给出他心动的纪念品清单:总共n件,其中每件都各有其价格price,重量weight,心动值v(1-5),需要注意在心动值不同的情况下, 李华优先选心动值大的纪念品,若心动值相同,李华会优先选择比较便宜的纪念品,具体见样例。同时给出李华在保证不累的情况下, 最多能拿的物品重量m,在不超过预算并且保证不累的情况下,李华最多可以带几件纪念品回家? 输入描述: 第一行三个正整数,分别为:纪念

2020-09-05 23:42:54 809 1

原创 动态规划(转化为二维数组)问题专栏(专治各种不会)

注:动态规划的题目是看了忘,忘了看,感觉没掌握核心,所以我决定要写一个专栏来详细的解出动态规划的题目,旨在记录自己的心路历程,同时也帮助和我一样对动规有困难的同学。如果有同学一样和我一样对动态规划不是很了解,或者有大佬提建议,大家都可以在下方留言,谢谢大家! 主要有以下题目(慢慢增加): 个数 题目 1 力扣64. 最小路径和 2 力扣64. 最小路径和 3 力扣64. 最小路径和 4 力扣64. 最小路径和 5 力扣64. 最小路径和 6 力扣64. 最小路径和 7

2020-09-04 18:27:38 635

原创 深度优先搜索专栏(专治各种不会)

此文章旨在将同类型的深度优先搜索题目全部整合在一起,解决深度优先搜索的题型 力扣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 232

原创 力扣刷题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 295

转载 什么是Cache?解释他的命中率.

这里记录我找到的网上比较写的比较好的文章,以免下次再找 篇一 “Cache”是什么 Cache(即高速缓冲存储器(Cache Memory),是我们最常听到的一个词了。在老鸟们眼中,这个词或许已没有再谈的必要,因为他们对Cache从设计的必要性到工作原理、工作过程等等都已了如指掌了;而对菜鸟朋友们而言,这些未必就很清楚。那么,它们到底是指的什么呢?不用急,下面就请随笔者一起来全面认识Cache。 为什么要设计Cache 我们知道,电脑的内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频(对于雷

2020-09-03 10:38:06 6848 2

原创 力扣每日打卡9月1日打卡(486. 预测赢家,中等)动态规划,未做出,看懂

方法:动态规划 1、定义一个二维数组dp[ i ][ j ] ,二维数组i, j 表示当数组剩下nums[ i ]到nums[ j ]时,当前玩家与另一个玩家分数之差的最大值,当前玩家不一定为先手 2、当i > j 时才有意义,所以表格的下半部分为0 3、当i = j 时,仅剩一个数字,则当前玩家只能拿这个数字,则dp[ i ][ i ] = nums[ i ] 4、当i < j 时,当前的玩家可以选择nums[ i ] 或者 nums[ j ] ,然后轮到另一个玩家在剩余数组中选择数字。在.

2020-09-01 17:27:59 232

原创 力扣每日打卡8月27日打卡(332. 重新安排行程,中等)图,邻接表,递归,未做出,看懂

邻接表+递归 我的思路: 在python中要引入import collections 步骤: 1先将图存入邻接表 2将邻接表中的元素进行排序 3依次按键取出值,在将值作为下一次的键进行递归, 4最后将遍历过的值从后往前依次加入到列表里 核心思想–深度搜索+回溯 大佬思路: # 首先先把图的邻接表存进字典,然后对字典的value进行排序 # 然后从’JFK’开始深搜,每前进一层就减去一条路径, # 直到某个节点不存通往其他节点的路径时,说明该节点就为此次行程的终点 # 需要跳出while循环进行回溯,返回到.

2020-08-27 16:18:19 354

原创 力扣每日打卡8月26日打卡(17. 电话号码的字母组合,中等)回溯法,未做出,看懂

方法:回溯法 实现原理:回溯算法用于寻找所有的可行解,如果发现一个解不可行,则会舍弃不可行的解。在这道题中,由于每个数字对应的每个字母都可能进入字母组合,因此不存在不可行的解,直接穷举所有的解即可。 实际代码:创建第两个数组,第一个数组list1是临时数组,第二个数组lsit2是return数组。 一边遍历所有数字,一边放入第一个数组,等遍历所有的数字,统一加进第二个数组。第一遍查找完所有字母后,pop最后一个元素,更换元素再输出 假设输出为‘234’ list1 ->‘a’ ->‘a’,‘d.

2020-08-26 11:55:43 208

原创 力扣每日打卡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 189

原创 力扣每日打卡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 7 s[ j - i ] = 4-4 5-4 6-4 7-4 0 1 2 3 class Solution: def re.

2020-08-24 20:12:41 241

原创 力扣每日打卡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 225

原创 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 277

原创 力扣每日打卡8月14日打卡(20. 有效的括号,简单)思路:用列表模拟栈 成功自己做出来

题目: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 来源:力扣(LeetCod

2020-08-20 19:17:53 233

原创 力扣每日打卡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 207

原创 力扣每日打卡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 281

原创 力扣每日打卡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 209

原创 力扣每日打卡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 250

原创 力扣每日打卡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 234

原创 力扣每日打卡8月11日打卡(130. 被围绕的区域(中等))

给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。 找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例: X X X X X O O X X X O X X O X X 运行你的函数后,矩阵变为: X X X X X X X X X X X X X O X X 解释: 被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在水平或垂直方向

2020-08-11 21:46:17 237

原创 力扣每日打卡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 310

原创 力扣每日打卡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 307

原创 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 979

原创 8月8日 力扣练习(Python3):第99:恢复二叉搜索树(困难)

链接:https://leetcode-cn.com/problems/recover-binary-search-tree arr[0] = 1 arr[0] = 4 node.val (3) < arr[0].val(4) 进入if (not arr[1]:)循环 arr[1] = 4 , arr[2] = 3 arr[0] = 3 node.val (2) < arr[0].val(3) 不满足if (not arr[1]:)循环 , arr[2] = 2 所以是 arr..

2020-08-08 16:38:44 198

原创 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 337

原创 8月7日 力扣练习(Python3):第101题:对称二叉树

链接:https://leetcode-cn.com/problems/symmetric-tree 方法一:递归 编程实现要点: 递归终止判断条件 if not left and not right:(如果两者都为空,返回True) return True if not (left and right) :(如果一方为空,返回 False) return False if left.val != right.val:(如果两者值不相等,返回 False) return False 具体实现: # De.

2020-08-07 21:47:14 281

原创 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 318

原创 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 257

原创 8月5日 力扣练习(Python3):第145题:二叉树的后序遍历

给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 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 169

原创 8月5日 力扣练习(Python3):第94题:二叉树的中序遍历

给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 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 253

原创 8月5日 力扣练习(Python3):第144题:二叉树的前序遍历

力扣练习(Python3):栈类:第144题:二叉树的前序遍历:给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 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 233

原创 牛客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 149

原创 力扣每日打卡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 197

原创 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 3035

空空如也

空空如也

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

TA关注的人

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