
leetcode
h799710
这个作者很懒,什么都没留下…
展开
-
移动零的四种实现方式(逐步优化)
今天刷的leetcode题,看似简单,但想要优化却不简单,这里记录一下我的解题过程题目:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zeroes著作权归领扣网络所有。商业转载请联系官方授权,.原创 2020-11-19 15:34:57 · 1021 阅读 · 0 评论 -
前 K 个高频元素(两种方法实现)
题目:这是leetcode上的一道题,首先,我们看下题目:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]思路一:题目的要求是,获取出现频率最高的前 k个元素,既然是前 k 个,很明显就是用堆排序的方式去实现,步骤是:1.将前k个数,用构造成大根堆或者小根堆,因为我们是去前k个大的数,用小根堆。2.将剩余的元素一原创 2020-09-09 18:27:16 · 2367 阅读 · 1 评论 -
简单模式匹配(c++实现)
简单模式匹配(c++实现)这是leetcode上的一道题:面试题 16.18. 模式匹配 你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a","go"是"b"),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例 1:原创 2020-07-06 12:13:26 · 955 阅读 · 0 评论 -
LeetCode990.等式方程的可满足性(并查集实现)
等式方程的可满足性(并查集实现)该文章记录了作者的思考过程,可能比较繁琐,如果想直接看答案思路的,直接看分析1.0,2.0以及最终代码。先看题目:给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:"a==b" 或 "a!=b"。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。 示例 1:输入:["a原创 2020-06-10 16:41:14 · 269 阅读 · 0 评论 -
LeetCode238.除自身以外数组的乘积(c++实现)
除自身以外数组的乘积(c++实现)首先看题目:给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度原创 2020-06-05 14:41:17 · 319 阅读 · 0 评论 -
二叉树结构之求最大、最小深度
二叉树结构之求最大、最小深度1.最大深度思路:利用【深度优先遍历】获取当前点的【左孩子树】的最大深度,【右孩子树】的最大深度,取两个最大深度的最大值,然后加上本身节点所占用的一个深度,就是以该节点为根的最大深度,递归返回的到根节点时,就是这个二叉树的最大深度。下面是C++的实现代码:int maxDepth(TreeNode* root) { if (!root) return 0; return max(maxDepth(root->left), maxDepth(root-&g原创 2020-05-13 18:33:10 · 521 阅读 · 0 评论 -
LeetCode236. 二叉树的最近公共祖先(递归经典题目)
二叉树的最近公共祖先(递归经典题目)最近刷新到一道很有趣的题目,可以说是比较经典的递归题目,如果对于递归了解不够透彻,就不能或者不能很好的做出这道题目。下面先看下题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,nul原创 2020-05-13 02:02:03 · 366 阅读 · 0 评论 -
LeetCode 155. 最小栈
LeetCode 155. 最小栈今天写题发现了一个很精妙的解法,在这里记录一下首先看下题目描述:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/min-stack示例:输入:["Mi原创 2020-05-12 13:21:03 · 250 阅读 · 0 评论 -
leetcode第 188 场周赛之【形成两个异或相等数组的三元组数目】
形成两个异或相等数组的三元组数目这次的题感觉比上周难很多,主要是吃数学不好的亏呀。看了别人的题解,不看代码,马上码一遍直接通过了。现在记录一下吧,提醒自己以后要好好学习数学(望大佬勿笑)。先看下题目描述:给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。a 和 b 定义如下:a = arr[i] ^ arr[i + 1] ^ ... ^ arr[j - 1]b = arr原创 2020-05-10 16:56:35 · 220 阅读 · 0 评论 -
动态规划+回溯 高效解决凑硬币(零钱兑换)问题
动态规划+回溯 高效解决凑硬币问题这是我在刷leetcode遇到的一道典型动态规划题,我们先看下问题:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1一般来说,只要看到原创 2020-05-08 19:33:35 · 2299 阅读 · 0 评论