leetcode
文章平均质量分 69
该专栏旨在敦促自己刷题,诸君共勉
长命百岁️
这个作者很懒,什么都没留下…
展开
-
差分约束与拓扑排序
差分约束与拓扑排序原创 2022-06-06 17:00:34 · 224 阅读 · 1 评论 -
树状数组详解
文章目录1.树状数组1.1.定义1.2.lowbit(i)1.3.树状数组的查询1.4.树状数组的修改2.逆序对问题2.1.输入格式2.2.输出格式2.3.说明/提示2.4.思想2.5.代码1.树状数组树状数组能够高效处理【对一个数组不断修改并求其前缀和】的问题,其修改与查询操作的复杂度都是 O(logn)O(\log{n})O(logn)1.1.定义对于已经维护好的前缀和,如果需要修改,则需要付出 O(n)O(n)O(n) 的代价比如更改数组中的一个数,则其之后的前缀和的值都需要进行修改原创 2022-05-07 23:25:20 · 1382 阅读 · 0 评论 -
常用最短路算法详解
文章目录1.弗洛伊德 Floyd-Warshall2.迪杰斯塔拉 Dijkstra2.1.算法流程2.2.一些解释3.SPFA3.1.前面两种算法的局限性3.2.Bellman-Ford算法3.3.SPFA(Shortest Path Faster Algorithm)4.负权环路1.弗洛伊德 Floyd-Warshall主要想法是,通过逐渐增加允许经过的节点,来更新最短路,本质上是动态规划方法求取图中任意两点之间的距离f[k][x][y] :只允许经过节点 1 到 k(不包括两个端点,两个原创 2022-05-04 00:44:28 · 667 阅读 · 0 评论 -
图和树的性质与应用(一)
文章目录1.图的存储1.1.链式前向星2.图的遍历2.1.图的遍历2.1.1.DFS2.1.2.BFS2.2.树的直径3.并查集3.1.实现3.2.初始化3.3.查询3.4.合并4.最小生成树4.1.Kruskal4.2.Prim4.3.例题1.图的存储1.1.链式前向星主要思想为:以数组来模拟链表有一个边数组 Edges,每条边通过其 id 进行索引。比如Edges[1]有一个头数组 head,代表以每个顶点为头的第一条边的 id。struct Edge{ int u, v, w,原创 2022-05-01 10:50:14 · 356 阅读 · 0 评论 -
leetcode--递增的三元子序列
题目给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k)且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回false 。示例1:输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意示例2:输入:nums = [5,4,3,2,1]输出:false解释:不存在原创 2022-03-21 21:56:43 · 527 阅读 · 0 评论 -
leetcode--无重叠区间
题目给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。示例1:输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例2:输入: intervals = [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例3:输入:原创 2022-03-21 17:15:16 · 224 阅读 · 0 评论 -
c++迭代器访问二维数组遇到的问题
前言在用如下代码使用迭代器访问二维数组时,编译器报错,十分疑惑,遂查找相关内容vector<vector<int>> a = {{2, 1}, {1, 2}};cout << *(a.begin() + 1)[0];尝试这里就更疑惑了,就算解引用不成功,->begin()也应该是个指针啊,怎么可以输出1呢?vector<vector<int>> a = {{2, 1}, {1, 2}};cout << *(a.be原创 2022-03-19 23:45:34 · 1086 阅读 · 0 评论 -
leetcode--多数元素
题目给定一个大小为 n的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1输入:[3,2,3]输出:3示例2输入:[2,2,1,1,1,2,2]输出:2本题主要提供分治思路,因为分治是常用的算法,博主想要练习一下。这里分治并不是最好的算法,详情可参考 多数元素 - 多数元素 - 力扣(LeetCode) (leetcode-cn.com)分治如果数 a 是数组 nums 的众数,如果我原创 2022-03-18 23:42:05 · 405 阅读 · 0 评论 -
leetcode--搜索旋转排序数组
题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为[nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如,[0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个原创 2022-03-14 19:47:12 · 1798 阅读 · 1 评论 -
C++ reverse函数
前言使用之前需要引入头文件#include<algorithm>该函数的功能是对指定范围内的值进行翻转。用法语法reverse(begin, begin + n),n 是翻转元素的个数翻转范围为[begin,begin + n),是左闭右开区间举例普通数组int a[] = {1,2,3,4};reverse(a, a + 2);for(int b : a) cout << b << ' ';>>2 1 3 4STL容器原创 2022-03-13 17:41:17 · 3490 阅读 · 1 评论 -
leetcode--电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"] 提示:0 <= digits.lengt原创 2022-03-12 17:16:11 · 166 阅读 · 0 评论 -
leetcode--最接近的三数之和
题目给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。实例一输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。实例二输入:nums = [0,0,0], target = 1输出:0提示:3 <= nums.length <=原创 2022-03-12 15:51:20 · 940 阅读 · 0 评论 -
leetcode--字符串转整数(atoi)
题目请你来实现一个myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“123原创 2022-03-09 17:01:12 · 92 阅读 · 0 评论 -
leetcode--盛最多水的容器
题目给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height原创 2022-03-05 20:06:08 · 163 阅读 · 0 评论 -
leetcode--整数反转
题目给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231-2^{31}−231, 2312^{31}231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0思路本题的难点在于如何判断一个数是否越界。因为原创 2022-03-05 17:03:10 · 325 阅读 · 0 评论 -
leetcode--最长回文子串
题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”提示:1 <= s.length <= 1000s 仅由数字和英文字母组成动态规划因为是寻找最长回文子串,因此我们会不断扩大搜索范围。令dp[i][j]=1代表索引从i到j的子串是回文子串。若dp[i][j]是回文子串,则dp[i+1][j-1]一定也是回文子串,且dp[j]=原创 2022-03-02 21:45:15 · 496 阅读 · 0 评论 -
leetcode--无重复字符的最长子串
题目描述给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个原创 2022-03-02 00:07:05 · 242 阅读 · 0 评论 -
leetcode--两数相加
题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9],原创 2022-02-26 22:55:16 · 120 阅读 · 0 评论