目录
一,题目类型
二,时间复杂度
三,模板积累
四,STL
五,压行坑之类型坑
一,题目类型
常见的题目分为几大类:
1,算法
分治、搜索、贪心、DP
2,数据结构
链表、二叉树、并查集、树状数组、线段树
3,数学
数论、几何、图论
4,模拟
二,时间复杂度
时间复杂度_csuzhucong的博客-CSDN博客_时间复杂度
第四章
三,模板积累
ACM模板_csuzhucong的博客-CSDN博客_acm模板整理和使用方法
四,STL
ACM总结——STL标准模板库 ACM总结——STL标准模板库_nameofcsdn的博客-CSDN博客
1,全排列
next_permutation 下一个全排列
prev_permutation 上一个全排列
返回值是bool类型,表示操作成功或者操作失败(没有上一个或下一个全排列)
char sn[40]; next_permutation(sn,sn+32); prev_permutation(sn,sn+32);
2,sort 、copy
ACM总结——STL标准模板库_nameofcsdn的博客-CSDN博客
3,find 、lower_bound、upper_bound、equal_range
ACM总结——STL标准模板库_nameofcsdn的博客-CSDN博客
五,压行坑之类型坑
我在力扣OJ 1314. 矩阵区域和 里面,我写了一个小函数:
int f(vector> &mat, int i, int j) { if (i < 0 || j < 0) return 0; if (i >= mat.size()) i = mat.size() - 1; if (j >= mat[0].size()) j = mat[0].size() - 1; return mat[i][j]; }
这是一个已经AC的代码里面的一个函数,然而,故事并没有结束。
为了压缩行,我改成了:
int f(vector> &mat, int i, int j) { return (i < 0 || j < 0) ? 0 : mat[min(i,mat.size() - 1)][min(j,mat[0].size() - 1)]; }
结果编译错误,为什么呢?
因为size函数返回的是unsigned long
我改成:
int f(vector> &mat, unsigned int i,unsigned int j) { return (i < 0 || j < 0) ? 0 : mat[min(i,mat.size() - 1)][min(j,mat[0].size() - 1)]; }
还是编译错误,再改成
int f(vector> &mat, unsigned long i,unsigned long j) { return (i < 0 || j < 0) ? 0 : mat[min(i,mat.size() - 1)][min(j,mat[0].size() - 1)]; }
结果编译成功但是居然解答错误。
仔细一看,这个代码就是一坨垃圾,i<0根本就是不可能的。
如果非要压缩行的话,只能做类型转换。



