【2023C卷最新题目】20天拿下华为OD笔试之【贪心】2023C-找座位/2023B-座位调整-全网注释最详细分类最全的华为OD真题题解

文章目录

  • 题目描述与示例
    • 题目描述
    • 输入
    • 输出
    • 说明
    • 示例一
      • 输入
      • 输出
    • 示例二
      • 输入
      • 输出
      • 说明
  • 解题思路
  • 代码
    • Python
    • Java
    • C++
    • 时空复杂度
  • 相同问题不同描述
    • 2023C-找座位
      • 题目描述
      • 输入描述
      • 输出描述
      • 示例一
        • 输入
        • 输出
      • 示例二
        • 输入
        • 输出
  • 华为OD算法/大厂面试高频题算法练习冲刺训练

题目描述与示例

题目描述

疫情期间课堂的座位进行了特殊的调整,不能出现两个同学紧挨着,必须隔至少一个空位。

给你一个整数数组 desk 表示当前座位的占座情况,由若干 01 组成,其中 0 表示没有占位,1 表示占位。在不改变原有座位秩序情况下,还能安排坐几个人?

输入

第一行是个子数组表示作为占座情况,由若干 01 组成,其中 0 表示没有占位,1 表示占位

输出

输出数值表示还能坐几个人

说明

1 <= desk.length <= 2 * 10^4

示例一

输入

1,0,0,0,1

输出

1

示例二

输入

0,0,0,0,0

输出

3

说明

只有 desk[2] 的位置可以坐一个人

解题思路

注意,本题和LC605. 种花问题几乎完全一致。

代码

Python

# 题目:2023B-座位调整
# 分值:100
# 作者:许老师-闭着眼睛学数理化
# 算法:贪心
# 代码看不懂的地方,请直接在群上提问# 输入的座位数组
lst = input().split(",")
# 能坐下的总人数
ans = 0# 遍历数组,在遍历过程中,采取贪心的思路,并不需要【每个位置】都去查看是否可以坐下
# 1、当前位置已经有人坐下,那么后一个位置明显不能坐下,可以跳过去
# 2、当前位置没有人坐下,需要考虑后面一个位置是否种花# 初始化座位索引为0
i = 0while i < len(lst):# 1、当前位置已经有人坐下,lst[i] == "1",那么后一个位置明显不能坐下,可以跳过去# 所以让 i 执行加 2 操作,跳过了加 1 后的那个位置if lst[i] == "1":# 让 i 执行加 2 操作i += 2# 2、否则说明当前位置没有人坐下 lst[i] == "0"else:# 3、如果这个位置【是】数组的最后一个位置,说明后一个位置不存在,没有限制,说明 lst[i] 可以坐下# 4、如果这个位置【不是】数组的最后一个位置,那么只有当后一个位置【没人坐下】,才有资格在 lst[i] 位置坐下# 这两种条件都可以在 lst[i] 位置坐下if i == len(lst) - 1 or lst[i + 1] == "0":# 成功之后,坐下人数ans + 1ans += 1# 在 lst[i] 位置种花之后,i + 1 位置不需要去考虑了,因为它明显不能种花,可以跳过去# 让 i 执行加 2 操作i += 2# 5、当前位置没有人坐下 lst[i] == "0"# 6、但是后一个位置已经有人坐下了,那么当前位置无法坐下# i + 1 位置已经坐下,不用再去访问一遍# i + 2 位置考虑到 i + 1 位置已经有人坐下,所以也无法坐下,不用再去访问# 让 i 执行加 3 操作else:i += 3print(ans)

Java

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] lst = scanner.nextLine().split(",");int ans = 0;int i = 0;while (i < lst.length) {if (lst[i].equals("1")) {i += 2;} else {if (i == lst.length - 1 || lst[i + 1].equals("0")) {ans += 1;i += 2;} else {i += 3;}}}System.out.println(ans);}
}

C++

#include <iostream>
#include <sstream>
#include <vector>using namespace std;int main() {string line;getline(cin, line);istringstream iss(line);vector<string> lst;string val;while (getline(iss, val, ',')) {lst.push_back(val);}int ans = 0;int i = 0;while (i < lst.size()) {if (lst[i] == "1") {i += 2;} else {if (i == lst.size() - 1 || lst[i + 1] == "0") {ans += 1;i += 2;} else {i += 3;}}}cout << ans << endl;return 0;
}

时空复杂度

时间复杂度:O(NlogN)。排序时间复杂度

空间复杂度:O(1)。仅需要用到若干常数变量。

相同问题不同描述

2023C-找座位

题目描述

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

输入描述

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

输出描述

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

示例一

输入
10001
输出
1

示例二

输入
0101
输出
0

华为OD算法/大厂面试高频题算法练习冲刺训练

  • 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!

  • 课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化

  • 每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!

  • 60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁

  • 可上全网独家的欧弟OJ系统练习华子OD、大厂真题

  • 可查看链接 大厂真题汇总 & OD真题汇总(持续更新)

  • 绿色聊天软件戳 od1336了解更多

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

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

相关文章

Spring Boot创建和使用(重要)

Spring的诞生是为了简化Java程序开发的&#xff01; Spring Boot的诞生是为了简化Spring程序开发的&#xff01; Spring Boot就是Spring框架的脚手架&#xff0c;为了快速开发Spring框架而诞生的&#xff01;&#xff01; Spring Boot的优点&#xff1a; 快速集成框架&#x…

2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲…

MySQL 事务的底层原理和 MVCC(一)

在事务的实现机制上&#xff0c;MySQL 采用的是 WAL&#xff08;Write-ahead logging&#xff0c;预写式日志&#xff09;机制来实现的。 在使用 WAL 的系统中&#xff0c;所有的修改都先被写入到日志中&#xff0c;然后再被应用到系统中。通常包含 redo 和 undo 两部分信息。 …

【Java开发】 Springboot集成Mybatis-Flex

1 Mybatis-Flex 介绍 1.1简介 Mybatis-Flex 是一个优雅的 Mybatis 增强框架&#xff0c;它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库&#xff0c;其内置的 QueryWrapper 亮点帮助我们极大的减少了 SQL 编写的工作的同时&#xff…

cocos2dx ​​Animate3D(二)

Twirl 扭曲旋转特效 // 持续时间(时间过后不会回到原来的样子) // 整个屏幕被分成几行几列 // 扭曲中心位置 // 扭曲的数量 // 振幅 static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude)…

编程语言发展史:C语言的诞生及其影响

预计更新 第一部分&#xff1a;早期编程语言 1.1布尔代数和机器语言 1.2汇编语言的出现和发展 1.3高级语言的兴起 第二部分&#xff1a;主流编程语言 1.1 C语言的诞生及其影响 1.2 C语言的发展和应用 1.3 Java语言的出现和发展 1.4 Python语言的兴起和特点 1.5 JavaScript语言…

基于springboot实现摄影跟拍预定管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现摄影跟拍预定管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要…

【2018年数据结构真题】

方法一 给定一个含n(n>1)个整数的数组&#xff0c;请设计一个在时间上尽可能高效的算法&#xff0c;找出数组中未出现的最小正整数。例如&#xff0c;数组{-5&#xff0c;3&#xff0c;2&#xff0c;3}中未出现的最小正整数是1&#xff1b;数组{1&#xff0c;2&#xff0c;…

AIGC变革BI行业,永洪发布vividime全球化品牌

大数据产业创新服务媒体 ——聚焦数据 改变商业 国内BI商业智能市场&#xff0c;一直有着“内永洪&#xff0c;外Tableau”的说法。成立于2012年的永洪科技经过十多年的发展&#xff0c;早已崛起为国内大数据行业的一支劲旅。 ChatGPT火爆出圈之后&#xff0c;AIGC快速渗透&am…

每日一练 | 华为认证真题练习Day19

Day19 华为认证中级考试真题 1、DHCP协议运行过程中&#xff0c;客户端从申请到IP地址时的流程是 A.1-2-3-4 B.1-4-3-2 C.3-2-1-4 D.3-4-1-2 2、VRRP报文的IP协议号是&#xff1a; A.112 B.114 C.116 D.118 3、MPLS的标签字段共有多少bit? A.8 B.3 C.1 D.20 4…

【C++】vector的介绍与使用

&#x1f9d1;‍&#x1f393;个人主页&#xff1a;简 料 &#x1f3c6;所属专栏&#xff1a;C &#x1f3c6;个人社区&#xff1a;越努力越幸运社区 &#x1f3c6;简 介&#xff1a;简料简料&#xff0c;简单有料~在校大学生一枚&#xff0c;专注C/C/GO的干货分…

2020年下半年试题一:论信息系统项目的成本管理

论文题目 1.概要叙述你参与过的信息系统项目&#xff08;项目的背景、项目规模、发起单位、目的、项目内容、组织结构、项目周期、交付的成果等&#xff09;&#xff0c;并说明你在其中承担的工作&#xff08;项目背景要求本人真实经历&#xff0c;不得抄袭及杜撰&#xff09;。…

编程语言发展史:汇编语言的出现和发展

一、汇编语言的出现 随着计算机硬件的发展&#xff0c;机器语言变得越来越复杂&#xff0c;难以被人类程序员理解和编写。因此&#xff0c;出现了更高级别的编程语言&#xff0c;这些语言使用类似英语的语法&#xff0c;使程序员能够更容易地编写和维护程序。 其中一种高级语…

web网页渗透测试

web网页渗透测试 流程 信息收集网站扫描访问控制测试漏洞扫描尝试注入攻击验证漏洞后渗透测试渗透测试报告 信息收集 收集目标网站的基本信息&#xff0c;包括域名、IP 地址、子域名等。使用 WHOIS 查询、搜索引擎、子域名枚举工具等进行信息收集。 网站扫描 使用端口扫描…

【Java 进阶篇】Redis 数据结构:轻松驾驭多样性

引言 Redis是一款强大的键值对存储系统&#xff0c;其数据结构的多样性是其引以为傲的特点之一。在这篇博客中&#xff0c;我们将深入探讨Redis的主要数据结构&#xff0c;包括字符串、哈希表、列表、集合和有序集合&#xff0c;并通过实例代码演示它们的用法。 1. 字符串&am…

在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持

中国技术出海是中国企业更高层次更高质量的全球化。在人类文明发展史上&#xff0c;凝聚中国古人智慧结晶的造纸术、印刷术、火药、指南针等&#xff0c;曾为中国技术出海写下过浓墨重彩的一笔。在今天&#xff0c;如金山办公、店匠科技、ADVANCE.AI等公司又以技术立业&#xf…

msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的msvcp140.dll文件。本文将详细介绍5个解决msvcp140.dl…

Day27|Leetcode 39. 组合总和 Leetcode 40. 组合总和 II Leetcode131. 分割回文串

Leetcode 39. 组合总和 题目链接 39 组合总和 本题目和前面的组合问题差不多&#xff0c;只不过这里能重复选取数字&#xff0c;还是要注意组合的定义&#xff0c;交换数字顺序还是算一个组合&#xff0c;所以这里还是用我们的startIndex来记录取的数字到哪里了&#xff0c;下…

阿里云发送短信

官方代码如下&#xff1a; // This file is auto-generated, dont edit it. Thanks. package com.aliyun.sample;import com.aliyun.tea.*;public class Sample {/*** 使用AK&SK初始化账号Client* param accessKeyId* param accessKeySecret* return Client* throws Excep…

【电子通识】USB3.0和USB2.0有什么区别?

版本 USB2.0是2000年4月27日由USB-IF组织提出了USB2.0总线协议规范。 USB3.0是2008年11月17日由USB-IF组织提出了超高速USB3.0规范。 图标对比 USB2.0的标志就是和USB1.1的标志基本上没啥区别&#xff0c;还是以前的那个样子&#xff0c;使用黑色颜色用标识 USB3.0它有一个S…