华为OD机试 二维伞的雨滴效应

这一题倒是在网上搜出了免费的答案,尴尬的是我搜了几次题目有点出入,也不知道哪个对,就选有逻辑有答案的那个吧。

同样的题目不再赘述,题目和答案都在这个链接下面:https://blog.csdn.net/guorui_java/article/details/131657550

答案是java写的,我没细看。因为这个题目理解起来比较简单,考察的知识点就是排序二叉树(基础不好的我甚至不知道这是啥)。我之所以没看别人的答案是因为,我就尝试了一下在VScode上敲了个注释,判断一个数组是否是一棵排序二叉树,插件就帮我把代码写出来了,不算完全正确,但稍微修改一下就能用,然后我继续敲了个注释,寻找二叉排序树中最左边的值,插件不仅帮我把我需要的代码写出来了,甚至帮我补全了我接下来需要的注释,寻找二叉排序树中最右边的值

然后结果就是,我还没看别人的答案,将题目拆解之后,代码插件就能帮你把题目解了。

AI助手大概是今年上半年火的,因为不会翻墙也不干写代码的工作,所以一直没有尝试过,基本在网上看个乐子,看大家吹这个东西有多厉害。现在实际感受了一下(甚至不是最强大的chatgpt),发现这东西在语义理解,上下文联系确实是有点东西的。

AI助手无疑降低了写代码的入门门槛,以后当程序猿的核心能力可能不是能撕多少代码,会多少种语言了,而是如何拆解需求,挑选合适的框架,写成AI能理解的话了,自然语言编程不是梦了。

算了,不说了,准备去考试了,就刷了两道题,也就试个水。转不了程序员,继续当测试或者后面转产品也凑合吧。

#include <iostream>
#include <string>
#include <vector>
#include <stdlib.h>
using namespace std;

void isBST(vector<int> nums, int start, int end,bool &flag);

int main()
{
    //创建一个string
    string str;
    //输入字符串
    getline(cin, str);
    //创建一个字符串vector
    vector<int> nums;
    //将字符串用空格分隔
    string temp;
    for(int i = 0; i < str.length(); i++){
        
        if(str[i] == ' '){
            nums.push_back(atoi(temp.c_str()));
            temp.clear();
        }
        else{
            temp = temp + str[i];
        }
  
    }
    nums.push_back(atoi(temp.c_str()));

    bool flag = true;
    isBST(nums, 0, nums.size() - 1,flag);

    cout<<flag<<' ';

    if(flag == true)
    {
        //寻找二叉排序树中最左边的值
        int left = nums[0];
        for(int i = 1; i < nums.size(); i++){
            if(nums[i] < left){
                left = nums[i];
            }
        }
        //寻找二叉排序树中最右边的值
        int right = nums[0];
        for(int i = 1; i < nums.size(); i++){
            if(nums[i] > right){
                right = nums[i];
            }
        }
        cout<<left<<" "<<right;
    }
    else{
        cout<<0<<" "<<0;
    }
    return 0;
    
}


//判断nums数组是否是一颗二叉排序树
void isBST(vector<int> nums, int start, int end,bool &flag){
    if(start > end){
        return;
    }
    int mid = (start + end) / 2;
    if(nums[mid] >= nums[end]){
        isBST(nums, start, mid - 1,flag);
    }
    else if(nums[mid] <= nums[end]){
        isBST(nums, mid + 1, end, flag);
    }
    else{
        flag = false;
        return;
    }
}

#我的求职思考#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务