摘要: 统计重复个数 定义str =[s, n]表示 str 由 n 个字符串 s 连接构成。 例如,str == ["abc", 3] =="abcabcabc" 。 如果可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。 例如,根据定义,s1 = "abc" 可以从 阅读全文
posted @ 2023-04-26 18:11 bothgone 阅读(46) 评论(0) 推荐(0)
摘要: #include <bits/stdc++.h> using namespace std; /* 测试用例: 8 -7 10 9 2 3 8 8 1 */ const int N = 1e5 + 10; int n, a[N]; int f[N], idx; // dp数组,idx:下标指针,因为从 阅读全文
posted @ 2023-04-21 19:42 bothgone 阅读(42) 评论(0) 推荐(0)
摘要: 数字1的个数 如果计算区间[l,r]中出现次数,cnt(r) - cnt(l - 1)即可 class Solution { public: int res[10][1024]; int countDigitOne(int n) { return dp(0, 0, true, false, to_s 阅读全文
posted @ 2023-04-21 15:58 bothgone 阅读(25) 评论(0) 推荐(0)
摘要: 首先先了解两个知识点: 0和任意数字进行异或操作结果为数字本身. 两个相同的数字进行异或的结果为0. 只出现一次的数1:用0开始和数组中每个数进行异或,得到的值和下个数进行异或,最终获得的值就是出现一次(奇数次)的值。 只出现一次的数2:这题其他数字出现了3次,那么我们如果直接使用位运算异或操作的话 阅读全文
posted @ 2023-04-14 21:43 bothgone 阅读(22) 评论(0) 推荐(0)
摘要: 判断子序列 二分思路主要是对t进行预处理,用一个字典index将每个字符出现的索引位置按顺序存储下来 int m = s.length(), n = t.length(); vector<vector<int>> index(256, vector<int>()); // 先记下 t 中每个字符出现 阅读全文
posted @ 2023-04-14 18:42 bothgone 阅读(14) 评论(0) 推荐(0)
摘要: 滑动窗口适合在题目要求连续的情况下使用 相关题目 模板: /* 滑动窗口算法框架 */ void slidingWindow(string s) { // 用合适的数据结构记录窗口中的数据 unordered_map<char, int> window; int left = 0, right = 阅读全文
posted @ 2023-04-12 18:56 bothgone 阅读(15) 评论(0) 推荐(0)
摘要: 找奇数次不同,可以用异或来操作。 相关题目:只出现一次的数字、找不同 阅读全文
posted @ 2023-04-11 21:15 bothgone 阅读(28) 评论(0) 推荐(0)
摘要: 字符串相关 sscanf(log.c_str(), "%d:%[^:]:%d", &idx, type, &time);//string.c_str():将string转成一个字符串指针,%[a-z]:表示尽可能多的匹配a-z中的任意字符, %[^a-z]:表示匹配到a-z中的任意字符停止匹配。a- 阅读全文
posted @ 2023-04-11 17:08 bothgone 阅读(19) 评论(0) 推荐(0)
摘要: 缺失的第一个正数 对于一个长度为 N 的数组,其中没有出现的最小正整数只能在[1,N+1]中。这是因为如果[1,N]都出现了,那么答案是N+1,否则答案是[1,N]中没有出现的最小正整数。 这样一来,我们将所有在[1,N]范围内的数放入哈希表,也可以得到最终的答案。而给定的数组恰好长度为N。 这让我 阅读全文
posted @ 2023-04-09 19:45 bothgone 阅读(12) 评论(0) 推荐(0)
摘要: 股票买卖模型 题目描述 给定一个长度为 $N$ 的数组,数组中的第 $i$ 个数字表示一个给定股票在第 $i$ 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 输入格式 第一行包含整数 $N$,表示数组长度 阅读全文
posted @ 2023-04-08 16:29 bothgone 阅读(117) 评论(0) 推荐(0)