leetcode
文章平均质量分 83
你好世界wxx
Just do it!
展开
-
【力扣】字符串编码解码
题目描述:给定一个 非空 字符串,将其编码为具有最短长度的字符串。编码规则是:k[encoded_string],其中在方括号 encoded_string 中的内容重复 k 次。注:(1)k 为正整数且编码后的字符串不能为空或有额外的空格。(2)你可以假定输入的字符串只包含小写的英文字母。字符串长度不超过 160。(3)如果编码的过程不能使字符串缩短,则不要对其进行编码。如果有多种编码方式,返回任意一种即可。分析。注意:2022.10.12秋招华为软开第一题就是这题。分析如下:代码。原创 2022-10-14 16:18:47 · 1446 阅读 · 0 评论 -
【力扣】课程表系列
【力扣】课程表系列Leetcode 0207 课程表题目描述:Leetcode 0207 课程表分析本题的考点:拓扑排序。关于拓扑排序可以参考:网址。代码C++class Solution {public: bool canFinish(int n, vector<vector<int>> &edges) { vector<vector<int>> g(n); v原创 2021-12-14 20:28:47 · 1946 阅读 · 0 评论 -
【力扣】丑数
丑数1. 概述根据百度百科的解释,丑数有两种定义:定义一把只包含质因子2,3和5的数称作丑数(Ugly Number)。定义二给定一个素数集合:S={p1,p2,...,pk}S = \{ p_1, p_2, ..., p_k \}S={p1,p2,...,pk},如果一个数x的质因子全部在集合S中,则x被称作丑数。2. 例题Leetcode 0263 丑数题目描述:Leetcode 0263 丑数分析本题的考点:数学。将n中所有因子2、3、5全部原创 2021-11-26 11:06:54 · 510 阅读 · 0 评论 -
【力扣】最大矩形系列
【力扣】最大矩形系列Leetcode 0084 柱状图中的最大矩形题目描述:Leetcode 0084 柱状图中的最大矩形分析本题的考点:单调栈。对于每个柱子h[i],我们求出其左边和右边小于h[i]且距离下标i最近的数据的下标left、right后,则以h[i]为高的柱子所能形成的矩形面积为h[i]×(right−left−1)h[i] \times (right - left - 1)h[i]×(right−left−1)。我们可以使用单调栈寻找h[i]左边或右边小于h原创 2021-11-04 16:53:34 · 234 阅读 · 0 评论 -
【力扣】数的幂系列
力扣之数的幂系列Leetcode 0231 2的幂题目描述:Leetcode 0231 2的幂分析本题的考点:位运算。如果一个数是2的幂,则这个数一定大于0,;考虑2的幂的二进制形式,二进制表示中只有一个1,其余位置都是0,因为我们可以使用lowbit操作返回最低位的1,如果一个数2的幂则有n & -n==n。代码C++class Solution {public: bool isPowerOfTwo(int n) { retu原创 2021-09-23 10:09:06 · 104 阅读 · 0 评论 -
【力扣】只出现一次的数字系列
力扣之只出现一次的数字系列Leetcode 0136 只出现一次的数字题目描述:Leetcode 0136 只出现一次的数字分析本题的考点:位运算。将所有数据异或起来就是答案。代码C++class Solution {public: int singleNumber(vector<int> &nums) { int res = 0; for (auto t : nums) res ^= t;原创 2021-07-19 21:10:16 · 161 阅读 · 1 评论 -
【力扣】存在重复元素系列
力扣之存在重复元素系列Leetcode 0217 存在重复元素题目描述:Leetcode 0217 存在重复元素分析本题的考点:哈希表。依次遍历每个元素,判断当前遍历的元素是否在哈希表中存在,如果存在,说明存在重复元素,否则将该元素插入哈希表中。如果遍历结束都没有发现重复元素,返回false即可。代码C++class Solution {public: bool containsDuplicate(vector<int>& n原创 2021-07-13 09:52:58 · 72 阅读 · 0 评论 -
【力扣】不同路径系列
力扣之不同路径系列Leetcode 0062 不同路径题目描述:Leetcode 0062 不同路径分析本题的考点:动态规划。状态表示f[i][j]:从起点到达坐标点(i, j)的方案数。状态转移:f[i][j] = f[i-1][j] + f[i][j-1]。另外第一行和第一列上的坐标都只有一种到达的方案,因此第一行、第一列直接被赋值为1。代码C++class Solution {public: int uniquePaths(int m, i原创 2021-07-01 14:49:13 · 165 阅读 · 0 评论 -
【力扣】路径总和系列
力扣之路径总和系列Leetcode 0112 路径总和题目描述:Leetcode 0112 路径总和分析本题的考点:二叉树。递归,自顶向下从根节点往叶节点走,如果走到空节点,返回false;如果走到某个叶节点时,且sum 恰好为该节点的值,则说明找到一条满足要求的路径,返回true;否则是内部节点的,就让 sum 减去该节点的值,递归求解。只要找到一条满足要求的路径,递归即可返回。代码C++class Solution {public: b原创 2021-07-01 11:23:34 · 235 阅读 · 0 评论 -
【力扣】数据之和系列
力扣之数据之和系列Leetcode 0015 三数之和题目描述:Leetcode 0015 三数之和分析本题的考点:双指针。本题的暴力解法是三种循环枚举三个数,时间复杂度是O(n3)O(n^3)O(n3)的,不可取。为了使用双指针,首先对数组进行排序,然后我们可以用i枚举三个数中的其中一个,然后使用双指针j、k找到另外两个数。这里假设i < j < k。对于当前考虑的nums[i],此时可以看成定值,我们初始化j = i+1, k = nums.size(原创 2021-06-30 20:48:55 · 102 阅读 · 1 评论 -
【力扣】打家劫舍系列
力扣之打家劫舍系列Leetcode 0198 打家劫舍题目描述:Leetcode 0198 打家劫舍分析本题的考点:动态规划。分析如下:代码C++class Solution {public: int rob(vector<int> &nums) { int n = nums.size(); vector<int> f(n + 1), g(n + 1); // 从1开始,表示第1家店原创 2021-06-29 17:18:46 · 194 阅读 · 0 评论 -
【力扣】摩尔投票(多数元素)系列
力扣之摩尔投票(多数元素)系列Leetcode 0169 多数元素题目描述:Leetcode 0169 多数元素分析本题的考点:摩尔投票法。本题存在很多做法(1)做法1:排个序,中间第⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n⌋个数就是答案,时间复杂度是O(n×log(n))O(n \times log(n))O(n×log(n))的。(2)做法2:使用哈希表统计次数,空间复杂度是O(n)O(n)O(n)的。上述做法都不是最优的,下面提供最优原创 2021-06-29 20:32:50 · 120 阅读 · 1 评论 -
【力扣】组合总和系列
力扣之组合总和系列Leetcode 0039 组合总和题目描述:Leetcode 0039 组合总和分析本题的考点:递归回溯。直接暴搜即可。代码C++class Solution {public: vector<vector<int>> ans; vector<vector<int>> combinationSum(vector<int>& c, int target) {原创 2021-06-29 20:45:44 · 245 阅读 · 1 评论 -
【力扣】全排列系列
力扣之全排列系列Leetcode 0046 全排列题目描述:Leetcode 0046 全排列分析本题的考点:递归回溯。这个题目使用暴搜搜出所有的方案即可,关键问题是搜索顺序是什么?一般由两种搜索顺序:(1)可以枚举每个位置放置哪个数据;(最常用)(2)枚举每个数据放置到哪个位置上。这里使用第(1)中枚举方式。这里使用数据st表示某个某个数据是否已经被使用。代码C++class Solution {public: vector<v原创 2021-06-29 20:48:30 · 243 阅读 · 1 评论 -
【力扣】子集系列
力扣之子集系列Leetcode 0078 子集题目描述:Leetcode 0078 子集分析本题的考点:位运算。如果nums中有n个元素,则其子集的个数为2n2^n2n个。我们可以使用一个二进制数据mask中的后n位表示nums数组中的每个元素是否被选择,如果mask & (1 << i)是1的话,表示nums[i]在当前的子集中。我们让mask从0循环到(1 << n) - 1就可以得到所有子集,每个不同的mask值对应一个子集。原创 2021-06-29 20:52:36 · 206 阅读 · 0 评论 -
【力扣】股票问题系列
力扣之股票问题系列Leetcode 0121 买卖股票的最佳时机题目描述:Leetcode 0121 买卖股票的最佳时机分析本题的考点:数组。在遍历的过程中,假设当前遍历到prices[i],记录之前股票的最低价minp,更新获得的最大利润res,并用prices[i]更新最低价minp。代码C++class Solution {public: int maxProfit(vector<int>& prices) {原创 2021-06-25 09:37:40 · 217 阅读 · 1 评论 -
LeetCode题解
LeetCode题解本文会提供几乎所有LeetCode题目的讲解,并持续更新,目前更新到第1题对于每个题可能存在多种解法,一般只提供一种解法。选择某种解法的标准是:最常用、效率较高、写法比较简洁。关于LeetCode的分类整理,可以参考:网址关于这些题目的github仓库,可以参考:网址Leetcode 0001 两数相加题目描述:网址分析本题的考点:哈希表。哈希表中存储的(key, val)表示:(数据,该数据对应对应的下标)。假设当前遍历的是元素nums[i],我们需原创 2021-04-21 19:33:02 · 96 阅读 · 0 评论 -
LeetCode题型分类总结(持续更新)
LeetCode题型分类总结(持续更新)题解后面会陆续补充上,也可以参照github上力扣每题的代码(代码语言:Java、C++):github地址数组LeetCode 0001 两数相加 ----> 题目链接 ----> 我的解答Leetcode 0004 寻找两个正序数组的中位数 ----> 题目链接 ----> 我的解答Leetcode 0027 移除元素 ----> 题目链接 ----> 我的解答Leetcode 0041 缺失的第一个正数 ---原创 2021-01-23 17:55:15 · 1941 阅读 · 0 评论