华为OD机试-找座位(C++ Java Python)

news2024/11/15 11:25:32

 

题目描述:
在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位 分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,最多还能坐下多少名观众。输入描述:
一个数组,用来标识某一排座位中,每个座位是否已经坐人。0表示该座位没有坐人,1表示该座位已经坐人。输出描述:
整数,在不移动现有观众座位的情况下,最多还能坐下多少名观众。补充说明:
1<=数组长度<=10000
示例1
输入:
10001
输出:
1
说明:
示例2
输入:
0101
输出:
0

Java解法:

public class MaxAdditionalSeats {

    public static int maxAdditionalSeats(int[] seats) {
        int count = 0; // 新观众的计数
        int n = seats.length;

        for (int i = 0; i < n; i++) {
            // 如果当前座位是空的
            if (seats[i] == 0) {
                // 检查左边是否空(或左边界)
                boolean leftEmpty = (i == 0) || (seats[i - 1] == 0);
                // 检查右边是否空(或右边界)
                boolean rightEmpty = (i == n - 1) || (seats[i + 1] == 0);

                // 如果左右都是空的,当前座位可以坐人
                if (leftEmpty && rightEmpty) {
                    count++; // 新增观众计数
                    i++; // 跳过下一个座位,因为不能相邻坐人
                }
            }
        }

        return count;
    }

    public static void main(String[] args) {
        int[] seats1 = {1, 0, 0, 0, 1, 0, 1};
        System.out.println(maxAdditionalSeats(seats1)); // 输出应为 1

        int[] seats2 = {0, 0, 0, 0, 0};
        System.out.println(maxAdditionalSeats(seats2)); // 输出应为 2

        int[] seats3 = {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1};
        System.out.println(maxAdditionalSeats(seats3)); // 输出应为 2

        int[] seats4 = {1, 0, 0, 0, 0, 1};
        System.out.println(maxAdditionalSeats(seats4)); // 输出应为 1

        int[] seats5 = {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};
        System.out.println(maxAdditionalSeats(seats5)); // 输出应为 3
    }
}



C++解法:

#include <iostream>
#include <string>
#include <tuple>
#include <vector>
 
using namespace std;
 
int main() {
  string in;
  cin >> in;
  size_t len = in.length();
  int res = 0;
  if (len == 1) {
    if (in[0] == '0')
      cout << 1 << endl;
    else
      cout << 0 << endl;
    return 0;
  }
 
  for (int i = 0; i < len; i++) {
    auto curr_char = in[i];
    if (curr_char == '1') {
      if (i - 1 >= 0) {
        in[i - 1] = '_';
      }
      if (i + 1 < len) {
        in[i + 1] = '_';
      }
    }
 
    if (curr_char == '0') {
 
      if (i + 1 == len) {
        auto prev_char = in[i - 1];
        if (prev_char == '0' || prev_char == '_') {
          in[i] = '1';
          res += 1;
        }
      } else if (i - 1 == -1) {
        auto next_char = in[i + 1];
        if (next_char == '0' || next_char == '_') {
          in[i] = '1';
          res += 1;
        }
      } else {
        auto prev_char = in[i - 1];
        auto next_char = in[i + 1];
        if ((prev_char == '0' || prev_char == '_') &&
            (next_char == '0' || next_char == '_')) {
          in[i] = '1';
          res += 1;
        }
      }
    }
  }
 
  cout << res << endl;
 
  return 0;
}

Python解法:

while True:
    try:
        arr = input()
        if len(arr) <= 2:
            if '1' in arr:
                print(0)
                break
            else:
                print(1)
                break
        
        count0 = 1
        countN = 0
        for s in arr:
            if s == '0':
                count0 += 1
                if count0 == 3:
                    countN += 1
                    count0 = 1
            else:
                count0 = 0
        
       
        if arr[-1] != '1' and '1' in arr:
            temp = arr.split('1')[-1]
           
            if len(temp) % 2 == 0:
                countN += 1
        
        print(countN)
 
    except:
        break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则表达式匹配——力扣困难题解

力扣链接&#xff1a;正则表达式匹配 题目描述&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 …

GUI界面开发之tkinter(三) 按钮类组件和选择列表类组件

大家好&#xff01;我是码银儿~&#xff0c;欢迎关注&#x1f970;&#xff1a; CSDN&#xff1a;码银公众号&#xff1a;码银学编程 一、按钮类组件 按钮类组件顾名思义就是按钮&#xff0c;跟平时大家看见的按钮没啥区别&#xff0c;允许用户通过点击执行操作。以下是三种…

Awesome-LLMs-for-Video-Understanding - 基于大型语言模型的视频理解研究

Awesome-LLMs-for-Video-Understanding 是 基于大型语言模型的视频理解研究 github : https://github.com/yunlong10/Awesome-LLMs-for-Video-Understandingpaper&#xff1a;Video Understanding with Large Language Models: A Survey https://arxiv.org/pdf/2312.17432 视频…

五、前后端分离通用权限系统(5)

&#x1f33b;&#x1f33b; 目录 一、前端框架1.1、vue-element-admin1.1.1、Vue 概述1.1.2、Element-ui 概述1.1.3、ES6 概述 1.2、vue-admin-template1.2.1、简介1.2.2、下载1.2.3、安装1.2.4、源码目录结构&#xff08;了解&#xff09;1.2.5、改造登录&退出功能1.2.5.…

跨域解决 | 面试常问问题

跨域解决 | 面试常问问题 跨域问题一直是前端开发中不可避免的一部分&#xff0c;它涉及到浏览器的同源策略和安全机制。本文将深入解析跨域问题的本质&#xff0c;并探讨前端和后端的多种解决方案&#xff0c;同时分享一些扩展与高级技巧。最后&#xff0c;我们还将总结跨域解…

K8S系列——(二)、K8S部署RocketMQ集群

1、环境准备 要将RocketMQ部署到K8S上&#xff0c;首先你需要提前准备一个K8S集群环境&#xff0c;如图我已经准备好了一个版本为 v1.28.13 的 K8S 集群&#xff08;其他版本也没问题&#xff09;&#xff1a; 角色IPMaster192.168.6.220Node-1192.168.6.221Node-2192.168.6.…

浏览器不开梯子无法上网,检查代理或防火墙或者找不到服务器ip地址

1、代理没有关闭 检查代理是否关闭 检查方法1&#xff1a; 在控制面版中找到Internet选项&#xff0c;点击连接栏&#xff0c;在连接栏中选择局域网设置。之后将代理服务器下面的框选中的对勾取消。最终如下 检查方法2&#xff1a; 打开设置&#xff0c;找到网络和internet…

书生浦语大模型实战营:LMDeploy量化部署

1.任务&#xff1a; 使用结合W4A16量化与kv cache量化的internlm2_5-1_8b-chat模型封装本地API并与大模型进行一次对话。 2.背景&#xff1a; 1.计算模型需要的权重大小&#xff1a; 1B代表10个亿参数&#xff0c;假如是16位浮点数&#xff08;f16&#xff09;&#xff0c;也…

计算机视觉概念科普

计算机视觉&#xff08;Computer Vision, CV&#xff09;是一门多学科交叉的科学&#xff0c;旨在让计算机具备“看”的能力&#xff0c;即通过图像或视频数据来理解世界。它结合了信号处理、图像处理、模式识别、机器学习等多个领域的技术&#xff0c;让计算机能够执行诸如识别…

【Python学习手册(第四版)】学习笔记20.2-迭代和解析(二)-迭代解析、迭代方法的计时比较、函数陷阱

个人总结难免疏漏&#xff0c;请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文较简单&#xff0c;主要是概括了解析语法&#xff08;列表解析、生成器、集合、字典解析&#xff09;&#xff0c;以及对前面的各种迭代进行计时比较&#xf…

通过python解决原神解密

最近楼主玩原神世界任务做到稻妻了&#xff0c;在稻妻有很多解密游戏&#xff0c;但是博主最头疼的就是稻妻的石头解密QAQ&#xff08;如图&#xff09; 就在昨晚&#xff0c;楼主又碰到了石头解密&#xff0c;瞎打&#xff0c;半天解不出来。于是就想&#xff0c;有没有什么严…

如何在Windows下使用make编译Makefile

最近有小伙伴咨询我去编译运行一个程序。我一开始以为是CMakeLists&#xff0c;结果发现是makefile。 什么是Makefile ‌Makefile是一种用于自动化构建和管理程序的工具‌&#xff0c;它定义了项目中文件的依赖关系和构建步骤&#xff0c;帮助程序员自动化编译、链接和打包程序…

Ps:创建帧动画

在 Photoshop 中&#xff0c;帧动画 Frame Animation是一种通过在“时间轴”面板中创建和管理多个帧来实现动画效果的方式。 所谓帧动画&#xff0c;也就是传统意义上的逐帧动画&#xff0c;依次播放每个帧而构成的动画形式。每个帧记录了“图层”面板上所有图层的属性状态&…

QT Mainwindow下指定控件的setMouseTracking(true)和mousemoveevent函数失效-问题解决

目录&#xff1a; 一&#xff0c;问题描述二&#xff0c;解决方法2.1解决依据2.2方法实操 三&#xff0c;参考资料 一&#xff0c;问题描述 ☀️之前碰到过的一个问题&#xff0c;现在分享出来&#xff1a;想在qt哪里搞个鼠标移动在控件显示的图片上&#xff0c;然后实时显示对…

[数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;19069 标注数量(xml文件个数)&#xff1a;19069 标注数量(txt文件个数)&#xff1a;19069 标…

一文带你画PCB板,有手就行

背景 最近写Autosar网络唤醒功能&#xff0c;想在实际硬件上验证&#xff0c;但是市面上没有找到板子验证&#xff0c;只能找人帮忙画PCB板。但是这里遇到比较大的问题&#xff0c;1、整个周期会比较长&#xff0c;板子不太可能一次就能完成&#xff0c;中间会出现修改的地方&…

C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)

前言 C#/.NET/.NET Core技术前沿周刊&#xff0c;你的每周技术指南针&#xff01;记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿&#xff0c;助力技术成长与视野拓宽。 欢迎投稿&#xff0c;推荐…

【蓝牙协议栈】【BLE】【GATT】精讲GATT Profile架构(图文并茂精华版)

目录 1. 蓝牙BLE通用属性协议&#xff08;GATT&#xff09; 2.GATT角色介绍 3.GATT 层级和Profile架构 4. GATT Server架构&#xff08;重点内容&#xff09; 5. Characteristic架构&#xff08;重点内容&#xff09; 6. (Characteristic Properties)特性属性详解&#x…

一款免费的目录以及文件对比工具,替代Beyond Compare

Beyond Compare是一款功能强大的文件对比工具&#xff0c;但是由于是付费软件&#xff0c;很多没有购买的企业用户无法使用。CCompare就是一款替代Beyond Compare的免费方案&#xff0c;一款来自中国的可替换beycond compare, 免费使用的代码同步对比工具。 CCompare 是一款功…

【科研绘图】【分条热力图】:附Origin详细画图流程 + 案例分析

目录 No.1 理解分条热力图 No.2 画图流程 1 导入数据&#xff0c;绘制图形 2 设置绘图细节 3 色阶控制 4 设置坐标轴 5 效果图 No.3 案例分析 1 案例一 2 案例二 No.1 理解分条热力图 分条热力图&#xff0c;基于数据映射和颜色编码&#xff0c;是在热力图的基础上进…