当前位置:   article > 正文

华为OD-D卷找座位

华为OD-D卷找座位

在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,最多还能坐下多少名观众。

输入描述:

一个数组,用来标识某一排座位中,每个座位是否已经坐人。0表示该座位没有坐人,1表示该座位已经坐人。

输出描述:

整数,在不移动现有观众座位的情况下,最多还能坐下多少名观众。

备注:

1<=数组长度<=10000

题目解析:只要保证第i个位置的i-1和i+1都是空的就可以坐,只需要特殊处理首位和末尾就可以!

  1. import java.util.*;
  2. public class Main {
  3. public static void main(String[] args) {
  4. // int[] nums = new int[]{1, 0, 0, 0, 1};
  5. // 处理数据
  6. Scanner scanner = new Scanner(System.in);
  7. String string1 = scanner.next();
  8. int[] nums = new int[string1.length()];
  9. for (int i = 0; i < nums.length; i++) {
  10. nums[i] = string1.charAt(i) - '0';
  11. }
  12. if (nums.length == 1) {
  13. if (nums[0] == 0) {
  14. System.out.println(1);
  15. } else {
  16. System.out.println(0);
  17. }
  18. return;
  19. }
  20. int result = 0;
  21. for (int i = 0; i < nums.length; i++) {
  22. if (nums[i] == 0) {
  23. // 依次处理首位,中间,末尾,注意顺序
  24. if (i == 0 && nums[i + 1] == 0) {
  25. nums[i] = 1;
  26. result++;
  27. } else if (i > 0 && i < nums.length - 1 && nums[i + 1] == 0 && nums[i - 1] == 0) {
  28. nums[i] = 1;
  29. result++;
  30. } else if (i == nums.length - 1 && nums[i - 1] == 0) {
  31. nums[i] = 1;
  32. result++;
  33. }
  34. }
  35. }
  36. System.out.println(result);
  37. }
  38. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/971920
推荐阅读
相关标签
  

闽ICP备14008679号