当前位置: 首页 > article >正文

【华为OD】2024D卷——停车场车辆统计

题目描述:
特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。
车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3),
统计停车场最少可以停多少辆车,返回具体的数目。

输入描述:
整型字符串Q数组cars[],其中1表示有车,0表示没车,数组长度小于1000。
输出描述:
整型数字字符串,表示最少停车数目。

补充说明:
示例1
输入:
1,0,1
输出: 2
说明:
1个小车占第1个车位第二个车位空
1个小车占第3个车位最少有两辆车

示例2
输入:
1,1,0,0,1,1,1,0,1
输出:
3
说明:
1个货车占第1、2个车位第3、4个车位空
1个卡车占第5、6、7个车位第8个车位空
1个小车占第9个车位最少3辆车

解题思路:

使用贪心策略:遇到车位 = 1时,尝试停放卡车;不行再停放货车;再不行停放小车,即可得最少停放数量


代码部分

def count_car(nums):
    ncount = 0
    length = len(nums)
    i = 0
    while i < length:
        if nums[i] == 1:
            tmp = 1
            while i + 1 < length and nums[i + 1] == 1:  #统计连续为1车位
                tmp += 1
                i += 1
            ncount += tmp // 3   #先停放卡车
            ncount += (tmp % 3) // 2     #再停放货车
            ncount += (tmp % 3) % 2     #再停放小车
            i += 1
        else:   #直接跳过0车位
            i += 1
    return ncount
nums = list(map(int, input().split(',')))
print(count_car(nums))

换一种更容易懂的写法

    while i < length:
        if nums[i] == 1:
            if i + 2 < len(nums) and nums[i + 1] == 0 and nums[i + 2] == 0:
                # 停放卡车  
                nums[i + 2] = 1
                nums[i + 1] = 1
                nums[i] = 1
                ncount += 1
                i += 3
            elif i + 1 < len(nums) and nums[i + 1] == 0:
                # 停放货车  
                nums[i + 1] = 1
                nums[i] = 1
                ncount += 1
                i += 2
            else:
                # 停放小车  
                nums[i] = 1
                ncount += 1
                i += 1
        else:
            i += 1

知识点:逻辑、贪心


结语:越简单的题目解法应该越多,请路过大神留下新的思路供本小白学习一下,打开思路


http://www.kler.cn/a/286724.html

相关文章:

  • 【C++】string类模拟实现
  • 99.12 金融难点通俗解释:毛利率
  • 密码无关认证:金融机构如何解决密码问题
  • Java 中多态与接口的全面解析
  • Git常用命令
  • python判断字符串是否存在空白、字母或数字
  • 音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现
  • 十三、泛型
  • Java后端服务端渲染与客户端渲染:SSR与CSR的权衡
  • 第一个golang项目增加help指令并调整指令模式
  • 【最全深度学习介绍】基本概念、类型、应用、优缺点、与机器学习区别是什么?
  • CART算法原理及Python实践
  • Axure RP9安装教程(Pro版)
  • 为k8s准备docker 私有仓库 harbor
  • Scrum 敏捷模型、软件测试
  • Java中的String能存储多少字符?不可变吗?
  • 这才是老板喜欢的运营简历
  • three.js 编辑器,动画,着色器, cesium 热力图,聚合点位,大量点线面, 图层,主题,文字,等众多案例中心
  • OmniGraffle Pro for Mac 思维导图软件安装
  • 前端打包部署,Nginx服务器启动
  • 【protobuf】protobuf语法及序列化原理
  • 集成电路学习:什么是DMA直接内存访问
  • 虚幻5|技能栏UI优化(2)——优化技能UI并实现技能栏的拖拽操作
  • 日常工作中的AI助手
  • milvus多个Querynode,资源消耗都打在一个节点上
  • C语言6大常用标准库 -- 1.<stdio.h>