华为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;
}
}
#我的求职思考#