随笔分类 -  LeetCode

上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页
摘要:给你一个n节点的无向带权连通图,同时告诉你边的端点和权值 对于部分权为-1的边,可以进行修改为任意值,最后使得初始点到目标点最短距离为target ###1. Dijkstra 第一次使用迪杰斯特拉算法,将所有能修改的权值视作1,计算到各点的最短距离 判断该距离是否有操作空间,满足要求的情况下计算要 阅读全文
posted @ 2023-05-23 01:35 失控D大白兔
摘要:给你一棵以 root 为根的 二叉树 ,请你返回任意二叉搜索子树的最大键值和 ###1. 中序遍历+记录多个返回值 ``` class Solution { public: //求子树键值需要后序遍历,判断二叉搜索树需要中序遍历 //判断二叉树也可以用判断左右值加中序遍历的方式,所以这里采用中序遍历 阅读全文
posted @ 2023-05-21 23:00 失控D大白兔
摘要:**模板** ``` int n = nums.size(); vector left(n, -1); //贡献法记录左辖域,开区间 vector right(n, n); //贡献法记录右辖域,开区间 stack st; //单调栈,降序记录 for(int i=0;i 单调栈+前缀和 ``` c 阅读全文
posted @ 2023-05-19 21:02 失控D大白兔
摘要:给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 ###1. 单调栈 假如要遍历所有区间,哪怕可以直接获得最小值,时间复杂度也是O(n^2^) 这里我们不逐个找对应区间,而是计算每个值对区间的贡献,可以将时间复杂度降到O(n) 其实也就找遍历时 阅读全文
posted @ 2023-05-19 17:19 失控D大白兔
摘要:求所有子序列最大值的平方乘以最小值的和 ###1. 数学规律 首先可以发现顺序对结果没有影响,对原数组按升序进行排序,方便从小到大遍历枚举 由于数据量很大,一般只会遍历一次,所以要找数学规律 考虑遍历时的无后效性,前面数组遍历完后,必然会给后面留下一个值 可以通过这个值和当前遍历值计算出以当前值为结 阅读全文
posted @ 2023-05-19 14:51 失控D大白兔
摘要:一个工作时间段可以连续工作sessiontime个小时 给你任务列表task,task[i]表示第i项任务花费时间 求完成全部工作所需最小时间段(可以按任意顺序完成任务) ####1. 回溯法 回溯时按任务下标推进,边界条件为任务下标等于任务长度 同时要记录回溯几个状态, 分别是当前任务下标、已用时 阅读全文
posted @ 2023-05-19 13:11 失控D大白兔
摘要:###一. [区间合并、插入、重叠数](https://www.cnblogs.com/929code/p/16369464.html) ###二. [区间内满足条件的点对、区间和、偏序关系数(树状数组和前缀和)](https://www.cnblogs.com/929code/p/17366099 阅读全文
posted @ 2023-05-19 00:37 失控D大白兔
摘要:所以矩形左下角为(0,0),右上角为(x,y) 给你一个二维整数数组 rectangles 和 二维整数数组 points 求每个点占据的矩形数目 ###1. 暴力 遍历点然后遍历矩形 class Solution { public: vector<int> countRectangles(vect 阅读全文
posted @ 2023-05-18 16:12 失控D大白兔
摘要:1. 将整数转化为负二进制形式 vector<int> baseNeg2(int n) { if(n==0) return {0}; vector<int> res; int cur; int back; while(n!=0){ cur = n&1; back = abs(cur); res.pu 阅读全文
posted @ 2023-05-18 00:51 失控D大白兔
摘要:给你一个长度为 n 的数组 nums ,该数组由从 1 到 n 的不同整数组成 另给你一个正整数 k ,统计并返回 nums 中的中位数等于 k 的非空子数组的数目 ###1. 前缀和 + 哈希 容易知道子数组必然包含数字k,其实就是列举包含k子数组,计算并且中位数为k的个数 同时列举两侧的复杂度是 阅读全文
posted @ 2023-05-17 19:30 失控D大白兔 阅读(51) 评论(0) 推荐(0)
摘要:你需要制定一份 d 天的工作计划表。工作之间存在依赖,要想执行第 i 项工作,你必须完成全部 j 项工作( 0 <= j < i)。 你每天 至少 需要完成一项任务。工作计划的总难度是这 d 天每一天的难度之和,而一天的工作难度是当天应该完成工作的最大难度。 给你一个整数数组 jobDifficul 阅读全文
posted @ 2023-05-16 10:27 失控D大白兔
摘要:n 对情侣坐在连续排列的 2n 个座位上,想要牵到对方的手。 人和座位由一个整数数组 row 表示,其中 row[i] 是坐在第 i 个座位上的人的 ID。情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2n-2, 2n-1)。 返回最少交换座位的次数,以便 阅读全文
posted @ 2023-05-15 17:15 失控D大白兔
摘要:数组值定义为所有相邻元素差值的绝对值之和 翻转任意连续的子数组一次,求可行的最大值 ###1. 暴力分析(超时) 翻转后子数组内部数组值不变,所以只需分析子数组的边界翻转后带来的损失和收益 遍历取最大值即可,注意分情况讨论 枚举所有左右边界 class Solution { public: int 阅读全文
posted @ 2023-05-12 01:54 失控D大白兔
摘要:给定nums数组和一个初始值start,目标值goal,对start进行以下三种运算得到goal x + nums[i]、x - nums[i]、x ^ nums[i] 返回最少运算次数 ###1. 广度优先+哈希去重剪枝 class Solution { public: int minimumOp 阅读全文
posted @ 2023-05-12 01:18 失控D大白兔
摘要:给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在相同值形成的环。 一个环是一条开始和结束于同一个格子的长度大于等于 4 的路径。对于一个给定的格子 你可以移动到它上、下、左、右四个方向相邻的格子之一,可以移动的前提是这两个格子有相同的值 ###1. 深度优 阅读全文
posted @ 2023-05-11 14:57 失控D大白兔
摘要:给你一个整数数组 arr 和一个整数 d arr存储着一些柱子的高度,整数d为你能跳的最远距离,可以选择往左跳和往右跳 除此以外,跳跃途径中只能有更低的柱子存在 你可以选择数组的任意下标开始跳跃,请你返回你最多可以访问多少个下标 ###1. 排序+动态规划 class Solution { publ 阅读全文
posted @ 2023-05-10 23:02 失控D大白兔
摘要:从0位置跳到末位置,每次可以往左跳、往右跳一格,或跳到有与该位置相同数值的地方,求最小跳跃次数 ###1. 广度优先搜索+哈希预处理+动态规划 class Solution { public: vector<int> dp;//dp[i]表示到达i位置最小操作数 int minJumps(vecto 阅读全文
posted @ 2023-05-10 22:39 失控D大白兔
摘要:返回将箱子推到目标位置的最小推动次数,如果无法做到,请返回 -1。 ###一. 01广度优先搜索 + 双端队列 将人与箱子位置状态看做一个节点,在该题中人移动无需代价,即节点转移无需代价,所以边的权值为0 推动箱子移动耗费代价,推动箱子的边权值为1 最终目标是箱子达到目标位置,人的位置可能有多个,问 阅读全文
posted @ 2023-05-09 00:38 失控D大白兔
摘要:在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒 返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量 ###1. 打表(数据量较小) 列出60的倍数+哈希查找 class Solution { public: int numPairsDivisibleBy60(vector<i 阅读全文
posted @ 2023-05-07 01:27 失控D大白兔
摘要:请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目 1. 回溯+标记 每一趟跑一个青蛙(超时) class Solution { public: int minNumberOfFrogs(string croakOfFrogs) { int n =croakOfFrogs.size(); strin 阅读全文
posted @ 2023-05-06 04:22 失控D大白兔

上一页 1 2 3 4 5 6 7 8 9 10 ··· 13 下一页