华为机试

为啥华为机试越来越难了??😐是因为今年疫情原因招的少还是大环境裁员呀?
记得去年的机试题,三题中有两题是leecode原题,今年这。。23届好难😑😑

---补第二题:按照路径替换二叉树---
/** -*- encoding: utf-8 -*-
Description      :按照路径替换二叉树
Version          :1.0
*/
#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;

struct Node
{
    int value;
    Node *left;
    Node *right;
    Node(int val)
    {
        value = val;
        left = NULL;
        right = NULL;
    }
};
Node *nums2Tree(int index, vector<int> &nums);
int main()
{
    vector<int> nums;
    char ch;
    int n;
    while (scanf("%d", &n) != EOF)
    {
        nums.push_back(n);
        ch = getchar();
        if (ch != ',')
        {
            break;
        }
    }
    string str;
    cin >> str;
    vector<int> path;
    for (int i = 0; i < str.size(); i++)
    {
        if (isdigit(str[i]))
        {
            path.push_back(str[i] - '0');
        }
    }

    vector<int> new_nums;
    while (scanf("%d", &n) != EOF)
    {
        new_nums.push_back(n);
        ch = getchar();
        if (ch != ',')
        {
            break;
        }
    }

    Node *old_node = nums2Tree(0, nums);
    Node *new_node = nums2Tree(0, new_nums);

    Node *curNode = old_node;
    if (curNode->value != path[0])
    {
        cout << -1 << endl;
        return 0;
    }
    Node *preNode = curNode;
    int flag = 0;
    for (int i = 1; i < path.size(); i++)
    {
        int num = path[i];
        if (num == curNode->left->value)
        {
            flag = 1;
            preNode = curNode;
            curNode = curNode->left;
        }
        else if (num == curNode->right->value)
        {
            flag = 2;
            preNode = curNode;
            curNode = curNode->right;
        }
    }

    if (flag == 0)
    {
        old_node = new_node;
    }
    else if (flag == 1)
    {
        preNode->left = new_node;
    }
    else if (flag == 2)
    {
        preNode->right = new_node;
    }

    queue<Node *> q;
    q.push(old_node);
    while (!q.empty())
    {
        int size = q.size();
        for (int i = 0; i < size; i++)
        {
            Node *cur = q.front();
            q.pop();
            if (cur->value != 0)
            {
                cout << cur->value << ",";
            }
            if (cur->left != NULL)
            {
                q.push(cur->left);
            }
            if (cur->right != NULL)
            {
                q.push(cur->right);
            }
        }
    }

    return 0;
}

Node *nums2Tree(int index, vector<int> &nums)
{
    Node *root = new Node(nums[index]);
    if (2 * index + 1 < nums.size())
    {
        root->left = nums2Tree(2 * index + 1, nums);
    }
    if (2 * index + 2 < nums.size())
    {
        root->right = nums2Tree(2 * index + 2, nums);
    }
    return root;
}

#华为机试##笔试题目##实习#
全部评论
public class Main {     private static int sum = 0;     public static int[] scores = {2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8};     public static void main(String[] args) {         for (int i = 0; i <= 100; i+=2) {             sum = 0;             backTracking(0, 0, 0, i);             System.out.println(i + ": " + sum);         }     }     public static void backTracking(int index, int score, int errNum, int target){         if (errNum >= 3) return;         if (score == target) {             sum++;             return;         }         if (score > target) {             return;         }         for (int i = index; i < 25; i++) {             score += scores[i];             backTracking(i + 1, score,errNum,target);             score -= scores[i];             errNum++;         }     } }
5 回复 分享
发布于 2022-04-20 22:28
看了一遍难度,直接退了😂浪费生命
5 回复 分享
发布于 2022-04-21 09:55
机试第一题 机考结束后才在本地调试出来😥
4 回复 分享
发布于 2022-04-20 21:49
大佬是啥题呢,你碰到的
2 回复 分享
发布于 2022-04-20 21:47
大概啥题呢
点赞 回复 分享
发布于 2022-04-20 21:39
第一题判断得分的情况个数,第二题树的替换,第三题没看
点赞 回复 分享
发布于 2022-04-20 22:12
我也感觉要比前几批考的难
点赞 回复 分享
发布于 2022-04-20 23:33
第一题好难,第二题输入输出不会写 第三题其实挺简单ac了
点赞 回复 分享
发布于 2022-04-21 00:15
华为解决测今年已经不招应届了好像
点赞 回复 分享
发布于 2022-04-21 01:52
python 我第二题用python print(list) 出来结果为啥和答案不一样啊
点赞 回复 分享
发布于 2022-04-21 09:27
这不公平啊,第一次这么简单,第三次这么难
点赞 回复 分享
发布于 2022-04-22 11:54
大佬是AC了第二题吗,tql
点赞 回复 分享
发布于 2022-04-24 11:10
华为OD :Base东莞,深圳,南京,成都,西安等,Java, C++, Python, Web,软测都有岗位,可戳我,一周内安排机考和面试,流程可查。
点赞 回复 分享
发布于 2022-04-27 11:31
借楼,华为od,坐标上海,正在招测试,开发,大数据,用户体验岗,有意向的戳我
点赞 回复 分享
发布于 2022-05-31 20:35
请问楼主,刷牛客上的华为机试题可以吗,还是得刷力扣hot100题,时间有点来不及了
点赞 回复 分享
发布于 2022-06-09 11:39
问个问题,正式机式提交以后如果有些用例答案错误会显示错误用例对应的输入信息吗,就像牛客力扣上这样
点赞 回复 分享
发布于 2022-06-17 10:25

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
17 56 评论
分享
牛客网
牛客企业服务