华为机试

为啥华为机试越来越难了??😐是因为今年疫情原因招的少还是大环境裁员呀?
记得去年的机试题,三题中有两题是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

相关推荐

11-14 18:12
New York University
#25届秋招公司红黑榜#加入微软中国,是我职业生涯中一段温暖而珍贵的经历。在这里,我找到了一份理想的工作,不只是因为它的薪酬待遇,而是因为它让我体会到工作不仅仅是忙碌的奋斗,更是一种自我成就与生活平衡的结合。一、自由与尊重在微软,我每天上班都充满了踏实感。微软的文化让我们每一个人都得到了充分的尊重,不论你是新员工还是资深员工,都会被当作值得被尊重的专业人士,而不是一个只为产出代码的“工具”。这里没有令人窒息的加班氛围,取而代之的是一种让人能够从容发挥、追求创新的自由。我还记得在其他大厂实习时,那种加班到深夜、大家疲惫不堪的场景。正是因为我深知这样的压迫感,才更加珍惜在微软的这种自由。微软让我相信,工作与生活的平衡是可以实现的,工作的意义在于成就更好的生活,而不是在激烈竞争中失去自我。二、值得信赖的薪酬与福利微软的薪酬并不算最高,但却令人安心、稳定。对于应届生来说,几年前微软提供的基本工资年薪在23万到30万人民币之间,外加奖金和股票,这些待遇不仅让我感到心安,更让我在经济上有了前所未有的安全感。对于博士或者研究人员,微软亚洲研究院(MSRA)则提供更为丰厚的薪酬,给了有志于科研的人足够的支持与激励。在薪酬之外,微软的福利保障也是无可挑剔的,五险一金中的三项保险个人部分由公司承担,这让每个月的到手收入更为丰厚。初入公司时,微软还贴心地提供了搬迁费和签字费,处处让人感到公司的关怀与温暖。三、成就感与归属感在微软工作,让我真切地感受到自己职业价值的实现。相比于其他公司追求极限效率的氛围,微软让我们有时间去思考、去探索,甚至有机会去推动一些对未来有深远意义的创新。每次项目的进展和个人的成长都被悉心记录,我感到自己是在被关怀和支持中成长。公司愿意倾听每个人的声音,让我觉得自己不仅仅是一名员工,更是这个大家庭中的一份子。这种归属感与成就感,让我心怀感恩。微软不仅给予了我生活的保障,更给予了我一种被尊重和信任的感觉,这是我职业生涯最宝贵的财富之一。四、选择微软,选择一种生活方式有人说,职业选择就是生活方式的选择。微软,给了我一种我想要的生活方式:一份工作并非仅仅是谋生的手段,而是帮助我成就更好的生活。虽然现在我已经离开了微软,开始了海外的新生活,但这段在微软的经历始终温暖地影响着我。感谢微软带给我的这份宽容与理解,让我看到了工作和生活的更多可能性。我由衷地推荐微软给大家,尤其是那些希望在奋斗中找到平衡、在职业中找到尊严的朋友们。微软,让我明白了,好的工作,是让生活变得更美好的途径。选择微软,是我不后悔的决定。
点赞 评论 收藏
分享
17 56 评论
分享
牛客网
牛客企业服务