
每日一题
文章平均质量分 64
Ypuyu
Ypuyu
展开
-
[每日一题] 0. 每日一题题解汇总
每日一题锻炼编程能力,每日尽量至少更新一道算法编程题,其题目代码部分已经同步到我的优快云:Y-puyu的优快云博客,博客内主要更新学习C/C++、Linux学习内容,及数学建模相关知识,希望能够及时记录学习成果,便于回顾复习,也能够与大家一起交流进步。每日一题CSND博客详解链接:题目简述提交日期1. 组队竞赛—编程题(贪心、排序)201909052. 删除公...原创 2019-10-09 00:10:28 · 1832 阅读 · 6 评论 -
[每日一题] 163. 单词的压缩编码(暴力、各种炫技、巧妙解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:暴力+模拟+常规解法方法二:翻转+模拟+巧妙解法方法三:HashSet+巧妙解法方法四:字符串哈希+字典树+前缀树+后缀树+巧妙解法1. 题目来源链接:820. 单词的压缩编码来源:LeetCode2. 题目说明3. 题目解析方法一:暴力+模拟+常规解法这是一道 Medium 问题。一开始直观上就想着能不能将这个 压缩编码串...原创 2020-03-28 20:33:20 · 697 阅读 · 1 评论 -
[每日一题] 162. 卡牌分组(模拟、gcd、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:模拟+gcd+常规解法1. 题目来源链接:914. 卡牌分组来源:LeetCode2. 题目说明3. 题目解析方法一:模拟+gcd+常规解法简单题,需要抽象理解,简单说下思路:首先需要统计数字的重复出现次数,采用 map 数据结构就可以直接进行统计,最为便捷有效。还有就是计数数组的使用也可以。当然 sort 后进行处理...原创 2020-03-27 23:38:55 · 221 阅读 · 0 评论 -
[每日一题] 161. 车的可用捕获量(模拟、方向数组、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:模拟+方向数组+常规解法1. 题目来源链接:999. 车的可用捕获量来源:LeetCode2. 题目说明3. 题目解析方法一:模拟+方向数组+常规解法水题,就是找 R 上下左右四条路径中能不被 B 挡住的情况找到几个 p,这里只找四方向中第一次出现的 p 即可。题目长,理解了就是真实的水题…练练方向数组还行。首先,献...原创 2020-03-26 17:43:02 · 207 阅读 · 2 评论 -
[每日一题] 160. 三维形体的表面积(模拟、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:模拟+常规解法1. 题目来源链接:892. 三维形体的表面积来源:LeetCode2. 题目说明3. 题目解析方法一:模拟+常规解法题意不好理解,读清楚了就简单了。来简单讲一下思路:一个正方体的表面积为 6,这道题中表面积是计算底面的该正方体若与其它正方体接触,两个接触的正方体表面积各减 1统计所有方格中的正方体数目...原创 2020-03-25 20:42:43 · 1019 阅读 · 3 评论 -
[每日一题] 159. 生命游戏(编码、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:编码+常规解法1. 题目来源链接:289. 生命游戏来源:LeetCode2. 题目说明3. 题目解析方法一:编码+常规解法由于题目中要求用原地算法来解题,所以就不能新建一个相同大小的数组,那么只能更新原有数组。题目中要求所有的位置必须被同时更新,但在循环程序中还是一个位置一个位置更新的,当一个位置更新了,这个位置成为其他...原创 2020-04-02 19:57:22 · 460 阅读 · 1 评论 -
[每日一题] 158. 链表的中间结点(快慢指针、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:快慢指针+常规解法1. 题目来源链接:876. 链表的中间结点来源:LeetCode2. 题目说明3. 题目解析方法一:快慢指针+常规解法所以就简单的快慢指针吗???参见代码如下:// 执行用时 :0 ms, 在所有 C++ 提交中击败了100.00%的用户// 内存消耗 :8 MB, 在所有 C++ 提交中击败了10...原创 2020-03-23 19:45:43 · 273 阅读 · 4 评论 -
[每日一题] 157. 使数组唯一的最小增量(暴力、排序、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:暴力+排序+常规解法1. 题目来源链接:使数组唯一的最小增量2. 题目说明3. 题目解析方法一:暴力+排序+常规解法题意明确,数据量不大,可以暴力解决。先进行排序,再对前后两数进行单独调整即可,调整方法为 i 数比 i - 1 大 1 即可,那么就可能出现三种情况,记前数为 A,后一个数为 B:若 A 小于 B ,不必操...原创 2020-03-22 21:49:55 · 234 阅读 · 0 评论 -
[每日一题] 156. 统计字符个数(字符检测函数、代码风格、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:字符检测函数API+常规解法1. 题目来源链接:统计字符个数2. 题目说明3. 题目解析方法一:字符检测函数API+常规解法题目非常简单,做这个题是为了练习各种 C 语言字符检测函数 API 接口,真是一种 炫技 的写法,但是确实够优雅。具体各种 API 可参考官方网站和这篇大佬的博文,讲解的很清楚:C语言字符检测函数:isa...原创 2020-03-20 23:00:49 · 211 阅读 · 0 评论 -
[每日一题] 155. 排序名单(模拟、代码风格、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:sort()排序+常规解法1. 题目来源链接:排序名单2. 题目说明3. 题目解析方法一:sort()排序+常规解法非常简的做法,直接利用 sort() 进行排序即可。这个采用 vector 实现。参见代码如下:#include <iostream>#include <algorithm>#in...原创 2020-03-20 22:49:28 · 155 阅读 · 0 评论 -
[每日一题] 154. 最长回文串(模拟、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:模拟+常规解法1. 题目来源链接:最长回文串来源:LeetCode2. 题目说明3. 题目解析方法一:模拟+常规解法题意很明确,但需要抽象理解这个问题,问题要求将原字符串所有的字符拿出来构造,与前后顺序无关。那么首先想到哈希映射统计各个字符串个数,偶数个字符一定能够构成回文串。关键是奇数个字符,在此有以下两种情况:若奇数...原创 2020-03-20 21:47:13 · 157 阅读 · 0 评论 -
[每日一题] 153. 矩形重叠(思维、模拟、顶级解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:模拟+常规解法方法二:思维+模拟+顶级解法1. 题目来源链接:矩形重叠2. 题目说明3. 题目解析方法一:模拟+常规解法题意很明确,但要写出简洁的代码的话需要较强的想象力,这类问题画图是很容易找到规律的。并且正面证明不易时应考虑反证法:随意画一个矩形,能观察得到不可覆盖的矩形出现在原矩形的上、下、左、右四部分,分别对应四种...原创 2020-03-18 13:55:58 · 323 阅读 · 4 评论 -
[每日一题] 152. 字符串的最大公因子(思维、gcd问题、顶级解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:思维+gcd问题+顶级解法1. 题目来源链接:字符串的最大公因子2. 题目说明对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCA...原创 2020-03-12 23:44:43 · 301 阅读 · 2 评论 -
[每日一题] 151. 只出现一次的数字(位运算、异或、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:位运算+异或+常规解法1. 题目来源链接:只出现一次的数字2. 题目说明给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,...原创 2020-03-12 23:24:10 · 231 阅读 · 2 评论 -
[每日一题] 150. 最长公共前缀(字符串、暴力、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:暴力+常规解法1. 题目来源链接:最长公共前缀2. 题目说明编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释...原创 2020-03-12 22:52:33 · 291 阅读 · 2 评论 -
[每日一题] 149. 将数组分成和相等的三个部分(数组、模拟、边界判断、常规解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:模拟+边界判断+常规解法1. 题目来源链接:将数组分成和相等的三个部分2. 题目说明给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] ...原创 2020-03-11 04:51:33 · 375 阅读 · 2 评论 -
[每日一题] 148. 二叉树的直径(二叉树、易错坑点、巧妙解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:数学+思维+动态规划+巧妙解法方法二:暴力+常规解法1. 题目来源链接:买卖股票的最佳时机2. 题目说明给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5...原创 2020-03-10 01:06:06 · 314 阅读 · 2 评论 -
[每日一题] 147. 买卖股票的最佳时机(数组、数学、动态规划、顶级解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:动态规划+思维+巧妙解法1. 题目来源链接:打家劫舍2. 题目说明你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷...原创 2020-03-10 00:42:15 · 1359 阅读 · 2 评论 -
[每日一题] 146. 打家劫舍(数组、动态规划、巧妙解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:动态规划+思维+巧妙解法1. 题目来源链接:打家劫舍2. 题目说明你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷...原创 2020-03-09 18:24:40 · 296 阅读 · 2 评论 -
[每日一题] 145. 最大数(数学、思维、lambada表达式、巧妙解法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:数学+思维+lambada表达式+巧妙解法1. 题目来源链接:最大数来源:LeetCode——《剑指-Offer》专项2. 题目说明给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输...原创 2020-03-07 00:33:20 · 205 阅读 · 4 评论 -
[每日一题] 144. 有效的字母异位词(字符串、sort()、哈希)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:sort()函数方法二:哈希映射1. 题目来源链接:有效的字母异位词来源:LeetCode2. 题目说明给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t...原创 2020-03-04 11:30:05 · 188 阅读 · 4 评论 -
[每日一题] 143. 寻找旋转排序数组中的最小值 II(字符串、二分法、分治、递归)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:二分法方法二:分治法、递归1. 题目来源链接:寻找旋转排序数组中的最小值II来源:LeetCode2. 题目说明假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例1:...原创 2020-02-22 08:46:31 · 224 阅读 · 0 评论 -
[每日一题] 142. 寻找旋转排序数组中的最小值(数组、二分法、分治、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:二分法方法二:分治法、递归1. 题目来源链接:寻找旋转排序数组中的最小值来源:LeetCode2. 题目说明假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例1:输...原创 2020-02-21 23:28:37 · 357 阅读 · 0 评论 -
[每日一题] 141. 搜索二维矩阵 II(数学、二分法)
文章目录1. 题目来源2. 题目说明3. 题目解析3.1 方法一:暴搜3.2 方法二:数学规律法1. 题目来源链接:搜索二维矩阵 II来源:LeetCode2. 题目说明在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例 :[[1, 4, ...原创 2020-02-15 22:48:35 · 326 阅读 · 0 评论 -
[每日一题] 140. 搜索二维矩阵(数学、二分法、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析3.1 方法一:暴搜3.2 方法二:朴素二分法、细节处理3.2 方法二:依据坐标关系二分法3.3 双指针法1. 题目来源链接:搜索二维矩阵来源:LeetCode2. 题目说明编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。...原创 2020-02-15 22:48:32 · 404 阅读 · 0 评论 -
[每日一题] 139. 24点游戏(数组、递归、遍历、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:针对数字递归遍历方法二:针对符号递归遍历1. 题目来源链接:24 点游戏来源:LeetCode2. 题目说明你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24示例2...原创 2020-02-14 14:34:44 · 760 阅读 · 0 评论 -
[每日一题] 138. 验证栈序列(数组、栈、模拟)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:建立辅助栈、模拟出栈1. 题目来源链接:验证栈序列来源:LeetCode2. 题目说明给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。示例1:输入:pushed = [1,2...原创 2020-02-14 00:52:24 · 357 阅读 · 1 评论 -
[每日一题] 137. 有序链表转换二叉搜索树(BST树、递归、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:快慢指针法、内部递归法方法二:外部递归法1. 题目来源链接:将有序数组转换为二叉搜索树来源:LeetCode2. 题目说明给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索...原创 2020-02-12 12:36:36 · 357 阅读 · 1 评论 -
[每日一题] 136. 将有序数组转换为二叉搜索树(BST树、递归、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:外部递归、二分法方法二:内部递归、二分法1. 题目来源链接:将有序数组转换为二叉搜索树来源:LeetCode2. 题目说明给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索...原创 2020-02-12 12:34:13 · 331 阅读 · 0 评论 -
[每日一题] 135. 平衡二叉树(BST树、递归、递归技巧、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:递归法方法二:提前阻断递归法1. 题目来源链接:平衡二叉树来源:LeetCode2. 题目说明给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例1:给定...原创 2020-02-12 12:33:24 · 340 阅读 · 1 评论 -
[每日一题] 134. 二叉搜索树中第K小的元素(BST树、递归、搜索技巧、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:BST性质、非递归中序遍历方法二:递归中序遍历方法三:分治法方法四:统计左右子树节点个数、探索二叉搜索树解法(绝妙)1. 题目来源链接:二叉搜索树中第K小的元素来源:LeetCode2. 题目说明给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ ...原创 2020-02-11 21:41:35 · 1019 阅读 · 0 评论 -
[每日一题] 133. 二叉搜索树迭代器(BST树、栈中序遍历)
文章目录1. 题目来源2. 题目说明3. 题目解析1. 题目来源链接:二叉搜索树迭代器来源:LeetCode2. 题目说明实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); /...原创 2020-02-11 13:44:50 · 423 阅读 · 0 评论 -
[每日一题] 132. 不同的二叉搜索树II(BST树、回溯法、动态规划、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:BST性质、递归解法方法二:卡特兰数通项公式1. 题目来源链接:不同的二叉搜索树来源:LeetCode2. 题目说明给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例:输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2...原创 2020-02-11 12:50:37 · 383 阅读 · 0 评论 -
[每日一题] 131. 不同的二叉搜索树(BST树、数学、动态规划、卡特兰数)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:BST性质、递归解法方法二:卡特兰数通项公式方法三:中序遍历unique()去重解法方法四:方法二修改进阶、直接比较新老节点解法方法五:非递归、利用栈进行中序遍历1. 题目来源链接:不同的二叉搜索树来源:LeetCode2. 题目说明给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: ...原创 2020-02-10 22:41:08 · 351 阅读 · 0 评论 -
[每日一题] 129. 删除二叉搜索树中的节点(BST树、递归、迭代、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:常规二叉搜索树删除节点法方法二:递归解法方法三:迭代解法方法四:二叉树通用解法1. 题目来源链接:删除二叉搜索树中的节点来源:LeetCode2. 题目说明给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般...原创 2020-02-10 18:32:13 · 469 阅读 · 0 评论 -
[每日一题] 130. 验证二叉搜索树(BST树、递归、Morris 遍历、多方法)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:BST性质、递归解法方法二:中序遍历直接解法方法三:中序遍历unique()去重解法方法四:方法二修改进阶、直接比较新老节点解法方法五:非递归、利用栈进行中序遍历1. 题目来源链接:验证二叉搜索树来源:LeetCode2. 题目说明给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只...原创 2020-02-10 20:00:35 · 503 阅读 · 1 评论 -
[每日一题] 128. 青蛙过河(数组、记忆化搜索、递归、剪枝)
文章目录1. 题目来源2. 题目说明3. 题目解析方法一:哈希表、记忆化搜索、递归解法方法二:迭代解法方法三:回溯法+贪心策略+剪枝1. 题目来源链接:前K个高频元来源:LeetCode2. 题目说明一只青蛙想要过河。 假定河流被等分为 x 个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。给定石子的位置列表(用单元格序号升序表示...原创 2020-02-08 14:16:13 · 1686 阅读 · 0 评论 -
[每日一题] 127. 前K个高频元素(字符串、堆排序、桶排序、多方法)
1. 题目来源链接:前K个高频元素来源:LeetCode2. 题目说明给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。...原创 2020-02-06 23:12:10 · 422 阅读 · 0 评论 -
[每日一题] 126. 前K个高频单词(字符串、堆排序、桶排序、多方法)
1. 题目来源链接:前K个高频单词来源:LeetCode2. 题目说明给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: ...原创 2020-02-06 23:04:47 · 699 阅读 · 0 评论 -
[每日一题] 125. 正则表达式匹配(字符串、动态规划、递归、多方法)
1. 题目来源链接:通配符匹配来源:LeetCode2. 题目说明给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小...原创 2020-02-05 00:58:21 · 364 阅读 · 0 评论