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