华为OD真题 您所在的位置:网站首页 游戏荒岛求生 华为OD真题

华为OD真题

2024-03-22 22:48| 来源: 网络整理| 查看: 265

1. 华为OD机考题 + 答案

2023华为OD统一考试(A+B卷)题库清单-带答案(持续更新)

2023年华为OD真题机考题库大全-带答案(持续更新)

2. 面试题

一手真实java面试题:2023年各大公司java面试真题汇总--持续更新

3. 技术知识

java后端技术汇总 + 中间件 + 架构思想

有一个荒岛,只有左右两个港口,只有一座桥连接这两个港口,现在有一群人需要从两个港口逃生,有的人往右逃生,有的往左逃生,如果两个人相遇,则PK,体力值大的能够打赢体力值小的,体力值相同则同归干尽,赢的人才能继续往前逃生,并减少相应的体力

输入描述

一行非 0 整数,用空格隔开,正数代表向右逃生,负数代表向左逃生

输出描述

最终能够逃生的人数

示例1:

输入

5 10 8 -8 -5

输出

2

说明

8与-8 相遇,同归于尽,10 遇到-5,打赢并减少五点体力,最终逃生的为5,5,均从右侧港口逃生,输出2

public class IslandSurvival { //5 10 8 -8 -5 public static void main(String[] args) { Scanner sc = new Scanner(System.in); List power = Arrays.stream(sc.nextLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList()); List right = new ArrayList(); List left = new ArrayList(); //先将左右方向的人区分 for (int i = 0; i < power.size(); i++){ if (power.get(i) > 0){ right.add(power.get(i)); }else { left.add(power.get(i)); } } int exit = fight(left,right); System.out.println(exit); } public static int fight(List l,List r){ int exit = 0; //用个左右双指针 int left = 0; int right = r.size() - 1; while (left < l.size() && right >= 0){ //体力绝对值不相等,就会有一方能逃离 //最最左边的跟左右边的人比 if (Math.abs(l.get(left)) != Math.abs(r.get(right))){ exit++; } left++; right--; } //左右方向的有剩余的没有参与战斗的人员 exit += (l.size() -1)-(left - 1); exit += (right + 1); return exit; } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有