自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每日一题——1833. 雪糕的最大数量

1833. 雪糕的最大数量分类:贪心;排序一趟排序后贪心class Solution { public: int maxIceCream(vector<int>& costs, int coins) { sort(costs.begin(), costs.end()); int ret = 0; for(int i=0; i<costs.size(); i++) { if (coins &

2021-07-02 13:03:00 206 1

原创 随笔-有状态服务、无状态服务

有状态例如,DBMS 数据库管理系统。假设这个服务被移出集群,后集群状态变动,再把服务放回集群,此时服务不能正常工作,因为变动的状态已经缺失应对的方法就是存储

2021-02-24 20:32:36 182

原创 每日一题——561. 数组拆分 I

分类:数组每一对数字选一个最小的出来,能够形成的最大和。即排序后的奇数项(这个项在自己对中是最小的,却又比前一对中最大的大

2021-02-16 12:20:38 158

原创 每日一题——485. 最大连续1的个数

分类:滑动窗口这题挺标准的,记录一下维护区间起止和维护区间长度的两种写法

2021-02-15 10:19:10 102

原创 每日一题——448. 找到所有数组中消失的数字

分类:数组,哈希?将值转换为下标,下标对应的数值+=n(一个原数组不可能出现的值)扫描一遍数组,数值没能大于n的下标即是没有出现的值(因为没有值被转换为这个下标)

2021-02-13 19:05:28 81

原创 每日一题——703. 数据流中的第 K 大元素

分类:堆维护一个从小到大,大小为k的优先队列,队列的第一个元素就是第k大元素。

2021-02-11 10:08:16 86

原创 每日一题——567. 字符串的排列

分类:滑动窗口如果s2窗口内的每个字母的出现次数与s1完全符合,那么ok特例:s1 > s2,必然不会出现子串

2021-02-10 10:44:56 80

原创 每日一题——978. 最长湍流子数组

978. 最长湍流子数组分类:滑动窗口不喜欢这种题class Solution {public: int maxTurbulenceSize(vector<int>& arr) { int left = -1; int i=0, j=1, ans=1; for(; j<arr.size(); j++){ if(arr[j-1] < arr[j]){ if(l

2021-02-08 15:36:42 80

原创 每日一题——665. 非递减数列

665. 非递减数列分类:数组如果在i处出现了”下落“,可以进行的修改有降低前一个数提高这一个数修改时优先降低前一个数并保持前面序列满足,因为这样不会对数组后面的部分产生影响。同理,只写出提高这一个数,对后续产生了影响的情况。class Solution {public: bool checkPossibility(vector<int>& nums) { int count = 0; for(int i=1; i<nums

2021-02-07 11:52:13 271

原创 每日一题——1423. 可获得的最大点数

分类:前缀和无论怎么选,最终结果都是前`i`个与后`k-i`个的和;可以通过逐步增加后`k-i`个的数量来遍历所有结果

2021-02-06 11:39:44 74

原创 每日一题——1208. 尽可能使字符串相等

分类:滑动窗口保证窗口不会收缩,留下的长度就是最大长度

2021-02-05 11:10:00 96

原创 每日一题——643. 子数组最大平均数 I

分类:滑动窗口维护下窗口长度的子数组和就行

2021-02-04 10:41:42 81

原创 每日一题——424. 替换后的最长重复字符

分类:滑动窗口

2021-02-02 13:36:20 65

原创 每日一题——888. 公平的糖果棒交换

888. 公平的糖果棒交换分类:数组排序后二分class Solution {public: int binarySearch(vector<int>& B, int t){ int l=0, r=B.size(); while(l<r){ int mid = (l+r) >> 1; if(B[mid] > t){ r = mid;

2021-02-01 10:56:24 80

原创 每日一题——839. 相似字符串组

分类:并查集注意提示,所有单词都是字母异位词,另规模较小,暴力比较就行

2021-01-31 11:03:09 112

原创 每日一题——778. 水位上升的泳池中游泳

分类:并查集、二分答案、最短路

2021-01-30 10:33:23 119

原创 每日一题——1631. 最小体力消耗路径

分类:并查集、二分答案、最短路

2021-01-29 11:09:27 211

原创 每日一题——724. 寻找数组的中心索引

724. 寻找数组的中心索引分类:数组左右两边相等也就是2倍等于和嘛class Solution {public: int pivotIndex(vector<int>& nums) { int n = nums.size(), total = 0, left = 0; for(int i=0; i<n; i++){ total += nums[i]; } for(int i=

2021-01-28 10:23:25 160

原创 每日一题——1579. 保证图可完全遍历

分类:图论、并查集`type3`对两个图都可用,优先考虑;再分别构建两个图就行意外地不像一个hard

2021-01-27 10:41:07 96

原创 每日一题——1128. 等价多米诺骨牌对的数量

1128. 等价多米诺骨牌对的数量分类:哈希对key进行规范class Solution {public: int numEquivDominoPairs(vector<vector<int>>& dominoes) { vector<int> cnt(100); int res=0; for(vector<int>& v:dominoes){ int va

2021-01-26 16:50:48 95

原创 每日一题——959. 由斜杠划分区域

分类:图论、并查集每一个单元格可能被` `、`/`、`\`划分。为了使划分结果一致,将一个单元格看做沿对角线拼成的四个等腰直角三角形,顺时针标号`0 1 2 3`单元格内:如果是` `,连接0123;如果是`/`,连接23 12;如果是..单元格间:每个单元格与自己的右方和下方连接

2021-01-25 11:07:47 221

原创 每日一题——674. 最长连续递增序列

674. 最长连续递增序列分类:emmmm贪心?不要i也行,换成一个计数记递增长度就好class Solution {public: int findLengthOfLCIS(vector<int>& nums) { if(nums.size() == 0) return 0; int i=0, j=0, n=nums.size(), maxsize=1; while(j<n-1){ if(nu

2021-01-24 10:00:11 72

原创 每日一题——1319. 连通网络的操作次数

一条边如果连接的是同一集合的两个点,那么待使用边++将已经联通的集合看成点,每减少一个未连通点需要一条待使用边

2021-01-23 10:52:06 118 1

原创 每日一题——989. 数组形式的整数加法

989. 数组形式的整数加法分类:数学class Solution {public: vector<int> addToArrayForm(vector<int>& A, int K) { int take = 0; vector<int> res; for(int i=A.size()-1; i>=0; i--){ take = A[i] + K%10;

2021-01-22 11:50:15 76

原创 1489. 找到最小生成树里的关键边和伪关键边

1489. 找到最小生成树里的关键边和伪关键边分类:图论、最小生成树、并查集首先,用正常方法求出生成最小生成树的cost然后遍历每一条边:* 如果去掉这条边,图不连通或者生成树`cost2`>`cost`,那么说这条边是关键边* 如果一开始就连接这条边,生成树`cost2`==`cost`,那么说明这条边是伪关键边* 其他,说明边不需要* 关键边同样满足伪关键边情况,伪关键边同样满足不需要的边的情况,所以依次判断关键边、伪关键边 class UnionFind{private:

2021-01-21 13:51:29 289

原创 每日一题——628. 三个数的最大乘积

628. 三个数的最大乘积分类:数学class Solution {public: int maximumProduct(vector<int>& nums) { sort(nums.begin(), nums.end()); int n = nums.size(); //要么两负一正,要么三正 return max(nums[0]*nums[1]*nums[n-1], nums[n-1]*nums[n-2]*

2021-01-20 12:08:46 76

原创 每日一题——1584. 连接所有点的最小费用

1584. 连接所有点的最小费用分类:图、最小生成树Prime算法class Solution {public: int minCostConnectPoints(vector<vector<int>>& points) { int n = points.size(); vector<bool> visited(n, false); vector<int> cost(n, 0);//动态记

2021-01-19 11:11:43 89

原创 每日一题——1232. 缀点成线

1232. 缀点成线分类:数学终于来道会的了class Solution {public: bool checkStraightLine(vector<vector<int>>& coordinates) { int deltx = coordinates[1][0]-coordinates[0][0]; int delty = coordinates[1][1]-coordinates[0][1]; doubl

2021-01-17 10:37:20 116

原创 每日一题——947. 移除最多的同行或同列石头

947. 移除最多的同行或同列石头分类:图、并查集以前的并查集中,总是元素由一个一元表示,而这次元素由一个二元表示最初的想法是,把行或列相同的点连接,最后点的总数-集合总数就是最多可移除。但是实际上一些例子是无法通过的。暂时想不通为什么。参考题解,做法是将每个石头的行和列连接。我觉得可以这么考虑,如果所有的石头都不同行列,那么二元的每一个位置都没有交集,二元的两个位置相连接,一共有多少个石头就有多少个集合。如果两个石头产生交集,二元连接后就只产生一个集合,视为一个元素。class Solution

2021-01-15 11:39:39 82

原创 每日一题——684. 冗余连接

684. 冗余连接树是有n-1条边的图,再增加一条边,某个子图形成环。按照给定的边,依次在并查集中相连,首次出现集合内相连的边,就是形成环的冗余边class Solution {public: int root(int *u, int p){ if (p != u[p]) u[p] = root(u, u[p]); //路径压缩优化 return u[p]; } void connect(int *u, int i, i

2021-01-14 11:14:02 58

原创 每日一题——1018. 可被 5 整除的二进制前缀

1018. 可被 5 整除的二进制前缀个位为0或5class Solution {public: vector<bool> prefixesDivBy5(vector<int>& A) { int cur = 0; vector<bool> res(A.size()); for(int i=0; i<A.size(); i++){ cur = ((cur<<1)

2021-01-14 10:51:27 66

原创 每日一题——1203. 项目管理

1203. 项目管理分类:图、拓扑排序这题不会,照着题解做的一个组有一些任务,没有被发配组的任务假设由从m开始递增的唯一组接手(如果不存在没有被分配组的任务,那么这些组接手的任务数量为0,总保持组的数量与任务数量相等)。由于任务与任务存在前后依赖,且同一组的任务需要排在一起。所以通过任务之间的依赖关系形成组之间的依赖关系。故,先对组进行拓扑排序,再依次对组所拥有的任务进行拓扑排序,即为结果class Solution {public: vector<int> topSort

2021-01-12 13:52:06 247

原创 每日一题——1202. 交换字符串中的元素

1202. 交换字符串中的元素分类:图、并查集同一个连通分量内的字符可任意交换,故各分量内部排序再放回原本位置class Solution {public: int root(int *u, int p){ if (p != u[p]) u[p] = root(u, u[p]); //路径压缩优化 return u[p]; } void connect(int *u, int i, int j){ u[

2021-01-11 15:04:58 77

原创 LeetCode周赛——223

223th5649. 解码异或后的数组分类:数学class Solution {public: vector<int> decode(vector<int>& encoded, int first) { vector<int> res(encoded.size() + 1); res[0] = first; for(int i=0; i<res.size()-1; i++){

2021-01-10 16:40:17 139

原创 每日一题——228. 汇总区间

228. 汇总区间分类:数组简单题,但是边界条件挺细节,特别是c++,还要额外注意int的边界,不然 nums[i] == nums[i-1] + 1会overflowclass Solution {public: vector<string> summaryRanges(vector<int>& nums) { vector<string> res; if(nums.size() == 0) return r

2021-01-10 12:40:40 136

空空如也

空空如也

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

TA关注的人

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