阿里笔试8.9

投票啦#阿里巴巴笔试##阿里巴巴#
全部评论
第二题直接随机输出yes和no , 骗了20%,笑死
5 回复 分享
发布于 2021-08-09 20:32
AC了 第一题前缀和保存在列表里,对1到L的每个n判断:遍历列表中的每个前缀和prefix, prefix+n在不在列表里; 第二题 初始化root之后建树,再之后递归判断每个节点的isBalance() ,也挺简单的。 // 建树 static TreeNode build(TreeNode root, int val){         if(root == null) return new TreeNode(val);         if(root.val > val) root.left = build(root.left, val);         else root.right = build(root.right, val);         return root;     } // 判断 static boolean isBalance(TreeNode root, int N){         if(root == null) return true;         int left = 0, right = 0;         TreeNode node = root;         while(node.left != null){             node = node.left;             left++;         }         node = root;         while (node.right != null){             node = node.right;             right++;         }         return Math.abs(left - right) <= Math.min(11, N) && isBalance(root.left, N) && isBalance(root.right, N);     }
4 回复 分享
发布于 2021-08-09 20:44
今天的机试感觉比前几次的简单啊,a了两道
2 回复 分享
发布于 2021-08-09 20:56
第一题0.6第二题0.2
2 回复 分享
发布于 2021-08-09 20:15
😥第一题a了96%,给我气的
点赞 回复 分享
发布于 2021-08-16 11:07
1.2简历直接给我挂了
点赞 回复 分享
发布于 2021-08-11 10:45
第二题 t = int(input()) for _ in range(t):     n = int(input())     nums = list(map(int, input().split()))     def dfs(nums):         if len(nums) <= 1:             return True         root = nums[0]         left = []         right = []         for num in nums[1:]:             if num > root:                 right.append(num)             else:                 left.append(num)         Abs = abs(get_left([root]+left) - get_right([root]+right))         return dfs(left) and dfs(right) and Abs < ban     def get_left(nums):         c = 0         tmp = nums[0]         for num in nums[1:]:             if num<tmp:                 c += 1                 tmp = num         return c     def get_right(nums):         c = 0         tmp = nums[0]         for num in nums[1:]:             if num>tmp:                 c += 1                 tmp = num         return c     ban = min(11, n//2)     if dfs(nums):         print("YES")     else:         print("NO")
点赞 回复 分享
发布于 2021-08-09 22:44
有大佬可以说一下第二题的大概题意么
点赞 回复 分享
发布于 2021-08-09 21:30
第一题感觉很简单,全A,就是读题意花了快10分钟。第二题,感觉不难,但是还要自己创建二叉树有点蛋疼,最后来不及了,骗了20%😂
点赞 回复 分享
发布于 2021-08-09 21:20
阿里编程题可以跳出界面用本地idea吗?
点赞 回复 分享
发布于 2021-08-09 21:19
差了五分钟写出来的,不知道思路对不对,不用建树,把数组导入队列,比头节点小的导入左队列,大的放入右队列,对两个队列递归求出深度,判断是否满足a-balance,不知道这么考虑是否有问题。int  judge(queue<int>& q,int n) { if (q.size() == 0) return 0; int temp = q.front(); q.pop(); queue<int> left; queue<int> right; while (!q.empty()) { int t = q.front(); if (t > temp) { right.push(t); q.pop(); } else { left.push(t); q.pop(); } } int l = judge(left, n); int r = judge(right, n); if (l == -1 || r == -1) return -1; if (abs(r - l) > min(11, n)) return -1; else return max(l, r) + 1; } int main() { int group; cin >> group; while (group--) { int n; cin >> n; vector<int> array(n); queue<int> q; for (int i = 0; i < n; i++) { cin >> array[i]; q.push(array[i]); }  if(judge(q, n)!=-1)                          cout<<"yes"<<endl; }
点赞 回复 分享
发布于 2021-08-09 20:40
    public static int digui(List<Integer> tree, int n, boolean t){         if(tree.isEmpty()){             return 0;         }         List<Integer> left = new ArrayList<>();         List<Integer> right = new ArrayList<>();         int root = tree.get(0);         int length = tree.size();         for(int i = 1; i < length; i++){             int cur = tree.get(i);             if(cur < root){                 left.add(cur);             }else{                 right.add(cur);             }         }         int leftN = digui(left, n, true);         int rightN = digui(right, n, false); //        int height = Math.max(leftN, rightN) + 1;         if(Math.max(leftN, rightN) - Math.min(leftN, rightN) >= n || leftN == -1 || rightN == -1){             return -1;         }else{             if(t){                 return leftN + 1;             }else{                 return rightN + 1;             }         }     } 第二题核心代码这样写的,不知道哪里错了,完整代码在我帖子里,有大佬可以看看嘛?
点赞 回复 分享
发布于 2021-08-09 20:35
第二个写二叉树太费时间了==
点赞 回复 分享
发布于 2021-08-09 20:27
第二题,0.2,将数组排序后,构建二叉排序树,然后对树中的每个节点进行判断,是否满足题意,不知道哪里出了问题。感觉没错啊             Arrays.sort(res);         //将排序数组转化成二叉排序树             TreeNode root=arrayToTreeNode(res,0,res.length-1);             if (root==null){                 System.out.println("NO");             }else{                 Queue<TreeNode> queue=new LinkedList<>();                 queue.add(root);                 boolean flag=true;                 int n=res.length;                 int temp=Math.min(11,n/2);                 while (!queue.isEmpty()){                     TreeNode cur=queue.poll();                     if (!Ablance(cur,temp)){                         flag=false;                         break;                     if (cur.left!=null){                         queue.add(cur.right                     if (cur.right!=null){                         queue.add(cur.right)                 if (flag){                     System.out.println("YES");                 }else{                     System.out.println("NO")
点赞 回复 分享
发布于 2021-08-09 20:27
第一题怎么找连续区间啊,有人能解答一下吗
点赞 回复 分享
发布于 2021-08-09 20:19
第二题是要根据序列重建一颗二叉排序树再分别计算左右结点的深度嘛 后面时间不够了 没写出来重建二叉树 还是有其他的方法😂
点赞 回复 分享
发布于 2021-08-09 20:19
第一题测试用例都过,就是AC 0%😅
点赞 回复 分享
发布于 2021-08-09 20:19

相关推荐

怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 14:32
点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
面向对象的火龙果很爱...:去吃一顿炸鸡就走
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务