自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(197)
  • 收藏
  • 关注

原创 剑指 Offer

《剑指 Offer》代码高质量1.考虑清楚所有可能的输入编码前设计单元测试1.1 功能测试1.2 边界测试1.3 负面测试使用错误测试用例,测试系统是否不执行它不应该完成的操作。2. 面试思路一个合格的应聘者应该在他做事之前明白自己要做的事情究竟是什么,以及该怎么做。一开始就编码的人员,除非后面表现非常优秀,否则很容易通不过。喜欢应聘者在写代码之前先讲思路,举例子和画图都是很好的方法第二章剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到

2021-05-09 16:17:43 141

原创 线程池剖析和复现

线程池

2024-02-27 22:53:17 879

原创 c++版本 两个线程交替打印1~100

同理,如果将第一行放到第三行之后,先发出信号,另一个正被阻塞的线程收到信号以后,条件满足,执行后续的打印,与我们的打印造成乱序。两个线程要交替严格按照顺序打印数字1~100,那么两个线程之间必然进行通信,而线程之间进行通信的手段一般是条件变量。其次,线程交替打印:1,2,3,…,100,那么一个线程打印奇数,一个打印偶数。上述三行代码,顺序不能乱,一旦顺序乱了,就不能按照要求进行打印.如果将第2行放到第一行,即先+1再打印, 刚执行完+1,操作系统。,check条件满足,就往下执行了,造成乱序打印。

2023-11-17 14:49:46 274

原创 [力扣c++实现] 581. 最短无序连续子数组

leetcode 581

2022-12-22 15:15:12 474

原创 [力扣c++实现] 152. 乘积最大子数组

leetcode 152

2022-12-22 15:13:57 435

原创 [力扣c++实现] 279. 完全平方数

leetcode 279

2022-12-22 15:12:52 245

原创 [力扣c++实现] 300. 最长递增子序列

leetcode 300

2022-12-22 15:09:14 165

原创 [力扣c++实现] 437. 路径总和 III

leetcode 437

2022-12-22 15:07:24 87

原创 [力扣c++实现] 337. 打家劫舍 III

leetcode 337

2022-12-22 15:04:44 185

原创 [力扣c++实现]85. 最大矩形

leetcode 85

2022-12-22 15:01:39 448

原创 [力扣c++实现]84. 柱状图中最大的矩形

leetcode 84

2022-12-22 14:59:22 113

原创 <<编译原理-龙书>>阅读笔记

编译原理读书笔记

2022-06-29 22:29:37 164

原创 [力扣c++实现] 221. 最大正方形

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。

2022-06-05 14:49:54 521

原创 码农的自我管理系统

 作为一个非科班的码农,大学期间一直没有机会像科班生一样,无论是出于个人练手还是交作业的原因而写一个xx管理系统,工作后写管理系统也是和工作不搭边的事情!不过本人还是一个比较喜欢动手和立flag的程序员。于是,在日常的生活中,就逐渐的产生了一种需要。 第一阶段,作为一个比较喜欢买书的程序员,本人希望将这些书籍管理起来,譬如买了多少本了,花了多少钱了,啥时候买的,在哪里买的,二手还是新书,读了多少页等。于是本人就想着写一个图书管理系统呗,就是设计一张表,配套增删查改的接口即可。于是我的图书管理系统在2020

2022-05-03 15:42:54 1100

原创 [力扣c++实现] 10. 正则表达式匹配

10. 正则表达式匹配难度困难2173收藏分享切换为英文接收动态反馈给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa" p = "a*"输出:true解释:因为 '*' 代表可以

2022-04-03 08:17:54 440

原创 [力扣c++实现] 48. 旋转图像

48. 旋转图像难度中等991收藏分享切换为英文接收动态反馈给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在** 原地** 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,

2022-04-03 08:17:49 414

原创 [力扣c++实现] 12. 整数转罗马数字

12. 整数转罗马数字难度中等681收藏分享切换为英文接收动态反馈罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做

2022-04-03 08:17:41 609

原创 [力扣c++实现] 13. 罗马数字转整数

13. 罗马数字转整数难度简单1470罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII,

2022-04-03 08:17:35 244

原创 [力扣c++实现] 36.有效的数独

36.有效的数独请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。示例 1:输入:board =[[“5”,“3”,".",".",“7”

2022-04-02 08:47:31 758

原创 [力扣c++实现] 18. 四数之和

18. 四数之和难度中等949收藏分享切换为英文接收动态反馈给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] :0 <= a, b, c, d < na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。示例 1:输入:nums =

2022-04-02 08:47:26 232

原创 [力扣c++实现] 494. 目标和

494. 目标和难度中等900收藏分享切换为英文接收动态反馈给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例 1:输入:nums = [1,1,1,1,1], target

2022-04-02 08:47:20 207

原创 [力扣c++实现] 38. 外观数列

38. 外观数列难度中等747给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1

2022-04-02 08:47:14 98

原创 [力扣c++实现] 49. 字母异位词分组

49. 字母异位词分组给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。示例 1:输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]示例 2:输入: strs = [""]输出: [[""]]示例 3:输入: strs =

2022-04-02 08:47:06 217

原创 [力扣c++实现] 79. 单词搜索

79. 单词搜索难度中等1103给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED

2022-04-02 08:46:58 162

原创 [力扣c++实现] 394. 字符串解码

394. 字符串解码难度中等956收藏分享切换为英文接收动态反馈给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例 1:输入:s = "3[a]

2022-04-02 08:46:51 304

原创 [力扣c++实现] 75. 颜色分类

75. 颜色分类难度中等1099给定一个包含红色、白色和蓝色,一共 n 个元素的数组,**原地**对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出

2022-04-02 08:46:43 159

原创 [力扣c++实现] 438. 找到字符串中所有字母异位词

438. 找到字符串中所有字母异位词难度中等727给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。示例 1:输入: s = "cbaebabacd", p = "abc"输出: [0,6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。示例 2:输入: s =

2022-04-02 08:46:36 214

原创 [力扣c++实现] 200. 岛屿数量

200. 岛屿数量难度中等1450给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1示例 2:

2022-04-02 08:46:24 120

原创 [力扣c++实现] 128. 最长连续序列

128. 最长连续序列难度中等1022收藏分享切换为英文接收动态反馈给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9提示:0 <= nums.len

2022-04-01 08:32:16 200

原创 [力扣c++实现] 739. 每日温度

739. 每日温度难度中等974收藏分享切换为英文接收动态反馈请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出: [1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出: [1,1,1,0]示例 3:输入: temperatur

2022-04-01 08:32:07 149

原创 [力扣c++实现] 399. 除法求值

399. 除法求值给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。另有一些以数组 queries 表示的问题,其中 queries[j] = [Cj, Dj] 表示第 j 个问题,请你根据已知条件找出 Cj / Dj = ? 的结果作为答案。返回 所有问题的答案 。如果存在某个无法确

2022-04-01 08:31:41 290

原创 [力扣c++实现] 416. 分割等和子集

416. 分割等和子集难度中等1130收藏分享切换为英文接收动态反馈给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。示例 2:输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。提示:1 <= nums.length <= 200

2022-04-01 08:31:27 273

原创 [力扣c++实现] 621. 任务调度器

621. 任务调度器难度中等818收藏分享切换为英文接收动态反馈给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输

2022-04-01 08:31:14 381

原创 [力扣c++实现] 240. 搜索二维矩阵 II

240. 搜索二维矩阵 II难度中等939编写一个高效的算法来搜索 *m* x *n* 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true示例 2:输入:matrix = [[1,

2022-04-01 08:31:03 208

原创 [力扣c++实现] 30. 串联所有单词的子串

30. 串联所有单词的子串1.cpp实现/* * date 2022-03-21 * author zhangyb * city hangzhou */#include <vector>#include <string>#include <unordered_map>#include <iostream>using namespace std;class Solution {public: vect

2022-04-01 08:30:51 161

原创 [力扣c++实现] 139. 单词拆分

139. 单词拆分给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以由 “leet” 和 “code” 拼接成。示例 2:输入: s = “applepenapple”, wordDi

2022-04-01 08:30:36 795

原创 [力扣c++实现] 37. 解数独

37. 解数独难度困难943收藏分享切换为英文接收动态反馈编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 '.' 表示。示例:输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",

2022-04-01 08:30:22 219

原创 [力扣c++实现] 56. 合并区间

56. 合并区间难度中等1214以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:interv

2022-04-01 08:30:09 1113

原创 [力扣c++实现] 17. 电话号码的字母组合

17. 电话号码的字母组合难度中等1347收藏分享切换为英文接收动态反馈给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b",

2022-03-30 22:38:10 164

原创 [力扣c++实现] 461. 汉明距离

461. 汉明距离难度简单486收藏分享切换为英文接收动态反馈两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。示例 1:输入:x = 1, y = 4输出:2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。示例 2:输入:x = 3, y = 1输出:1提示:0 <= x, y <= 231 - 11. cppcl

2022-03-30 22:23:39 660

空空如也

空空如也

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

TA关注的人

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