当前位置:网站首页>【LeetCode】通用操作总结
【LeetCode】通用操作总结
2022-07-17 08:06:00 【山人自有锦囊妙计】
二维矩阵_转置
// 二维数组
// 二维数组可以通过嵌套vector<vector<int>> vec构建出来
vector<vector<int>> vec(2, vector<int>(2, 0)); // 2 * 2的矩阵,全部初始化为0
// 注意嵌套的下标
string Transpose(const string& str)
{
int len = str.size();
int side = sqrt(len);
if (len != side * side) {
return "ERROR";
}
int count = 0;
char arry[side][side];
for (int i = 0; i < side; i++) {
for (int j = 0; j < side; j++) {
// 写错了,这个起始点坐标应该是0,错误写成j = i
arry[i][j] = str[count++];
}
}
for (int i = 0; i < side; i++) {
for (int j = i + 1; j < side; j++) {
char temp = arry[i][j];
arry[i][j] = arry[j][i];
arry[j][i] = temp;
}
}
string res = "";
for (int i = 0; i < side; i++) {
for (int j = 0; j < side; j++) {
res += arry[i][j];
}
}
return res;
}
find
int firstIndex = str.find_first_of(cha);
int lastIndex = str.find_last_of(cha);
str.find("4") != string::npos ||str.find("18") != string::npos
string str = "45618";
int i = str.find("4"); // 0
int j = str.find("18"); // 3
// vector
vector<string> vec2 = {
"time","me","bell"};
if (find(vec2.begin(), vec2.end(), "time") != vec2.end()) {
}
// map
auto iter = find(mp.begin(), mp.end(), value);
if (iter == mp.end()) {
int first = iter.first;
int second = iter.second;
}
// set
if (st.find(cal) != st.end()) {
res++;
}
pow
// 次方运算
pow(numSet.size(), 4);
queue 优先队列priority_queue
queue<int> q;
int tmp = q.front(); // 队头元素
q.pop();
q.push(tmp);
// 插入元素后需要动态变化,更新最大值和最小值,可以考虑用优先队列
// 更新方式:取出队头元素存入临时变量,更新结果,再存入队列
//升序队列
priority_queue <int,vector<int>,greater<int>> q; // 队头开始从小到大排列
// 队头最大:降序队列
priority_queue <int,vector<int>,less<int>>q; // 不写默认队头最大,队头开始从大到小排列
// 队头最小:多个元素的优先队列,按照第一个元素排序
priority_queue<tuple<int, int>, vector<tuple<int, int>>, greater<>> queServer; // 每次将最小的放在队头(默认按照第一个元素排列!!!)
rand
// 随机数:取出map中任意一个元素
int randomIndex = rand()%mp.size();
reverse
// 字符串
reverse(str.begin(), str.end());
// 数组
reverse(vec.begin(), vec.end());
set
// set插入元素
st.insert(a);
//删除元素
st.erase(a);
// 清空元素
st.clear();
// vector必须按照索引删除元素
// set可以直接删除指定元素,如删除set res中子字符串
https://leetcode.cn/problems/short-encoding-of-words/submissions/
// set删除重复元素
// 删除相同元素,优先考虑用set,先把数组中的元素过滤一遍,重复的删除
set <"time", "me", "bell">
for (auto& str : res) {
for (int i = 1; i < str.size(); i++) {
res.erase(str.substr(i)); // 遍历每一个元素,删除子字符串(下次比那里res已被更新,只有bell元素)
}
}
// set的查找(vector map相同,set直接找元素就行)
int Proc(vector<int>& arr, int diff)
{
// 在此添加你的代码
set<int> st;
for (auto a : arr) {
st.insert(a);
}
int res = 0;
for (auto value : arr) {
int cal = value + diff;
if (st.find(cal) != st.end()) {
res++;
}
}
return res;
}
vector
vector<map<int, int>>
map<int, vector<int>>
//初始化
vector<tuple<int, int>> roomSytem(1000); // 1、长度初始化
vector<tuple<int, int>> roomSytem(1000, make_tuple(0, 0)); //2、初始化长度,并附初值
vector<int> res(2, 0); // 初始化固定长度2,元素全为0
// 合并两个数组(不需要用两个for循环)
vector<int> merge;
merge.insert(merge.end(), arr.begin(), arr.end());
merge.insert(merge.end(), arr.begin(), arr.end());
// 求vector中的最大值和最小值
// 进阶1:排序取首尾元素
// 进阶2:直接用系统函数
vector<int> words = {
1,2,1 };
int max = *max_element(words.begin(), words.end());
int min = *min_element(words.begin(), words.end());
// 取vector尾部元素
vector<int> res;
int end = res.back();
// 判断两个数组是否相等,直接if判断
if (vec1 == vec2)
// vector删除元素(迭代器对应索引)
num.erase(num.begin() + i); // vector中删除一个元素
vector<int> num = {
5,4,3,2,1 };
num.erase(num.begin(), num.begin() + 3); // 2 1 // 如果是中间不包含最后一个元素
num.erase(num.begin() + 3, num.end()); // 5 4 3 // 如果是end,直接删除到最后
// vector清空元素
vec.clear();
// vector是否有序
if (is_sorted(num.begin(), num.end()) || is_sorted(num.begin(), num.end(), greater<>()))
// 删除数组元素后是否有序
int SortByDeleteOne(const vector<int> &Nums)
{
int res = INT_MAX;
for (int i = 0; i < Nums.size(); i++) {
vector<int> num = Nums;
int tmp = num[i];
num.erase(num.begin() + i);
if (is_sorted(num.begin(), num.end()) || is_sorted(num.begin(), num.end(), greater<>())) {
res = min(res, tmp);
}
}
return res == INT_MAX ? -1 : res;
}
// 统计vector中字符个数
vector<string> vec2 = {
"time","me","bell", "time"};
int num = count(vec2.begin(), vec2.end(), "time");
// 只取vector前3个元素(先把遍历长度确定,再遍历vector取指定长度的元素)
int len = res.size() >= 10 ? 10 : res.size();
边栏推荐
- Dependency injection method
- JS learning notes 09-12: prototype objects, foreach+tostring and recycle bin
- 美国压力激增,TikTok 更换全球安全主管
- 力扣912排序数组笔记
- idea按条件断点调试
- Finishing of key concepts on deep neural networks exercises in the fourth week of in-depth learning
- Consul service registration and discovery
- 1、flask基础
- Softmax 回归 + 损失函数 + 图片分类数据集
- MySQL8下的JSON
猜你喜欢

Redis common data types - redis list and redis set

rosbridge

深度学习第三周Shallow Neural Networks习题整理

Ribbon load balancing service call

Junit5

最新一代互联网:WEB 3.0

Introduction to deep learning exercises sorting in the first week of deep learning

ES6学习-函数(严格模式,高阶函数,闭包)

Ribbon负载均衡服务调用

3D laser slam:aloam --- interpretation of inter frame odometer code
随机推荐
5.2 数据库安全
Enjoy JVM -- knowledge about GC garbage collection
Hand in hand practice a DAPP, the road to Web3.0!
Junit5
Redis6新数据类型——HyperLogLog
Use of datasets in trochvision
Solutions to license invalidation caused by MATLAB update
力扣1669合并两个链表笔记
5.1 vulnérabilités et précautions en matière de sécurité
3D laser slam:aloam --- interpretation of inter frame odometer code
Redis6 新数据类型——Geospatial
JS学习笔记01-03——this的引用,全局作用域,方法
力扣912排序数组笔记
Gateway新一代网关
Difference and connection between structure and Consortium
最新一代互联网:WEB 3.0
Li Kou 1669 merges two linked list notes
Sorting out of neural network basics exercises in the second week of in-depth study
6-9 vulnerability exploitation telnet login rights lifting
PHP store password