java算法之体育馆找位置

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

一个数组,用来标识某一排座位中,每个座位是否已经坐人。0 表示该座位没有坐人,1 表示该座位已经坐人。
输出描述:整数,在不移动现有观众座位的情况下,最多还能坐下多少名观众。
示例 1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入 10001

输出 1
示例 2 输入输出示例仅供调试,后台判题数据一般不包含示例

输入 0101

输出 0
备注:1<= 数组长度 <=10000 

public class FindSeats {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int[] arr = new int[str.length()];
        for (int i = 0; i < str.length(); i++) {
            arr[i] = str.charAt(i) == '0' ? 0 : 1;
        }
        System.out.println(maxAudience(arr));
    }
    public static int maxAudience(int[] arr) {
        int count = 0;
        boolean lastWasEmpty = false; // 初始时,假定前一个座位是空的

        for (int i = 0; i < arr.length; i++) {
            int seat = arr[i];
            if (i == 0 && seat == 0 && arr[i+1] == 0) { // 如果第一个座位是空的
                arr[i] = 1;
                count++; // 可以安排一个观众
                continue;
            }
            if(i+1 ==arr.length && seat == 0 ){ // 如果最后一个座位是空的
                arr[i] = 1;
                count++;
                break;
            }
            if (i+1 == arr.length && seat == 1) { // 如果当前是最后一个座位
                break;
            }
            if (seat == 0) { // 如果当前座位是空的
                if (arr[i+1] == 0 && arr[i-1] ==0) { // 如果前一个座位也是空的
                    arr[i] = 1;
                    count++; // 可以安排一个观众
                } else {
                    continue;
                }
            } else { // 如果当前座位有人
                continue;
            }
        }

        return count;
    }
}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值