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/78717117

3、给予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轮面试。