微信后台面试3题

1 篇文章 0 订阅
1 篇文章 0 订阅

首先,我得说明一下,毕业一年多,水平感觉是下等偏下那种,小公司,开发也不难,平时写的业务逻辑比较多,算法什么的基本很少涉及。。此为背景。。

终于有了个微信面试的机会,去了当场手写代码,都怪我太渣,请见谅。。写了一会,写了一部分,后面的实在磨不出来,偷偷摸摸的走了。。。请原谅我的渣。。

说了这么多,不介绍了,大家关注的重点也不在这里,直接贴题目吧。


1、有如下的二叉树结构体:

typedef struct _TreeNode_{

    int key;

    struct _TreeNode_ *left, *right;

}TreeNode;

要求以下面函数原型完成函数:int HasPath(TreeNode *root, int value),判断二叉树中是否存在路径(从根节点到叶子节点)的所有节点之和等于给定值value,存在返回1,否则返回0.

int HasPath(TreeNode *root, int value)
{

    if (root == NULL && value == 0) {
        return 1;
    }   
    if (root == NULL && value != 0) {
        return 0;
    }   
    if (root != NULL && value == 0) {
        return 0;
    }   
    int sum = value - root->key;
    int leftval = 0,rightval = 0;
    if (root->left != NULL) {
        leftval = HasPath(root->left, sum);
    }   
    if (root->right != NULL) {
        rightval = HasPath(root->right, sum);
    }   
    if (root->left == NULL&& root->right == NULL) {
        return value == root->key?1:0;
    }   
    return rightval|leftval;
}

这个我当场写错了。。不知道自己写了些啥。。不知道现在写对没,求抨击求蹂躏。。。

第二题 函数原型 void func(char *str, int len) 给定一个不重复的字符串,打印全部组合

这个题,开始以为字符串中间来循环应该能折腾出来,然后开始写了之后才发现各种问题。。。

void func(char *str, int len)
{
    int num = pow(2.0, len);
    for (int i = 1; i < num; i++) {
        for (int j = 0; j < len; j++) {
            if ((i>>j)&1) {
                printf("%c", str[j]);
            }
        }
        printf("\n");
    }
    return;
}


第三题 实现一个字符串的表达式求值 函数原型:double calc(char *str)


持续更新。。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值