- 存储&访问
vector<vector<int> > matrix;
for(int i=0;i<3;i++){
vector<int> t;// vector不涉及指针的操作可以自己进行GC
for(int j=0;j<4;j++){
t.push_back(i*4+j);
}
matrix.push_back(t);
}
for(int i=0;i<3;i++){
vector<int> t;
for(int j=0;j<4;j++){
cout<<matrix[i][j]<<" ";//良心访问方式
}
cout<<endl;
}
- 用vector实现stack(C++中stack在底层实现时就是对list和deque的再封装)
class Stack {
public:
void push(int value) {
arr.push_back(value);
t = value; //记录新加元素
}
void pop() {
arr.pop_back(); //vector容器弹出队尾元素
t=arr.back(); //删除栈顶元素之后记得将t更改为新尾,vector容器返回队尾元素
}
int top() {
return t;
}
int min() { //寻找栈中最小值
int m = arr[0];
for(int i=1;i<arr.size();i++){
if(arr[i]<m) m = arr[i];
}
return m;
}
private:
vector<int> arr;
int t;
};
- 二叉树的深度遍历特定长度路径(根节点到叶节点)的记录排序
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<vector<int> > result;
vector<int> t;
static bool compare(vector<int> a,vector<int> b){
if(a.size()>b.size()) return 1;
return 0;
}
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
if(root==NULL) return result;
dfs(root,expectNumber,t);
sort(result.begin(),result.end(),compare);
return result;
}
private:
void dfs(TreeNode* root,int expectNumber,vector<int> t){
if(root==NULL) return ;
t.push_back(root->val);
expectNumber -= root->val;
if(root->left==NULL&&root->right==NULL&&expectNumber==0){
result.push_back(t);
}
dfs(root->right,expectNumber,t);
dfs(root->left,expectNumber,t);
t.pop_back();//回滚很重要
}
};
版权声明:本文为keq_keq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。