
leetcode
文章平均质量分 83
爱吃香菜和葱
菜鸟一枚,多多指教
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
贪心相关题目
621. 任务调度器给你一个用字符数组tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。示例 1:输入:tasks = ["..原创 2022-05-08 11:53:49 · 371 阅读 · 0 评论 -
数组相关题目
前缀和相关前缀和相关题目主要出现在要求解满足某种条件的连续子数组个数,同时在二叉树中也有437. 路径总和 III,满足某种条件的路径的数目,根据数组的前缀和,很容易快速得到某个子数组的和,同时,在这里还有一个小技巧在于,用哈希表存储前缀和时,使用第一项为sum、第二项为sum的个数时可以更加快速求解出满足条件的子数组的个数<sum, num>560. 和为 K 的子数组给你一个整数数组 nums 和一个整数k ,请你统计并返回 该数组中和为k的子数组的个数。...原创 2022-04-11 10:55:19 · 1318 阅读 · 0 评论 -
并查集相关
并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。亲戚问题问题描述:若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也..原创 2022-04-06 14:48:07 · 244 阅读 · 0 评论 -
最小生成树&最短路径问题
知识点回顾:最小生成树最小生成树算法主要有Prime算法和Kruskal算法,Prime算法主要是从构造的已有的最小生成子集中不断扩充子集,在扩充子集时满足新加入的那条边要是最小的。Kruskal算法主要是从边的角度出发,每次都从待选边中选择权值最小并且不会构成环的那条边。Prime算法模板代码:#include "bits/stdc++.h"using namespace std;//定义图中节点的数量# define NUM 10000//定义节点间的最大距离# de原创 2022-04-01 11:39:36 · 312 阅读 · 0 评论 -
递归、栈类题目
394. 字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4]的输入。示例 1:输入:s = "3[a]2[bc]"输出:"aaa...原创 2022-03-31 10:05:01 · 142 阅读 · 0 评论 -
数学类相关题目
目录HJ6 质数因子338. 比特位计数HJ6 质数因子描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为22335)数据范围:1 \le n \le 2 \times 10^{9} + 14 \1≤n≤2×109+14输入描述:输入一个整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。示例1输入:180复制输出:2 2 3 3 5思路...原创 2022-03-30 16:19:46 · 407 阅读 · 0 评论 -
STL模板操作以及字符串操作相关
主要是熟悉各种STL模板的使用347. 前 K 个高频元素给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]#include "bits/stdc++.h"using namespace std;class Solution {public.原创 2022-03-29 16:25:27 · 519 阅读 · 0 评论 -
二分查找及其变体
目录33. 搜索旋转排序数组34. 在排序数组中查找元素的第一个和最后一个位置33. 搜索旋转排序数组整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, ...原创 2022-03-16 20:54:01 · 479 阅读 · 0 评论 -
树:深度优先遍历、广度优先遍历相关
深度优先遍历模板:void dfs(int u, int v, vector<vector<pair<int, double>>> edges, vector<double> &out){ //对u节点进行dfs遍历,v是目标节点 if(u == v) return; for(const auto& node_val: edges[u]){ ..原创 2022-03-01 10:58:18 · 369 阅读 · 0 评论 -
链表相关题目
141. 环形链表给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4],原创 2022-01-19 09:42:10 · 381 阅读 · 0 评论 -
并查集算法
并查集(Disjoint-Set)是一种可以动态维护若干个不重叠的集合,并支持合并与查询两种操作的一种数据结构并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。并查集有两个基本操作:Find: 查找元素所属子集 Union:合并两个子集为一个新的集合可以使用树这种数据结构来表示集合,不同的树就是不同的集合,并查集中包含了多颗树,表示并查集中不同的子集,树的集合是森林,所有并查集属于森林。基础操作初始化:/原创 2022-01-12 13:53:44 · 393 阅读 · 1 评论 -
一些不知道怎么归类的题目
128. 最长连续序列给定一个未排序的整数数组 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]输出:9class Solution {public: int lon.原创 2022-01-10 13:55:04 · 319 阅读 · 0 评论 -
分治算法总结
分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。基本思想当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它.原创 2021-09-10 19:57:30 · 1354 阅读 · 0 评论 -
一些杂七杂八的东西
对于结构体的排序,见如下代码:struct interval{ int begin, end;};static bool Cmpare(const interval &a, const interval &b) { return a.begin <= b.begin;}vector<interval> vec;sort(vec.begin(), vec.end(), Cmpare);对于vector按照第一维数据排序,见如下代码:v原创 2021-09-10 19:57:07 · 374 阅读 · 0 评论 -
回溯-剪枝
回溯算法也可以认为是某种程度的暴力穷举,但是在暴力穷举的过程中,可以根据解的相关性质将不满足条件的解及时剪枝相关例题括号生成数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]class Solution {public: vector<string> vec; void df...原创 2021-08-13 17:03:07 · 883 阅读 · 0 评论 -
Leetcode-子数组的最小值之和
写在前面,很久没刷leetcode的题,已经没有做编程题的感觉了,这道中等难度的题看题解之后还折腾了一天左右,真的是菜鸡,有个坑,一直没有注意。题目描述:给定一个整数数组A,找到min(B)的总和,其中B的范围为A的每个(连续)子数组。由于答案可能很大,因此返回答案模10^9 + 7。思路:首先要将题目转换成对于数组A,数组中的某个元素A[i],求出A[j],使得,...原创 2019-09-15 11:02:05 · 551 阅读 · 1 评论 -
Leetcode129次周赛
1.给定一个整数数组A,只有我们可以将其划分为三个和相等的非空部分时才返回true,否则返回false。形式上,如果我们可以找出索引i+1 < j且满足(A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] + ... + A[j-1] == A[j] + A[j-1] + ... + A[A.length - 1])就可以将数组三等分...原创 2019-03-27 11:09:30 · 155 阅读 · 0 评论