1、给一个数组a[n],去掉数组小于k的值,并保持原来的相互顺序? a[] = {3,7,4,1,2,5}, k = 3 ,结果返回{3,7,4,5};
vector<int> resovle(int a[],int n,int k){
vector<int> ans;
for(int i=0;i<n;i++){
if(a[i]>=k){
ans.push_back(a[i]);
}
}
return ans;
}
void resovle(int a[],int n,int k){
int num=0;
for(int i=0;i<n;i++){
if(a[i]>=k){
a[num++]=a[i];
}
}
}2、非递归深度遍历一颗二叉树的深度?
写了一个递归的,非递归的没搞出来
int dfs(TreeNode* root){
if(root){
int ldep=dfs(root->left);
int rdep=dfs(root->right);
return max(ldep,rdep)+1;
}
return 0;
}
参考了一片非递归深度遍历,核心就是栈,先入右孩子,再入左孩子,刚刚好可以深度遍历
/**
* 深度优先遍历,相当于先根遍历
* 采用非递归实现
* 需要辅助数据结构:栈
*/
public void depthOrderTraversal(){
if(root==null){
System.out.println("empty tree");
return;
}
ArrayDeque<TreeNode> stack=new ArrayDeque<TreeNode>();
stack.push(root);
while(stack.isEmpty()==false){
TreeNode node=stack.pop();
System.out.print(node.value+" ");
if(node.right!=null){
stack.push(node.right);#####先入右子树
}
if(node.left!=null){
stack.push(node.left);#####后入左子树
}
}
System.out.print("\n");
原文链接:https://blog.csdn.net/lznsay/article/details/787171173、给予n个桶,每个桶中有不同质量的球m个, 在每个桶里拿一个球出来,这n个球的总质量为t,请问有多少种方法?
const max_n=1000;
vector<int>T[max_n];
int ans;
void dfs(int index,int sum,int n){
if(index==n-1&&sum==t)ans++;
for(int i=0;i<T[index].size();i++){
if(sum+T[index][i]<t){
dfs(index+1,sum+T[index][i],n);
}
}
}
int main(){
ans=0;
dfs(0,0,n);
return 0;
}4.问一下项目,仔细说了一下监控方面的事情。
5.了解了一下他们做的事情,车联网相关的事情,然后阿里这边体系一般3-4轮面试。

京公网安备 11010502036488号