类型
// 整型 默认 向下取整
int n=5;
n/3-------1 (1.6)
// 向上取整 (往大了取)
ceil(1.2)------2
// 向下取整 (往小了取)
floor(1.8)-----1
// 最大值
int ans=INT_MAX;
// 最小值
int ans=INT_MIN;
数组
声明
vector<int> num;
// used数组长度为n
vector<bool> used(n);
// table长度为26,里面的元素都为0
vector<int> table(26, 0);
// 'b'-'a'=1;
table[p[i]-'a']++;
// 二维数组 [里面是长度]
int dp[n][2]
长度
num.size()
类型是unsigned(非负数),如果与其他数值进行比较/运算,会将其强行转换为unsigned
// 判断是否为空,如果为空,则返回true
nums.empty()
遍历
for(auto n : num){}
插入
num.push_back(n)
排序
sort(nums.begin(), nums.end())
翻转
reverse(result.begin(), result.end());
<ctype.h>
主要可用于测试和映射字符。
判断是否为字母和数字
isalnum(num[i])
转换为小写字母
tolower(num[i])
转换为大写字母
toupper(num[i])
哈希表
声明
unordered_map
unordered_map<int,int> hashtable;
for (int num : nums1) {
++m[num];
}
unordered_set
// STL提供的无序集合的类,集合的特点就是其中没有任何重复的元素,这个特点非常适合用于纪录某个数据中是否有重复的数据,并且将其挑出来。
unordered_set<char> lookup;
1.在集合中查找是否有该元素
lookup.find(s[right])==lookup.end();// true则没找到
2.删除集合中的元素
lookup.erase(s[left]);
3.向集合插入元素
lookup.insert(s[right]);
找主键
1. 查找主键为nums[i] 的位置
auto it= hashtable.find(nums[i]);
2. 判断是否 找到了 该键
it!=hashtable.end()
3. 拿到该键 对应的 值
it->second
// 示例
unordered_map<int,int> hashtable;
for(int i=0;i<numbers.size();i++){
auto it=hashtable.find(target-numbers[i]);//找键
if(it!=hashtable.end()){
return {it->second+1,i+1};
}
hashtable[numbers[i]]=i;
}
移除
hashtable.erase(n);
for
for(int num :nums1)
队列
声明
queue<int> q;
queue<TreeNode*> q;
添加/移除元素
// 只能在队尾添加
// start是第一个元素
q.push(start);
// 只能在队头移除
// 移除第一个元素
q.pop();
front()/back()
// 返回 queue 中第一个元素的引用。
// 如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
q.front();
// 返回 queue 中最后一个元素的引用。
// 如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
back();
元素个数
// 返回 queue 中元素的个数。
queue.size();
判断有没有元素
// 如果 queue 中没有元素的话,返回 true。
queue.empty()
栈
# 声明
stack<TreeNode*> st
# push,入栈
st.push(root);
# 拿到栈顶的元素
st.top();
# 弹出栈顶的元素
st.pop();
树TreeNode
声明
TreeNode* root
判断节点是否为空
if (root == NULL) return root;
翻转
swap(root->left, root->right);
pair
pair是C++中一种模板类型。每个pair对象可以存储两个值,这两个值可以是不同的数据类型。存储的值可以是基本数据类型也可以是自定义数据类型。
声明命名空间:
using namespace std;
或
using std::pair;
pair<int, int> pdata;
或使用全名
std::pair<int, int> pdata;
定义和初始化
pair<int, int> p1(1, 2);
pair<int, int> p2(p1); //用已有的对象初始化
pair<int, float> p3(1, 1.2);
pair<int, int> p4; //没有显示初始化,自动执行默认初始化操作。p4为(0,0)
赋值操作
使用强制类型转换
pair<int, int> p1(1, 2);
pair<int, int> p2;
p2 = pair<int, int> (1, 4);//赋值操作,需要用强制转换
p2 = p1; //赋值操作
使用make_pair()函数
pair<int, int> p3;
p3 = make_pair(1, 4); //无需指明类型,可自动生成pair对象