自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 CodeForces 1272E : Nearest Opposite Parity

解:建图,i ->i + a[i] 和 i-> i - a[i]. 一开始考虑用dfs,d[i] = min(dfs(i, i + a[i]), dfs(i, i - a[i])),一种dp思想,但图存在环,有可能出现d[i + a[i]]的最优解依赖于d[i]的最优解,这样就出现了后效性,无法得到局部最优解。从位置 i,你可以移动到位置 i-a[i] 或者 i+a[i],移动后的位置必须在 [1,n] 内。输入 n(≤2e5) 和长为 n 的数组 a(1≤a[i]≤n),下标从 1 开始。

2023-02-18 12:40:47 191 1

原创 多重背包-单调队列优化

多重背包解法里最常见的是转化为0-1背包。

2022-08-10 15:42:02 975

转载 无法生成core文件

设置过ulimit -c unlimited后,发生核心转储,还是无法产生core文件。在查询了许多博客后,终于在ubuntu无法生成core文件_lockln的博客-CSDN博客_无法生成core文件中找到了解决方法。ubuntu 的 cat /proc/sys/kernel/core_pattern输出|/usr/share/apport/apport %p %s %c %d %P %E,查了之后发现ubuntu预装了apport错误收集系统,sudo service apport stop之后就可以了

2022-07-07 22:05:46 474

原创 Leetcode 494. 目标和

给你一个整数数组 nums 和一个整数 target 。向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 :例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。示例 1:输入:nums = [1,1,1,1,1], target = 3输出:5解释:一共有 5 种方法让最终目标和为

2022-03-30 10:03:47 307 1

原创 Leetcode 154. 寻找旋转排序数组中的最小值 II

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个可能存在 重复 元素值的数

2022-03-29 10:04:10 79

转载 剑指 Offer 65. 不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a,b均可能是负数或 0结果不会溢出 32 位整数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof解法:只能使用位运算了,加法规则如下, 当前位 进...

2022-03-22 11:18:15 74

转载 Leetcode 1928. 规定时间内到达终点的最小花费

一个国家有 n个城市,城市编号为0到n - 1,题目保证 所有城市都由双向道路 连接在一起。道路由二维整数数组edges表示,其中edges[i] = [xi, yi, timei]表示城市xi 和yi之间有一条双向道路,耗费时间为timei分钟。两个城市之间可能会有多条耗费时间不同的道路,但是不会有道路两头连接着同一座城市。每次经过一个城市时,你需要付通行费。通行费用一个长度为 n且下标从 0开始的整数数组passingFees表示,其中passingFees...

2022-03-17 18:59:26 469

原创 剑指 Offer 51. 数组中的逆序对

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof解法:树状数组维护前缀和。树状数组的单点更新和查询的时间复杂度都是O(logn)。.

2022-03-02 10:21:23 98

原创 Leetcode 完成比赛的最少时间

给你一个下标从 0开始的二维整数数组tires,其中tires[i] = [fi, ri]表示第i种轮胎如果连续使用,第x圈需要耗时fi * 秒。比方说,如果fi = 3且ri = 2,且一直使用这种类型的同一条轮胎,那么该轮胎完成第1圈赛道耗时 3秒,完成第 2圈耗时3 * 2 = 6秒,完成第 3圈耗时3 * 22 = 12秒,依次类推。同时给你一个整数changeTime和一个整数numLaps。比赛总共包含numLaps圈,...

2022-02-28 19:33:33 226

原创 Leetcode 2163. 删除元素后和的最小差值

给你一个下标从 0开始的整数数组nums,它包含3 * n个元素。你可以从 nums中删除 恰好n个元素,剩下的 2 * n个元素将会被分成两个 相同大小的部分。前面n个元素属于第一部分,它们的和记为sumfirst。后面n个元素属于第二部分,它们的和记为sumsecond。两部分和的 差值记为sumfirst - sumsecond。比方说,sumfirst = 3 且sumsecond = 2,它们的差值为1。再比方,sumfirst ...

2022-02-19 10:22:46 7928

原创 随机快速排序与堆排序

1.快速排序(随机)快速排序的时间复杂度为, 最坏情况为,而随机快速排序的期望时间复杂度为O(n)。或许还要种个时间的种子 srand(unsigned(time(NULL))); void quickSort(vector<int> &nums, int L, int R){ if (L >= R) return; int id = rand() % (R - L + 1) + L; int pivot = nums[id]; s...

2022-02-17 13:48:27 216

原创 LeetCode 2157. 字符串分组

给你一个下标从0开始的字符串数组words。每个字符串都只包含 小写英文字母。words中任意一个子串中,每个字母都至多只出现一次。如果通过以下操作之一,我们可以从 s1的字母集合得到 s2的字母集合,那么我们称这两个字符串为 关联的:往s1的字母集合中添加一个字母。从s1的字母集合中删去一个字母。将 s1中的一个字母替换成另外任意一个字母(也可以替换为这个字母本身)。数组words可以分为一个或者多个无交集的 组。如果一个字符串与另一个字符串关联,那么它们应...

2022-02-15 21:27:29 506

原创 Leetcode周赛280_数组的最大与和

给你一个长度为n的整数数组nums和一个整数numSlots,满足2 * numSlots >= n。总共有numSlots个篮子,编号为1到numSlots。你需要把所有n个整数分到这些篮子中,且每个篮子 至多有 2 个整数。一种分配方案的 与和定义为每个数与它所在篮子编号的 按位与运算结果之和。比方说,将数字[1, 3]放入篮子1中,[4, 6] 放入篮子2中,这个方案的与和为(1 AND 1) + (3 AND 1) + (4 AND 2...

2022-02-14 10:13:18 7658

原创 LeetCode 2166. 设计位集

位集 Bitset 是一种能以紧凑形式存储位的数据结构。请你实现 Bitset 类。Bitset(int size) 用 size 个位初始化 Bitset ,所有位都是 0 。void fix(int idx) 将下标为 idx 的位上的值更新为 1 。如果值已经是 1 ,则不会发生任何改变。void unfix(int idx) 将下标为 idx 的位上的值更新为 0 。如果值已经是 0 ,则不会发生任何改变。void flip() 翻转 Bitset 中每一位上的值。换句话说,所有值为

2022-02-11 21:16:06 116

原创 LeetCode 10. 正则表达式匹配

给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。示例 1:输入:s = "aa", p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa", p = "a*"输出:true解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是...

2022-02-11 18:37:08 6546

原创 Leetcode 2127. 参加会议的最多员工数

一个公司准备组织一场会议,邀请名单上有n位员工。公司准备了一张 圆形的桌子,可以坐下 任意数目的员工。员工编号为 0到 n - 1。每位员工都有一位 喜欢的员工,每位员工当且仅当他被安排在喜欢员工的旁边,他才会参加会议。每位员工喜欢的员工 不会是他自己。给你一个下标从 0开始的整数数组favorite,其中favorite[i]表示第i位员工喜欢的员工。请你返回参加会议的最多员工数目。示例 1:输入:favorite = [2,2,1,2]输...

2022-01-03 19:57:18 3031

原创 LeetCode 473. 火柴拼正方形

还记得童话《卖火柴的小女孩》吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到。输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。示例 1:输入: [1,1,2,2,2]输出: true解释: 能拼成一个边长为2的正方形,每边两根火柴。示例2:输入: [3,3,3,3,4]输出: false解释: 不能用所有火柴拼成一个正方形。注意:给定的火柴长度.

2022-01-03 11:16:01 192

原创 LeetCode 剑指 Offer 56 - I. 数组中数字出现的次数

一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums.length <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.

2022-01-03 10:58:29 2570

原创 LeetCode 剑指 Offer 35. 复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]示例 3:.

2021-12-29 10:43:41 73

原创 LeetCode 226. 翻转二叉树

翻转一棵二叉树。示例:输入: 4 / \ 2 7/ \ / \1 3 6 9输出: 4 / \ 7 2/ \ / \9 6 3 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree解法一:递归:交换左右子树的指针。class Solution {public: TreeNod...

2021-12-23 11:30:24 3823

原创 Leetcode 2102. 序列顺序查询

一个观光景点由它的名字name 和景点评分score组成,其中name是所有观光景点中唯一的字符串,score是一个整数。景点按照最好到最坏排序。景点评分 越高,这个景点越好。如果有两个景点的评分一样,那么 字典序较小的景点更好。你需要搭建一个系统,查询景点的排名。初始时系统里没有任何景点。这个系统支持:添加 景点,每次添加 一个 景点。查询 已经添加景点中第i好的景点,其中i是系统目前位置查询的次数(包括当前这一次)。比方说,如果系统正在进行第 4次查询,那么需...

2021-12-21 19:10:39 148

原创 LeetCode 2002. 两个回文子序列长度的最大乘积

给你一个字符串s,请你找到s中两个不相交回文子序列,使得它们长度的乘积最大。两个子序列在原字符串中如果没有任何相同下标的字符,则它们是不相交的。请你返回两个回文子序列长度可以达到的最大乘积。子序列指的是从原字符串中删除若干个字符(可以一个也不删除)后,剩余字符不改变顺序而得到的结果。如果一个字符串从前往后读和从后往前读一模一样,那么这个字符串是一个 回文字符串。示例 1:输入:s = "leetcodecom"输出:9解释:最优方案是选择 "ete" ...

2021-12-20 15:33:25 131

原创 Leetcode 1947. 最大兼容性评分和

有一份由 n 个问题组成的调查问卷,每个问题的答案要么是 0(no,否),要么是 1(yes,是)。这份调查问卷被分发给 m 名学生和 m 名导师,学生和导师的编号都是从 0 到 m - 1 。学生的答案用一个二维整数数组 students 表示,其中 students[i] 是一个整数数组,包含第 i 名学生对调查问卷给出的答案(下标从 0 开始)。导师的答案用一个二维整数数组 mentors 表示,其中 mentors[j] 是一个整数数组,包含第 j 名导师对调查问卷给出的答案(下标从 0 开始)

2021-12-18 10:46:50 127

原创 LeetCode 剑指 Offer 64. 求1+2+…+n

求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出:6示例 2:输入: n = 9输出:45限制:1 <= n<= 10000解法一:递归本题要求看似过分,实则是考脑子,一种脑筋急转弯。根据(n+1)n/2,我想到了<<位运算,但上面乘法我不知咋解决。看了题解才想到用位运算的短路机制即A&&B时...

2021-12-17 12:10:17 1261

原创 LeetCode 1255. 得分最高的单词集合

你将会得到一份单词表words,一个字母表letters(可能会有重复字母),以及每个字母对应的得分情况表score。请你帮忙计算玩家在单词拼写游戏中所能获得的「最高得分」:能够由letters里的字母拼写出的任意属于 words单词子集中,分数最高的单词集合的得分。单词拼写游戏的规则概述如下:玩家需要用字母表letters 里的字母来拼写单词表words中的单词。可以只使用字母表letters 中的部分字母,但是每个字母最多被使用一次。单词表 words中每个单...

2021-12-16 19:43:06 106

原创 LeetCode 526. 优美的排列

假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm(下标从 1 开始),只要满足下述条件 之一 ,该数组就是一个 优美的排列 :perm[i] 能够被 i 整除i 能够被 perm[i] 整除给你一个整数 n ,返回可以构造的 优美排列 的 数量 。示例 1:输入:n = 2输出:2解释:第 1 个优美的排列是 [1,2]: - perm[1] = 1 能被 i = 1 整除 - perm[2] = 2 能被 i = 2 整除第 2 个优美的排...

2021-12-16 11:05:02 416

原创 Leetcode 1617. 统计子树中城市之间最大距离

给你n个城市,编号为从1 到n。同时给你一个大小为n-1的数组edges,其中edges[i] = [ui, vi]表示城市ui和vi之间有一条双向边。题目保证任意城市之间只有唯一的一条路径。换句话说,所有城市形成了一棵树。一棵子树是城市的一个子集,且子集中任意城市之间可以通过子集中的其他城市和边到达。两个子树被认为不一样的条件是至少有一个城市在其中一棵子树中存在,但在另一棵子树中不存在。对于d从1 到n-1,请你找到城市间最大距离恰好为 d的所...

2021-12-14 11:26:49 2043

原创 LeetCode 5955. 摘水果

在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] = [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排列 ,每个 positioni 互不相同 。另给你两个整数 startPos 和 k 。最初,你位于 startPos 。从任何位置,你可以选择 向左或者向右 走。在 x 轴上每移动 一个单位 ,就记作 一步 。你总共可以走 最

2021-12-13 20:15:21 995

原创 Leetcode 847. 访问所有节点的最短路径

存在一个由 n 个节点组成的无向连通图,图中的节点按从 0 到 n - 1 编号。给你一个数组 graph 表示这个图。其中,graph[i] 是一个列表,由所有与节点 i 直接相连的节点组成。返回能够访问所有节点的最短路径的长度。你可以在任一节点开始和停止,也可以多次重访节点,并且可以重用边。示例 1:输入:graph = [[1,2,3],[0],[0],[0]]输出:4解释:一种可能的路径为 [1,0,2,0,3]示例 2:输入:graph = [[1],[0,.

2021-12-13 11:30:35 472

原创 LeetCode 1755. 最接近目标值的子序列和

给你一个整数数组 nums 和一个目标值 goal 。你需要从 nums 中选出一个子序列,使子序列元素总和最接近 goal 。也就是说,如果子序列元素和为 sum ,你需要 最小化绝对差 abs(sum - goal) 。返回 abs(sum - goal) 可能的 最小值 。注意,数组的子序列是通过移除原始数组中的某些元素(可能全部或无)而形成的数组。示例 1:输入:nums = [5,-7,3,5], goal = 6输出:0解释:选择整个数组作为选出的子序列,元素和为 6

2021-12-11 13:59:50 507

原创 LeetCode 805. 数组的均值分割

给定的整数数组 A ,我们要将 A数组 中的每个元素移动到 B数组 或者 C数组中。(B数组和C数组在开始的时候都为空)返回true ,当且仅当在我们的完成这样的移动后,可使得B数组的平均值和C数组的平均值相等,并且B数组和C数组都不为空。示例:输入:[1,2,3,4,5,6,7,8]输出: true解释: 我们可以将数组分割为 [1,4,5,8] 和 [2,3,6,7], 他们的平均值都是4.5。注意:A 数组的长度范围为 [1, 30].A[i] 的数据范围为 [0, 1000.

2021-12-11 13:44:45 774

原创 LeetCode 7. 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x <= 231 - 1来源:...

2021-12-10 10:11:48 284

原创 LeetCode 372. 超级次方

你的任务是计算ab对1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入:a = 2, b = [3]输出:8示例 2:输入:a = 2, b = [1,0]输出:1024示例 3:输入:a = 1, b = [4,3,3,8,5,2]输出:1示例 4:输入:a = 2147483647, b = [2,0,0]输出:1198提示:1 <= a <= 231 - 11 <= b.length ...

2021-12-09 20:54:30 172

原创 LeetCode 50. Pow(x, n)

实现pow(x, n),即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 <x< 100.0-231<= n <=231-1-104 &l...

2021-12-09 11:30:39 209

原创 LeetCode 332. 重新安排行程

给你一份航线列表 tickets ,其中 tickets[i] = [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前。假定所有机票至少存在一种合理的行程。且所有的机票 必须都用一次 且 只能用一次。示例 1

2021-12-06 19:28:42 461

原创 LeetCode 5932. 合法重新排列数对

给你一个下标从 0开始的二维整数数组pairs,其中pairs[i] = [starti, endi]。如果 pairs的一个重新排列,满足对每一个下标 i (1 <= i < pairs.length)都有endi-1 == starti ,那么我们就认为这个重新排列是pairs 的一个 合法重新排列 。请你返回 任意一个pairs 的合法重新排列。注意:数据保证至少存在一个 pairs的合法重新排列。示例 1:输入:pairs = [[5,1],[...

2021-12-06 19:21:40 302

原创 LeetCode 1434. 每个人戴不同帽子的方案数

总共有 n个人和 40 种不同的帽子,帽子编号从 1 到 40 。给你一个整数列表的列表hats,其中hats[i]是第 i个人所有喜欢帽子的列表。请你给每个人安排一顶他喜欢的帽子,确保每个人戴的帽子跟别人都不一样,并返回方案数。由于答案可能很大,请返回它对10^9 + 7取余后的结果。示例 1:输入:hats = [[3,4],[4,5],[5]]输出:1解释:给定条件下只有一种方法选择帽子。第一个人选择帽子 3,第二个人选择帽子 4,最后一个人选择帽子 5。...

2021-12-03 12:34:34 686

原创 LeetCode 2087. 网格图中机器人回家的最小代价

给你一个m x n的网格图,其中(0, 0)是最左上角的格子,(m - 1, n - 1)是最右下角的格子。给你一个整数数组startPos,startPos = [startrow, startcol]表示 初始有一个 机器人在格子(startrow, startcol)处。同时给你一个整数数组homePos,homePos = [homerow, homecol]表示机器人的 家在格子(homerow, homecol)处。机器人需要回家。每一步它可以往四个方向移...

2021-12-02 19:10:29 765

转载 Leetcode 2088. 统计农场中肥沃金字塔的数目

有一个 矩形网格状的农场,划分为m行n列的单元格。每个格子要么是 肥沃的(用 1表示),要么是 贫瘠的(用 0表示)。网格图以外的所有与格子都视为贫瘠的。农场中的金字塔区域定义如下:区域内格子数目 大于1且所有格子都是 肥沃的。金字塔 顶端是这个金字塔 最上方的格子。金字塔的高度是它所覆盖的行数。令(r, c)为金字塔的顶端且高度为 h,那么金字塔区域内包含的任一格子(i, j)需满足r <= i <= r + h - 1且c - (i ...

2021-12-02 18:54:17 195

原创 LeetCode 1349. 参加考试的最大学生数

给你一个m* n的矩阵 seats表示教室中的座位分布。如果座位是坏的(不可用),就用'#'表示;否则,用'.'表示。学生可以看到左侧、右侧、左上、右上这四个方向上紧邻他的学生的答卷,但是看不到直接坐在他前面或者后面的学生的答卷。请你计算并返回该考场可以容纳的一起参加考试且无法作弊的最大学生人数。学生必须坐在状况良好的座位上。示例 1:输入:seats = [["#",".","#","#",".","#"], [".","#","#","...

2021-12-01 19:59:54 1741

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除