华为OD-D卷找座位

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

输入描述:

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

输出描述:

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

备注:

1<=数组长度<=10000

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

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
//        int[] nums = new int[]{1, 0, 0, 0, 1};
        // 处理数据
        Scanner scanner = new Scanner(System.in);
        String string1 = scanner.next();
        int[] nums = new int[string1.length()];
        for (int i = 0; i < nums.length; i++) {
            nums[i] = string1.charAt(i) - '0';
        }
        if (nums.length == 1) {
            if (nums[0] == 0) {
                System.out.println(1);
            } else {
                System.out.println(0);
            }
            return;
        }
        int result = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 0) {
                // 依次处理首位,中间,末尾,注意顺序
                if (i == 0 && nums[i + 1] == 0) {
                    nums[i] = 1;
                    result++;
                } else if (i > 0 && i < nums.length - 1 && nums[i + 1] == 0 && nums[i - 1] == 0) {
                    nums[i] = 1;
                    result++;
                } else if (i == nums.length - 1 && nums[i - 1] == 0) {
                    nums[i] = 1;
                    result++;
                }
            }
        }
        System.out.println(result);
    }
}
相关推荐
兰令水6 小时前
hot100【acm版】【2026.7.14打卡-java版本】
java·数据结构·算法·leetcode·面试
cpp_25016 小时前
P10098 [ROIR 2023] 地铁建设 (Day 2)
数据结构·c++·算法·贪心·二分答案·洛谷题解
米尔的可达鸭9 小时前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构
tachibana29 小时前
hot100 课程表(207)
java·数据结构·算法·leetcode
Frostnova丶10 小时前
(15)LeetCode 189. 轮转数组
数据结构·算法·leetcode
来一碗刘肉面12 小时前
顺序表的按值查找
数据结构·c++·算法
延凡科技12 小时前
延凡科技 - 发生器设备管理控制系统:AI 驱动的全生命周期智能管控方案
大数据·数据结构·人工智能·算法
小肝一下13 小时前
2. 顺序表和链表
c语言·数据结构·c++·链表·dijkstra·依蕾娜·香香的依蕾娜
j7~13 小时前
【数据结构初阶】带头双向循环链表 (DSList) --增删查改完整实现详解
c语言·数据结构·链表·带头双向循环链表
石像鬼₧魂石13 小时前
贵州商会管理系统 —— 商协会数字化运营一站式平台
大数据·数据结构·物联网·eclipse·数据库架构