- 博客(112)
- 收藏
- 关注
原创 leetcode93-复原IP地址
有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。
2022-09-16 09:55:30
318
1
原创 leetcode91-解码方法
一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> “1”‘B’ -> “2”…要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数。题目数据保证答案肯定是一个 32 位 的整数。示例 1:输入:s = “12”输出:2。
2022-09-15 19:59:50
279
原创 leetcode86 分隔链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。
2022-09-15 13:58:47
267
原创 Leetcode T1165: 日志分析
MMM 海运公司最近要对旗下仓库的货物进出情况进行统计。目前他们所拥有的唯一记录就是一个记录集装箱进出情况的日志。该日志记录了两类操作:第一类操作为集装箱入库操作,以及该次入库的集装箱重量;第二类操作为集装箱的出库操作。这些记录都严格按时间顺序排列。集装箱入库和出库的规则为先进后出,即每次出库操作出库的集装箱为当前在仓库里所有集装箱中最晚入库的集装箱。出于分析目的,分析人员在日志中随机插入了若干第三类操作――查询操作。分析日志时,每遇到一次查询操作,都要报告出当前仓库中最大集装箱的重量。包含N+1N+1N+
2022-07-04 21:05:13
229
原创 nowcoder重排链表
在 O(n)O(n)O(n) 的空间复杂度要求下,很容易想到用顺序表存储所有的结点。若空间复杂度为 O(1)O(1)O(1):
2022-07-02 15:25:53
111
原创 NowCoder 反转链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0≤n≤100000\leq n\leq100000≤n≤10000要求:空间复杂度 O(1),时间复杂度 O(n)。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:使用递归方法反转链表。...
2022-07-02 13:39:47
141
原创 Leetcode 61: 旋转链表
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。由于k的值可能很大,所以要先将k除len取余。本题的实质是找到倒数第k个结点,将其后面所有结点调到链表前面。找到倒数第k个结点:定义两个结点,让其相隔k个结点,后一起往后移动。...
2022-07-02 11:38:17
120
原创 Leetcode T49: 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。如果两个字符串再根据字符进行排序后,得到的字符串相等,那么这两个字符串为字母异位词。使用HashMap,提高存取效率。...
2022-07-01 15:19:22
1740
1
原创 Leetcode T48:旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,
2022-07-01 15:02:38
88
原创 Leetcode T40: 组合总和II
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合。1 ...
2022-06-30 15:57:41
156
原创 Leetcode T39: 组合总和
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。很常规的dfs题,但是由于很久没打dfs代码了,记录一下。...
2022-06-30 15:54:06
84
原创 Leetcode T34: 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]输入:nums = [], target = 0输出:[-1,-1]要满足
2022-06-30 09:50:21
1178
原创 leetcode T31:下一排列
整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。例如,arr = [1,
2022-06-30 09:10:48
88
原创 Leetcode T29: 两数相除
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2由于题目中不能使用乘法、除法和取余运算,可以考虑利用加减法计算。例如,考虑100/7=14… …2,可以使用100对7累减,直到为负数。但是,这样效率太低,可以考虑一下减去多个7(
2022-06-29 21:34:05
99
原创 洛谷P1004: 方格取数
[NOIP2000 提高组] 方格取数题目描述设有 N×NN \times NN×N 的方格图 (N≤9)(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 000。如下图所示(见样例):A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0 0
2022-05-29 22:19:10
292
原创 逆序对 洛谷P1908
题目描述猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中 ai>aja_i>a_jai>aj 且 i<ji<ji<j 的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。注意序列中可能有重复数字。输入格式第一行,一个数 nnn,表示序列
2022-05-21 09:15:30
222
1
原创 2021.01.06求整数的二进制形式
2021.01.06求整数的二进制形式题目描述输入[-128,127]内的整数,输出其二进制表示。提示,可使用按位与&样例输入7样例输出00000111注意十进制整数–>二进制形式正数:–> 原码二进制负数:–> 补码 = 2^n+原码思路由于负数要转成补码再进行加法运算,等价于两数相减。所以,以8个bite为例:n + (-n) = 0 --> 原码 + 补码 = 1000000000(由于超出了8位长度,才显示结果为0)所以,要求补码,
2022-03-28 18:25:43
355
原创 2020.12.28Excel(数字到BZZ)
2020.12.28Excel(数字到BZZ)题目描述Excel单元格的地址表示很有趣,它使用字母来表示列号。比如:A表示第1列,B表示第2列,Z表示第26列,AA表示第27列,AB表示第28列,BA表示第53列本题目即是要求对输入的数字, 输出其对应的Excel地址表示方式。样例输入26样例输出Z样例输入2054样例输出BZZ思路 & 代码思路一由于A表示1,且其中没有0位,所以和以往的进制转换略有不同。①将A,AA,AAA,AAAA表示的十进制数都
2022-03-28 18:25:13
1094
原创 2020.12.27栋栋叔叔
2020.12.27栋栋叔叔题目描述游戏规则:栋栋和同学们共n人围坐在一圈说数字,栋栋说1,下一个隔一个数字,说2,下一个说4,下一个说7(每次隔的数字+1)为了使数字不至于太大约定,不能大过k,如果是k从1开始,即num = num % k。例如,当k=13时,前几个数依次为:1, 2, 4, 7, 11, 3, 9, 3, 11, 7。游戏进行了一会儿,栋栋想知道,到目前为止,他所有说出的数字的总和是多少。输入格式输入的第一行包含三个整数 n,k,T,其中 n 和 k 的意义如上面所述,T
2022-03-28 18:24:40
3162
原创 2020.12.25十六进制转八进制
2020.12.25十六进制转八进制题目描述输入一个十六进制数,字母全为大写,要转为八进制,要求:开头不为0。输入格式输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。思路为了提高代码能力,不使用API。对于很长一串字符的输入,显然不能通过整型/浮点型进行表示,只能通过字符串来模拟计算(高精度)。如果计算量很大,边计算边输出可以带来时间上的大量优化。由于三
2022-03-28 18:24:09
1296
原创 2020.12.23猴子吃包子
2020.12.23猴子吃包子题目描述从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个;现在有x1个肉包,y1个韭菜包,z1个没有馅的包子;问:猴子吃完这些包子要多久?结果保留p位小数。输入格式输入1行,包含7个整数,分别表示吃不同包子的速度和不同包子的个数和保留的位数。输出格式输出一行,包含1个实数,表示吃完所有包子的时间。样例输入4 3 2 20 30 15 2样例输出22.50数据规
2022-03-28 18:23:42
77
原创 2022.02.17括号生成
2022.02.17括号生成(题目来源:https://leetcode-cn.com/problems/generate-parentheses/ )题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。样例输入n = 3样例输出["((()))","(()())","(())()","()(())","()()()"]数据规模和约定1 <= n <= 8思路思路一:通过dfs生成所有可能的括号字符串,最后在通过一个函数判
2022-03-28 18:22:57
160
原创 2021.06.02数的划分
2021.06.02数的划分题目描述将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5;1,5,1;5,1,1.问有多少种不同的分法。输入格式n,k输出格式1 个整数,即不同的分法。样例输入7 3样例输出4数据规模和约定6<n≤200,2≤k≤6思路Dfs代码 class Solution{ int res = 0; void test
2022-03-28 18:22:27
104
原创 算法题刷题笔记
个人介绍本人是重庆交通大学2019级的一名学生,打过1次蓝桥杯竞赛。由于在准备过程中对每道题目做了笔记,现在将题目分享给大家,希望对打算法竞赛的同学能起到一点帮助。此外,我依旧在学习算法的路上,会时不时更新做题笔记,欢迎大家关注。项目简介本项目包括近100道算法题目,范围涉及数组、模拟、搜索、dp、回溯、前缀、差分、分治、滑动窗口、单调栈、二分等类型的算法题。还涉及了多道省赛国赛真题。难度较低,但是认真刷下来肯定对自身算法水平有所提高项目中的每一道题都有思路分析,并且给出了代码。本人尽可能对一个题
2022-03-28 14:33:15
1148
2
原创 2021.06.02乘积最大
2021.06.02乘积最大(题目来源:https://www.luogu.com.cn/problem/P1018 )题目描述今年是国际数学联盟确定的“ 2000 ――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰 90 周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友 XZ 也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它分成 K+1 个部分,找出一种分法,使得这 K+1 个部
2022-03-27 14:59:06
525
原创 2021.06.01单词接龙
2021.06.01单词接龙(题目来源:https://www.luogu.com.cn/problem/P1019 )题目描述单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast 和 astonish,如果接成一条龙则变为 beastonish,另外相邻的两部分不能存在包含关系,例如 at 和 atide 间不能相连。输入描述输
2022-03-27 14:58:38
166
原创 2021.05.20最少数量的箭引爆气球
2021.05.20最少数量的箭引爆气球题目描述在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限
2022-03-27 14:58:04
128
原创 2021.05.13字典序第k小数字
2021.05.13字典序第k小数字(题目来源:https://leetcode-cn.com/problems/k-th-smallest-in-lexicographical-order/)题目描述给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。数据规模和约定1 ≤ k ≤ n ≤ 10^9。思路搜索第k小数字时可以构造一个“十叉搜索前缀树”,如下图:我们可以发现 ①这个十叉搜索树是一个完全十叉树,但不是一个满十叉树,其最后一个节点即为n。②前序遍历1,10,101,
2022-03-27 14:56:06
424
原创 2021.05.11最小基因变化步数
2021.05.11最小基因变化步数(题目来源:https://leetcode-cn.com/problems/minimum-genetic-mutation/)题目描述一条基因依次可以发生一个基因突变,例如,基因序列由"AACCGGTT" 变化至 “AACCGGTA”现在给定3个参数 — start, end, bank,分别代表起始基因序列,目标基因序列及基因库,请找出能够使起始基因序列变化为目标基因序列所需的最少变化次数。如果无法实现目标变化,请返回 -1。思路dfs直接遍历,当然也
2022-03-27 14:55:17
207
原创 2021.05.06二维矩阵接雨水
2021.05.06二维矩阵接雨水(题目来源:https://leetcode-cn.com/problems/trapping-rain-water/)题目描述给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。思路回忆 接雨水1,我们维护了接雨水时的左右最短边界。引申到二维数组接雨水,我们需要维护的时一个矩形边框(到后期可能是一个不规则的边框)。dfs遍历+优先数组代码 public int trapRainWate
2022-03-27 14:54:41
438
原创 2021.05.04二进制手表
2021.05.04二进制手表(题目来源:https://leetcode-cn.com/problems/binary-watch/)题目描述二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,上面的二进制手表读取 “3:25”。给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。思路求出亮k个灯的所有示数,可以将所有的灯都通过一个数组下标进行表示,通过回溯算
2022-03-27 14:54:10
301
原创 2021.04.30DFS求好叶子节点对数量
2021.04.30DFS求好叶子节点对数量(题目来源:https://leetcode-cn.com/problems/number-of-good-leaf-nodes-pairs/)题目描述给你二叉树的根节点 root 和一个整数 distance 。如果二叉树中两个 叶 节点之间的 最短路径长度 小于或者等于 distance ,那它们就可以构成一组 好叶子节点对 。返回树中 好叶子节点对的数量 。思路在二叉树的题目中,首先考虑dfs。dfs应该返回的信息:该节点下面叶子节点到当前
2022-03-27 14:53:47
222
原创 2021.04.29删点成林
2021.04.29删点成林(题目来源:https://leetcode-cn.com/problems/delete-nodes-and-return-forest/)题目描述给出二叉树的根节点 root,树上每个节点都有一个不同的值。如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。返回森林中的每棵树。你可以按任意顺序组织答案。样例输入root = [1,2,3,4,5,6,7], to_delete = [3,5]样例输出
2022-03-27 14:53:03
164
原创 2021.04.13找绿洲
2021.04.13找绿洲题目描述求方格地图中所有格子到出口(多个)的最小和。描述如下:一个叫Andy的小朋友在一个正方形的沙漠中迷路了,身边的水也喝完了。Andy知道自己要渴死了,闲得无聊,所以他开始计算一些有趣的问题。这个沙漠是由一个n*n的网格图构成的,当你站在某一个格子时,你可以走向周围八个格子中的一个。然而,沙漠中的某些格子有毒蛇,你必须避开他们,某些格子有水源,水源就是生命。现在,Andy希望计算出每个格子到最近的水源的距离。你只需计算出所有距离的和即可。输入格式输入的第一行包含三
2022-03-27 14:52:41
241
原创 2021.04.06矩阵中的路径
2021.04.06矩阵中的路径题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符
2022-03-26 23:13:34
129
原创 2021.02.25分教室
2021.02.25分教室题目描述n个人参加某项特殊考试。为了公平,要求任何两个认识的人不能分在同一个考场。求最少需要分几个考场才能满足条件。输入格式第一行,一个整数n(1<n<100),表示参加考试的人数。 第二行,一个整数m,表示接下来有m行数据以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识(编号从1开始)输出格式一行一个整数,表示最少分几个考场。样例输入581 21 31 42 32 42 5
2022-03-26 23:13:04
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人