- 博客(41)
- 收藏
- 关注
原创 力扣第293场周赛
第一题:移除字母异位后的结果数组思路:模拟。用哈希表来存储一个排序好的字符串和下标代码:class Solution {public: vector<string> removeAnagrams(vector<string>& words) { unordered_map<string, int> mp; vector<string> ans; for(int i
2022-05-18 17:27:46
189
原创 力扣第78场双周赛
第一题:找到一个数字K美丽值思路:模拟。代码:class Solution {public: int divisorSubstrings(int num, int k) { int cnt = 0; string s = to_string(num); for(int i = 0; i < s.size() - k + 1; i ++){ int sum = 0;
2022-05-18 17:26:08
149
原创 AcWing 第51场周赛
第一题:上车思路:模拟代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 110;int a[N], b[N];int n;int main(){ cin >> n; for(int i = 0; i < n; i ++) cin >> a[i] &
2022-05-18 10:54:17
255
原创 AcWing 第50场周赛
第一题:缺少的数思路:排序后查找代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1e5 + 10;int a[N];int n;int main(){ cin >> n; for(int i = 0; i < n - 1; i ++) cin >&g
2022-05-13 15:28:11
183
1
原创 力扣第292场周赛
第一题:字符串中最大的3位相同的数字思路:双指针+模拟代码:class Solution {public: string largestGoodInteger(string num) { string s; for(int i = 0; i < num.size(); i ++){ int j = i; while(j < num.size() && num[i] == num
2022-05-12 11:39:27
118
原创 AcWing第49场周赛
第一题:组队思路:直接循环判断代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){ int n, k; cin >> n >> k; int cnt = 0; while(n --){ int x; cin >> x;
2022-05-01 14:48:06
292
原创 力扣第77场双周赛
第一题:统计是给定字符串前缀的字符串数目思路:用哈希表来存储字符串的前缀,for循环查找代码:class Solution {public: int countPrefixes(vector<string>& words, string s) { unordered_map<string, int> mp; string str; for(int i = 0; i < s.size(); i ++
2022-05-01 14:45:44
93
原创 力扣第291场周赛
第一题:移除指定数字得到的最大结果思路:我是想着找打最大的应该分为两中情况:1、找到一个在字符串中digit的位置后面的字典序比这个大,删掉这个。2、最后一个digit删除。但是因为有一些混乱导致22分钟才写出了,我太菜了。代码:class Solution {public: string removeDigit(string number, char digit) { string s; int sum = 0; f
2022-05-01 14:34:53
106
原创 力扣第290场周赛
第一题:多个数组求交集思路:刚开始看到题目确实吓到了,因为很难但是看到数据发现可以直接模拟,用一个长度为1100的数组来存储i在二维数组中出现的次数a[i],如果一个数出现的次数为二维数组的长度,则该数在每个数组中都出现过,因为(二维数组的一行)一个数组中的数都各不相同代码:class Solution {public: vector<int> intersection(vector<vector<int>>& nums) {
2022-04-27 18:56:49
102
原创 AcWing第48场周赛
第一题:吃鸡蛋思路:直接暴力模拟代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0), cout.tie(0); int n, m; cin >> n >> m; int i
2022-04-24 09:18:36
112
原创 力扣第76场双周赛
第一题:找到最接近0的数字思路:用一个数表示到0之间的距离代码:class Solution {public: int findClosestNumber(vector<int>& nums) { int res = -1e7, m = 1e7; //res为数字,m为到0的距离 for(int i : nums){ if(fabs(i) < m){ m = fabs(i
2022-04-20 10:10:14
85
原创 力扣第289场周赛
第一题:计算字符串的数字和思路:这题可以直接暴力模拟代码:class Solution {public: string digitSum(string s, int k) { while(s.size() > k){ string str; int m = 0, j = 0; for(int i = 0; i < s.size(); i ++, j ++){
2022-04-18 21:31:55
212
原创 AcWing第47场周赛
第一题:数字母思路:用哈希表来写,需要注意的是输入的字符串是有空格的,应该用getline或者gets来输入代码:#include <iostream>#include <cstring>#include <algorithm>#include <unordered_set>using namespace std;int main(){ unordered_set<char> mp; string s;
2022-04-17 10:12:57
60
原创 力扣第288场周赛
T1题目链接:6037. 按奇偶性交换后的最大数字 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/largest-number-after-digit-swaps-by-parity/将数num的每一位数用两个数组存储一个存储奇数,一个存储偶数,并对它们进行排序,将num转化为字符串,将之前排序后数组的最大值与字符串对应的数字的奇偶进行转换。代码:class Solution {public: i
2022-04-10 23:55:38
240
原创 acwing第46周赛
T1第一次写的时候没有看清楚题目还以为先取完的获胜(测试样例的时候没有看清楚答案是不是正确的),结果wa了一次,呜呜呜呜~,我是撒币。看清楚题目后发现每个人每次只用取一颗,实际上就是比较石子的大小。代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;int n1, n2, k1, k2;int main(){ cin
2022-04-10 09:57:25
59
原创 285周赛回顾
T1.用一个数组来存储不连续的数,在新数组中找峰谷和峰顶的数量代码:class Solution {public: int countHillValley(vector<int>& nums) { int cnt = 0; vector<int> ans; for(int i = 0; i < nums.size(); i ++){ int j = i; .
2022-03-23 17:52:17
52
原创 用数组模拟基本的数据结构
一.单链表链表有若干个节点组成。节点由值的next指针组成struct Node{ //节点的结构体 int val; Node* next;}用两个数组(一个数组用来存储该节点的值,一个数组用来存储节点的next)代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1e
2022-03-17 21:55:19
452
原创 基础算法结尾
双指针:核心思想:优化暴力:(时间复杂度O(n^2)for(int i = 0; i < n; i ++) for(int j = 0; j < i; j ++) if(check(i, j))双指针:(时间复杂度接近O(n))for(int i = 0, j = 0; i < n; i ++){ while(j < i && check(i, j))一般写双指针之前都可以向写一下暴力。位运算:位运算
2022-03-15 23:40:31
360
原创 248周赛回顾
第一题同一个数组来存储数组nums中key的下标。然后通过for循环找出符合题目条件的下标。class Solution {public: vector<int> findKDistantIndices(vector<int>& nums, int key, int k) { vector<int> ans; for(int i = 0; i < nums.size(); i ++){
2022-03-15 16:05:16
914
原创 排序(快排、冒泡、归并)
1.快排:核心思想:将一个数组先划分为两个区间,递归这两个区间是其有序。重点:划分区间:通过数组之间的随机一个值x将数组划分为大于x和小于x的两个区间。 方法:用双指针。一个指针i指向l,一个指针j指向r,i向右移动直到a[i]>=x,然后j向左移动直到a[j]<=x,交换a[i]和a[j],一直重复该操作直到i>=j。难点:划分区间时会出现边界问题。代码:(升序)//假设数组为a,让a数组从[l, r]为升序void quick_sort(int...
2022-03-14 20:49:58
329
2
原创 前缀和+哈希表
一维数组模板:unordered_map<int, int> mp;mp[0] = 1;int sum = 0;for(auto i : nums){ //这里假设数组为nums sum += i; if(mp.count()) mp[sum] ++;} 二维数组模板//这里假设二维数组为numsint n = nums.size(), m = nums[0].size();vector<vector<int>>
2022-03-06 17:25:34
404
原创 高精度(加、减、乘、除)
模板一:高精度相加题目:给定两个正整数(不含前导0), 计算它们的和。输入格式共两行,每行包含一个整数数据范围1 <= 整数长度 <= 100000输入样例1223输出样例35代码:#include<iostream>#include <vector>using namespace std;vector<int> add(vector<int>& A, vector<
2022-03-01 21:56:47
335
原创 位运算的简单使用
位运算的介绍运算符 名称及其规则 例子 ~ 取反(~1 = 0, ~0 = 1) ~11101 = 10 & 按位与(1&1 = 1, 0&1 = 1&0 = 0&0 = 0) 11001 & 10100 = 10000 | 按位或(1|1 = 0|1 = 1|0 = 1, 0|0 = 0) 1001 | 10 = 1011 ^ 按位异或(0^1 = 1^0 = 1, 0^0 = 1.
2022-02-24 16:03:24
711
原创 简单dfs(两个例题 中等 中等)
例题 一 :岛屿数量(力扣 200 中等)题目链接:200. 岛屿数量 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/number-of-islands/题目:给你一个由'1'(陆地)和'0'(水)组成的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [ ..
2022-02-19 22:35:33
759
原创 桶排序(中等, 中等)
例题 1: 根据字符出现的频率排序(力扣 451 中等)题目链接:力扣https://leetcode-cn.com/problems/sort-characters-by-frequency/题目: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次, 'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外, "eetr"也是一个有效的答案。示例 2:输入:..
2022-02-14 14:23:50
387
原创 回溯(二个例题 中等 中等)
例题一 :全排列(力扣 46 中等)题目链接:力扣https://leetcode-cn.com/problems/permutations/题目: 给定一个不含重复数字的数组nums, 返回其所有可能的全排列。你可以按任意顺序返回答案。示例 1:输入:nums = [ 1, 2, 3]输出:[ [ 1, 2, 3], [ 1, 3, 2], [ 2, 1, 3], [ 2, 3, 1], [ 3, 1, 2], [ 3, 2, 1]]示例 2:输入:nums = [ 0,
2022-02-03 20:21:22
998
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人