一面: 幼儿园发糖问题;;;成绩大的,要不相邻成绩低的糖多;每人至少一个糖。求糖的总数;

思路:建立糖数组,初始化1,左边开始往右边遍历一遍, 遇到成绩增大的,大的人的糖==小的人的糖+1;

从右往左遍历一遍,同样遇到增加的,增加的人的糖==小的人的糖数+1;

求和;

 

二面: (树)判断一颗二叉树是否为镜像对称

思路: //判断一个数是否为镜像对称:先判断根,在判断左右子树。如果左右子树都为空那就是,如果左右子树不是同时为空那就不是
    //当左右子树都存在的时候,判断他们的值是否相等,如果相等那么久递归的对他们的字节点判断(左边的左=右边的右;左边的右==右边的左)

 

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    //判断一个数是否为镜像对称:先判断根,在判断左右子树。如果左右子树都为空那就是,如果左右子树不是同时为空那就不是
    //当左右子树都存在的时候,判断他们的值是否相等,如果相等那么久递归的对他们的字节点判断(左边的左=右边的右;左边的右==右边的左)
    bool isSymmetric(TreeNode *root) {
        if (!root)
            return true;
        return Symmetric(root->left, root->right);
    }
    bool Symmetric(TreeNode *left, TreeNode *right){
        if (!left && !right)
            return true;
        if (!left || !right)
            return false;
        if (left->val == right->val){
            return (Symmetric(left->left, right->right) && Symmetric(right->left, left->right));
        }
        return false;
    }
};

 

三面  简历细节;