leetcode
笨笨小菜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode-553 最优除法
贪心:想要除法最大值,a/b,增加a或者减少B都可以实现除法结果最大值。本题中无法增加a的值,只需要减少b的值即可;同时数组中都是大于1的,即后面数字都进行相除为最小值;string optimalDivision(vector<int>& nums) { string res = ""; if (nums.size() == 1) { res += to_string(nums[0]); return res; }原创 2022-02-27 21:52:42 · 300 阅读 · 0 评论 -
leetcode-575、leetcode-1103 分糖果
思路:为了获取最大的种类,同时,不需要满足平均分配和相同,故只需要统计种类的个数和分配数量个数大小即可;int distributeCandies(vector<int>& candyType) { if (candyType.size() == 2) { return 1; } set<int> s; for (int i = 0; i < candyType.size(); i++) { s.in原创 2021-11-02 10:46:26 · 253 阅读 · 0 评论 -
leetcode-453、leetcode-462 最小操作次数使数组元素相等
思路:数学题中说每次增加n-1个数字,可以转换为每一次都减一个数字; 那么只需要记录最小的数字,把其他大于最小数字的全部减掉,即为最后结果int minMoves(vector<int>& nums) { if (nums.size() == 1) { return 0; } int min_value = nums[0]; long sum_value = nums[0]; for (int i = 1; i <原创 2021-10-20 09:43:00 · 316 阅读 · 0 评论 -
leetcode-208 实现 Trie (前缀树)、leetcode-211
208 思路:字典树实现//字典树定义struct Node { Node *next[26]; bool value; Node(): value(false) { for (auto &a : next) a = nullptr; }};class Trie {public://头节点Node *root = new Node();//插入,root不进行操作void insert(string word) { N原创 2021-10-19 16:24:58 · 179 阅读 · 0 评论 -
leetcode-162 寻找峰值、leetcode-1901 找出顶峰元素 II
思路:(1)暴力思路:失去了刷题的意义;(2)二分,想较于普通二分有区别(左右都大于自身点,称为峰值),故利用局部有序进行解决,那么怎么进行迭代呢,只需要找到最大峰值点即为其他的一个峰值点;int findPeakElement(vector<int>& nums) { if (nums.size() == 1) { return 0; } int left = 0, right = nums.size() - 1; whil原创 2021-10-14 16:13:28 · 241 阅读 · 0 评论 -
剑指offer题目汇总(持续更新、整理)
二分 剑指offerII 069:山脉数组的顶部原创 2021-10-14 15:48:15 · 449 阅读 · 0 评论 -
leetcode-412 Fizz Buzz
思路:简单模拟vector<string> fizzBuzz(int n) { vector<string> res; for (int i = 0; i < n; i++) { int j = i + 1; if (j % 3 == 0 && j % 5 == 0) { res.push_back("FizzBuzz"); continue;原创 2021-10-13 17:37:57 · 222 阅读 · 0 评论 -
模拟(持续更新、整理)
链表两数相加:leetcode-2 两两交换链表只能够的节点:leetcode-24 K个一组翻转链表:leetcode-25数组下一个排序:leetcode-31 有效的数独:leetcode-36 外观数列:leetcode-38字符串字符串转换整数(atoi):leetcode-8 字符串相乘:leetcode-43...原创 2021-10-11 21:24:30 · 331 阅读 · 0 评论 -
数学(持续更新、整理)
两数相加:leetcode-2 Z字形变换:leetcode-6 整数反转:leetcode-7原创 2021-10-11 13:18:15 · 224 阅读 · 0 评论 -
bash(持续更新)
192. 统计词频 193. 有效电话号码 194. 转置文件 195. 第十行原创 2021-10-11 11:29:13 · 153 阅读 · 0 评论 -
SQL(持续更新、整理)
175. 组合两个表 176. 第二高的薪水 177. 第N高的薪水 178. 分数排名原创 2021-10-08 10:51:05 · 133 阅读 · 0 评论 -
并查集(持续更新、整理)
情侣牵手:leetcode-765 水位上升的泳池中游泳:leetcode-778 使数组唯一的最小增量:leetcode-945 交换字符串中的元素:leetcode-1202 最小体力消耗路径:leetcode-1631原创 2021-09-30 10:30:55 · 199 阅读 · 0 评论 -
搜索(持续更新、整理)
BFS 单词接龙:leetcode-127 青蛙过河:leetcode-403 打开转盘锁:leetcode-773 公交路线:leetcode-815 二叉树中所有距离为K的结点:leetcode-863 蛇梯棋:leetcode-909 最短的桥:leetcode-934 地图分析:leetcode-1162 交换字符串中的元素:leetcode-1202 DFS 电话号码的字母组合:leetcode-17 括号生成:leetcode-22 解数独.原创 2021-09-30 10:26:35 · 275 阅读 · 0 评论 -
回溯(持续更新、整理)
回溯 组合 电话号码的字母组合:leetcode-17 组合总和:leetcode-39 组合总和II:leetcode-40 组合:leetcode-77 组合总和III:leetcode-216 排列 全排列:leetcode-46 全排列II:leetcode-47 下一个排列:leetcode-31 字符串的排列:leetcode-567 字母大小写排列:leetcode-784 交换一次的先前排列:leetcode-105.原创 2021-09-29 20:53:58 · 216 阅读 · 0 评论 -
贪心(持续更新、整理)
盛最多水的容器:leetcode-11 跳跃游戏 II:leetcode-45 跳跃游戏:leetcode-55 合并区间:leetcode-56 最大子序和:leetcode-53 买卖股票的最佳时机II:leetcode-122 买卖股票的最佳时机含手续费:leetcode-714 加油站:leetcode-134 分发糖果:leetcode-135 最大数:leetcode-179 摆动序列:leetcode-376 根据身高重建队列:leetcode-406 无重叠区间:l.原创 2021-09-29 09:56:30 · 242 阅读 · 0 评论 -
动态规划(持续更新、整理)
动态规划 记忆化搜索 扰乱字符串:leetcode-87 买卖股票的最佳时机:leetcode-121 买卖股票的最佳时机II:leetcode-122 买卖股票的最佳时机III:leetcode-123 买卖股票的最佳时机IV:leetcode-188 最佳买卖股票时机含冷冻期:leetcode-309 买卖股票的最佳时机含手续费:leetcode-714 整数拆分:leetcode-343 青蛙过河:leetcode-403 目标和:leet.原创 2021-09-29 09:44:29 · 524 阅读 · 0 评论 -
位运算(持续更新、整理)
只出现一次的数字:leetcode-136 只出现一次的数字II:leetcode-137 多数元素:leetcode-169 颠倒二进制位:leetcode-190 位1的个数:leetcode-191 求众数II:leetcode-229 2的幂:leetcode-231 只出现一次的数字III:leetcode-260 比特位计数:leetcode-338 4的幂:leetcode-342 两整数之和:leetcode-371 汉明距离:leetcode-477 优美的排列:.原创 2021-09-28 10:16:20 · 200 阅读 · 0 评论 -
排序(持续更新、整理)
各种排序算法时间 & 空间复杂度 缺失的第一个正数:leetcode-41 合并区间:leetcode-56 插入区间:leetcode-57 对链表进行插入排序:leetcode-147 排序链表:leetcode-148 最大数:leetcode-179 存在重复元素III:leetcode-220 计算右侧小于当前元素的个数:leetcode-315 找到所有数组中消失的数字:leetcode-448 通过删除字母匹配到字典里最长单词:leetcode-5.原创 2021-09-28 09:55:39 · 177 阅读 · 0 评论 -
数据结构-字符串(持续更新、整理)
模拟 字符串转化整数:leetcode-8 字符串相乘:leetcode-43 最后一个单词的长度:leetcode-58 有效数组:leetcode-65 简化路径:leetcode-71 反转字符串里的单词:leetcode-151、leetcode-557 反转字符串:leetcode-541、leetcode-344 重复的子字符串:leetcode-459 子串问题 实现strStr():leetcode-28 转化成小写字母:leetcode-70.原创 2021-09-27 18:53:56 · 145 阅读 · 0 评论 -
数据结构-队列 & 优先队列(持续更新、整理)
队列 滑动窗口最大值:leecode-239 前K个高频元素:leetcode-347 绝对值不超过限制的最长连续子数组:leetcode-1438 优先队列 最大交换:leetcode-670 交换一次的先前排列:leetcode-1053 数组的相对排序:leetcode-1122 最多可以参加的会议数目:leetcode-1353 ...原创 2021-09-27 18:14:17 · 165 阅读 · 0 评论 -
数据结构-栈 & 单调栈(持续更新、整理)
栈 有效的括号:leetcode-20 最长有效括号:leetcode-32 逆波兰表达式求值:leetcode-150 最小栈:leetcode-155 用栈实现队列:leetcode-232 扁平化嵌套列表迭代器:leetcode-341 最短无序连续子数组:leetcode-581 原子的数量:leetcode-726 括号的分数:leetcode-856 仅仅反转字母:leetcode-917 验证栈序列:leetcode-946 删除字符串中的搜雨哦.原创 2021-09-27 17:53:02 · 208 阅读 · 0 评论 -
数据结构-哈希表(持续更新、整理)
两数之和:leetcode-1 无重复字符的最长子串:leetcode-3 罗马数字转整数:leetcode-13 串联所有单词的子串:leetcode-30 有效的数独:leetcode-36 只出现一次的数字 II:leetcode-137 复制带随机指针的链表:leetcode-138 LRU 缓存机制:leetcode-146 直线上最多的点数:leetcode-149 回旋镖的数量:leetcode-447 根据字符出现频率排序:leetcode-451 LFU 缓存:le.原创 2021-09-27 17:36:50 · 311 阅读 · 0 评论 -
数据结构-数组-双指针(持续更新、整理)
无重复字符的最长子串:leetcode-3 回文数:leetcode-9 盛最多水的容器:leetcode-11 三数之和:leetcode-15 最接近的三数之和:leetcode-16 四数之和:leetcode-18 删除链表的倒数第 N 个结点:leetcode-19 合并两个有序链表:leetcode-21 删除有序数组中的重复项:leetcode-26 移除元素:leetcode-27 跳跃游戏 II:leetcode-45 旋转数组:leetcode-61 删除排序数.原创 2021-09-27 15:32:51 · 237 阅读 · 0 评论 -
数据结构-数组-n数之和(持续更新、整理)
三数之和 三数之和:leetcode-15 最接近的三数之和:leetcode-16 三数之和的多种可能:leetcode-923 四数及以上之和 四数之和:leetcode-18原创 2021-09-27 15:20:08 · 177 阅读 · 0 评论 -
数据结构-数组-区间和(持续更新、整理)
前缀和 区域和检索-数组不可变:leetcode-303 二位区域和检索-矩阵不可变:leetcode-304 矩阵区域不超过K的最大数值和:leetcode-363 连续的子数组和:leetcode-523 连续数组:leetcode- 按权重随机选择:leetcode- 寻找数组的中心下标:leetcode- 和相同的二元子数组:leetcode- 最大连续1的个数 III:leetcode- 元素和为目标值的子矩阵数量:leetcode- 尽可能使字符串相等.原创 2021-09-27 15:14:40 · 346 阅读 · 0 评论 -
数据结构-数组-滑动窗口(持续更新、整理)
滑动窗口 无重复字符的最长字串:leetcode-3 串联所有单词的字串:leetcode-30 最大子序和:leetcode-53 最小覆盖字串:leetcode-76 长度最小的子数组:leetcode-209 存在重复元素II:leetcode-219 存在重复元素III:leetcode-220 字符串的排列:leetcode-567 最长和谐子序列:leetcode-594 子数组最大平均值:leetcode-643 乘积小于K的子数组:leetcode.原创 2021-09-27 09:53:04 · 173 阅读 · 0 评论 -
数据结构-数组-二分 & 三分(持续更新、整理)
二分 寻找两个正序数组的中位数:leetcode-4 两数相除:leetcode-29 搜索旋转排序数组:leetcode-33 搜索旋转排序数组 II:leetcode-81 在排序数组中查找元素的第一个和最后一个位置:leetcode-34 搜索插入位置:leetcode-35 x的平方根:leetcode-69 搜索二维矩阵:leetcode-74 搜索二维矩阵II:leetcode-240 寻找旋转排序数组中的最小值:leetcode-153 寻找旋转排..原创 2021-09-26 13:28:15 · 285 阅读 · 0 评论 -
数据结构-链表(持续更新、整理)
单链表操作 翻转: 反转链表:leetcode-206 交换 两两交换链表中的节点:leetcode-24 删除: 多链表操作原创 2021-09-26 10:16:40 · 178 阅读 · 0 评论 -
leetcode-430 扁平化多级双向链表
解题思路:需要将层级化结果转为扁平化;当前节点head,如果有child的化,需要遍历child,遍历child的过程就是一个递归的过程,递归时只需要将节点最后一个链表while(child->next) child = child->next和head->next进行相连即可(迭代方法:需要一个挨着一个进行遍历);如果没有child的化,只需要head = head->next即可;递归Node* flatten(Node* head) { Node* res =原创 2021-09-24 11:42:31 · 154 阅读 · 0 评论 -
数据结构-树- 二叉树 & 多叉树 & 字典树(持续更新、整理)
目录树的遍历 前序: 中序: 后续 、原创 2021-09-23 10:41:58 · 210 阅读 · 0 评论 -
leetcode类别总结(持续更新)
数据结构 树 二叉树(数据结构-树-二叉树_shushi6969的博客-优快云博客) 多叉树 字典树 数组 二分 三分 区间和 前缀和 差分 树状数组 线段树 滑动窗口 n数之和 链表 哈希表 栈 单调栈 队列 优先队列 双指针 字符串 字串匹配 括号问题 表达式计算 排序 多路归并 推排序 快速排序 位运算 位运算 二进制.原创 2021-09-23 10:42:18 · 468 阅读 · 0 评论 -
leetcode-155 最小栈
思路:辅助栈,一个栈保存已有数据,另一个栈存储单调栈(用于获取最小值,单调栈直接pop即可)MinStack() {}void push(int val) { st1.push(val); if (st2.empty() || val <= st2.top()) { st2.push(val);; }}void pop() { int value = st1.top(); st1.pop(); if (value ==原创 2021-09-06 10:38:56 · 156 阅读 · 0 评论 -
leetcode-1109 航班预订统计
思路:差分思想(当区间进行相加时,只需要记录凸点即可;如[1,2]区间+10,1位置+10,2位置不变只需要把1位置的数字加过来即可;而到3位置时,由于该位置没有进行加值,则需要把凹点记录即可)vector<int> corpFlightBookings(vector<vector<int> >& bookings, int n) { vector<int> res(n, 0); //dp记录最后一个凹点,不需要返回re.原创 2021-08-31 10:15:34 · 214 阅读 · 0 评论 -
leetcode-881 救生艇
思路:sort + 双指针;疑问:就是问什么可以直接选择最小的放入船里面,而不是找到最大容量的情况;因为,船的个人只有2个人,最大重量已经拿出来了,就算能找到一个最合适的重量,那么其他次大重量也是无法达到最优;如果是没有人员限制的话,就是一个背包问题了int numRescueBoats(vector<int>& people, int limit) { sort(people.begin(), people.end()); int left = 0;原创 2021-08-26 14:06:36 · 209 阅读 · 0 评论 -
leetcode-797 所有可能的路径
思路:数字小于15,果断的进行dfs搜索,简单暴力void dfs(vector<vector<int> >& graph, vector<int> temp, int start, int end, vector<vector<int> > &res) { if (start == end) { res.push_back(temp); return; } for (i原创 2021-08-25 12:00:51 · 130 阅读 · 0 评论 -
leetcode-5852 最小化目标值与所选元素的差
当时比赛时,想到的就是从上到下进行按行遍历,每一行都存储能组合的所有可能数;当在获取min值时,是直接储存了,没有最后一层查找,白白错过了Accept;最恶心的是:dp在function里面定义就出错;我简化为2层的vector放到里面也是超时;最后还是看了其他人的题解,才把dp放到function外,结果就过了;bool dp[71][5000];int minimizeTheDifference(vector<vector<int> >& mat, int t原创 2021-08-23 17:46:22 · 166 阅读 · 0 评论 -
leetcode-789 逃脱阻碍者
题意:你从原点可以选择左右上线或者不动 到target目标,但是,其他随时地区会有一些ghosts到target目标等着你,如果ghosts在你之前或者和你一起到,那你就将失败;否则成功思路:(1)题目和密室逃脱游戏不同点在于所有位置都可以走,那么从原点到target之间的最短距离就可以确定;(2)点到点之间的最短距离公式当然是直线最短,不过,这个棋盘是不能走直线的;则使用曼哈顿具体作为衡量点到点之间的距离;(3)分别原点和ghosts到target之间的距离,当ghosts到target任原创 2021-08-22 10:26:17 · 150 阅读 · 0 评论 -
leetcode-443 压缩字符串
思路:模拟,在字符不同处进行压缩int compress(vector<char>& chars) { if (chars.size() == 1) { return 1; } int j = 1; int cnt = 1; for (int i = 1; i < chars.size(); i++) { if (chars[i] == chars[i - 1]) { cnt +=原创 2021-08-21 12:08:12 · 165 阅读 · 0 评论 -
leetcode-344、leetcode-541 反正字符串
leetcode-344思路:反转整个字符串,直接双指针就可以搞定void reverseString(vector<char>& s) { if (s.size() <= 1) { return; } //双指针left、right int left = 0, right = s.size() - 1; while(left < right) { char c = s[left]; ..原创 2021-08-20 11:12:12 · 141 阅读 · 0 评论 -
leetcode-345 反转字符串中的元音字母
思路:双指针,简单bool vowels(char c) { /* if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') { return true; } if (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') { return true; }*/ //string.find() 如果找原创 2021-08-19 09:59:33 · 100 阅读 · 0 评论
分享