LeetCode 1769. 移动所有球到每个盒子所需的最小操作数(前缀和)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

有 n 个盒子。给你一个长度为 n 的二进制字符串 boxes ,其中 boxes[i] 的值为 '0' 表示第 i 个盒子是 的,而 boxes[i] 的值为 '1' 表示盒子里有 一个 小球。

在一步操作中,你可以将 一个 小球从某个盒子移动到一个与之相邻的盒子中。
第 i 个盒子和第 j 个盒子相邻需满足 abs(i - j) == 1
注意,操作执行后,某些盒子中可能会存在不止一个小球。

返回一个长度为 n 的数组 answer ,其中 answer[i] 是将所有小球移动到第 i 个盒子所需的 最小 操作数。

每个 answer[i] 都需要根据盒子的 初始状态 进行计算。

示例 1:
输入:boxes = "110"
输出:[1,1,3]
解释:每个盒子对应的最小操作数如下:
1)1 个盒子:将一个小球从第 2 个盒子移动到第 1 个盒子,需要 1 步操作。
2)2 个盒子:将一个小球从第 1 个盒子移动到第 2 个盒子,需要 1 步操作。
3)3 个盒子:将一个小球从第 1 个盒子移动到第 3 个盒子,需要 2 步操作。
将一个小球从第 2 个盒子移动到第 3 个盒子,需要 1 步操作。共计 3 步操作。示例 2:
输入:boxes = "001011"
输出:[11,8,5,4,3,4]提示:
n == boxes.length
1 <= n <= 2000
boxes[i]'0''1'

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-number-of-operations-to-move-all-balls-to-each-box
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 正反前缀和,计算每个位置前面和后面的盒子移到该位置的步数
class Solution {
public:vector<int> minOperations(string boxes) {int n = boxes.size(), b = 0;vector<int> ans(n), temp(n);for(int i = 0; i < n; i++){ans[i] += b + (i > 0 ? ans[i-1] : 0);// 移动到前一个位置的步数 + 前面盒子的个数if(boxes[i]=='1')b++;//前面的盒子个数}b = 0;for(int i = n-1; i >= 0; i--){temp[i] += b + (i < n-1 ? temp[i+1] : 0);if(boxes[i]=='1')b++;ans[i] += temp[i];//两侧的步数合并}return ans;}
};

8 ms 8.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...

代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业 日期&#xff1a;2020-03-17 11:22 CO 353 - Homework assignment 4 Winter ’20 Page 1 CO 353 - Winter ’20 Homework assignment #4: Instructions: ? You may use any result proved in class directly,…

JNative用法注意事项

公司要做个跟设备打交道的web系统&#xff0c;需要java调用dll。搞java的同事说JNative看起来挺好使的&#xff0c;找俺帮忙调通。用的是1.3.1版本 环境设置。 JNative的调试信息需要打开才能更清楚些&#xff0c;要不总是说没加载库&#xff0c;跟没说一样。 System.setProper…

虚拟主机不支持mysql_虚拟主机能用mysql么

原标题&#xff1a;虚拟主机能用mysql么虚拟主机能用mysql么&#xff1f;虚拟主机能用mysql的。MySQL数据库一般与Linux系统搭配使用较多&#xff0c;绝大部分的服务商都会提供支持MySQL数据库的虚拟主机产品。MySQL是一种关系数据库管理系统&#xff0c;关系数据库将数据保存在…

python3知识点汇总_35个高级Python知识点总结

No.1 一切皆对象 众所周知&#xff0c;Java中强调“一切皆对象”&#xff0c;但是Python中的面向对象比Java更加彻底&#xff0c;因为Python中的类(class)也是对象&#xff0c;函数&#xff08;function&#xff09;也是对象&#xff0c;而且Python的代码和模块也都是对象。 Py…

LeetCode 1770. 执行乘法运算的最大分数(DP)

文章目录1. 题目2. 解题1. 题目 给你两个长度分别 n 和 m 的整数数组 nums 和 multipliers &#xff0c;其中 n > m &#xff0c;数组下标 从 1 开始 计数。 初始时&#xff0c;你的分数为 0 。 你需要执行恰好 m 步操作。在第 i 步操作&#xff08;从 1 开始 计数&#x…

统计--过滤(筛选)索引的统计信息过期问题测试

基础知识普及&#xff1a; 对于筛选索引&#xff0c;MSDN如是说&#xff1a; 筛选索引是一种经过优化的非聚集索引&#xff0c;尤其适用于涵盖从定义完善的数据子集中选择数据的查询。 筛选索引使用筛选谓词对表中的部分行进行索引。 与全表索引相比&#xff0c;设计良好的筛选…

IDEA连接mysql出现时区错误_idea连接数据库时区错误

错误界面IDEA连接mysql&#xff0c;地址&#xff0c;用户名&#xff0c;密码&#xff0c;数据库名&#xff0c;全都配置好了&#xff0c;点测试连接&#xff0c;咔&#xff01;不成功&#xff01;界面是这样的&#xff0c;翻译过来就是&#xff1a;服务器返回无效时区。进入“高…

springboot listener_Springboot 监听redis key的过期事件

项目中常常会碰到这样的需求&#xff0c;用户下订单后&#xff0c;30分钟未完成自动取消订单的功能。有人说这个简单呀&#xff0c;写个定时任务就搞定了。除了定时任务之外&#xff0c;难道就没有其他的方法来实现吗&#xff1f;有--Redis 的键空间通知事件。在Redis 2.8.0之后…

LeetCode 1771. 由子序列构造的最长回文串的长度(最长回文子序)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 word1 和 word2 &#xff0c;请你按下述方法构造一个字符串&#xff1a; 从 word1 中选出某个 非空 子序列 subsequence1 。从 word2 中选出某个 非空 子序列 subsequence2 。连接两个子序列 subsequence1 subsequence2 &…

python牛顿法计算平方根_常用的平方根算法详解与实现

本文从属于笔者的数据结构与算法系列文章。 SquareRoot 平方根计算一直是计算系统的常用算法&#xff0c;本文列举出几张简单易懂的平方根算法讲解与实现。其中Java版本的代码参考这里 Reference Babylonian:巴比伦算法/牛顿法 巴比伦算法可能算是最早的用于计算$sqrt{S}$的算法…

mysql主辅同步报错_mysql数据库主辅同步Slave_IO_Running,Slave_SQL_Running错误

Slave_IO_Running&#xff1a;连接到主库&#xff0c;并读取主库的日志到本地&#xff0c;生成本地日志文件Slave_SQL_Running:读取本地日志文件&#xff0c;并执行日志里的SQL命令。这个错误是出现在我重启电脑之后。从以上图片来看&#xff0c;我遇到的错误是第二条&#xff…

R.java文件介绍

HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R { public static final class attr { } public static final class drawable { public static final int icon0x7f020000; } public static final class layou…

移动计算比移动数据更划算

learn from 从0开始学大数据&#xff08;极客时间&#xff09; 数据太大&#xff08;PB级别&#xff09;&#xff0c;将程序发送到数据所在地方进行计算&#xff0c;比移动数据更划算 如何实现的&#xff1a; 将大规模数据存储在集群的所有服务器上&#xff0c;&#xff08;H…

什么是spring_Spring 源码第三弹!EntityResolver 是个什么鬼?

上篇文章和小伙伴们说了 Spring 源码中 XML 文件的解析流程&#xff0c;本来可以继续往下走看加载核心类了&#xff0c;但是松哥还是希望能够慢一点&#xff0c;既然要学就学懂&#xff0c;在 XML 文件解析的过程中还涉及到一些其他的类和概念&#xff0c;因此我就先用几篇文章…

mysql5.7免安版配置_mysql5.7免安装版配置

JS产生随机数的几个用法&#xff01;C&plus;&plus;和java多态的区别C和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报 &#xfeff;&#xfeff; 转载自:http://www.cnblogs.com/plmnko/archive ...永远不要在Linux 执行的 10 个最危险的命令转…

简述C++程序编写的过程

学习C编程&#xff08;相关C编程-基础知识篇&#xff09;乃至于所有的编程语言每当你编写一个程序从编写到最后得到运行结果要经历以下一些步骤&#xff1a;1、用C语言编写程序用高级语言编写的程序称为“源程序”(source program)&#xff61;C的源程序是以.cpp作为后缀的(cpp…

从RAID看垂直伸缩到水平伸缩的演化

learn from 从0开始学大数据&#xff08;极客时间&#xff09; 大规模数据存储问题&#xff1a; 容量问题&#xff0c;数据量超过磁盘容量读写速度&#xff0c;磁盘读写慢数据可靠性&#xff0c;磁盘寿命问题 RAID&#xff08;独立磁盘冗余阵列&#xff09; 是将多块普通磁盘…

linux安装g++编译器_Ubuntu Desktop下配置Rosetta安装教程

作者: 吴炜坤本文仅在虚拟机环境下测试&#xff0c;可能实际操作中会遇到不同的问题本文是新手向的安装教程&#xff0c;如果需要在CentOS上安装&#xff0c;可以参考本人其他安装教程由于许多新人朋友在学习Rosetta过程中&#xff0c;通常操作系统选择的都是带美丽漂亮界面便于…

mysql+inser+select_解析MySQL中INSERT INTO SELECT的使用

1. 语法介绍有三张表a、b、c&#xff0c;现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况&#xff0c;可以使用如下的语句来实现&#xff1a;INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name上面的语句比较适合两个表的…

HDFS依然是存储的王者

learn from 从0开始学大数据&#xff08;极客时间&#xff09; 1. HDFS 架构 DataNode 负责数据的存储、读写&#xff0c;HDFS 将文件分割成若干数据块&#xff08;Block&#xff09;&#xff0c;每个 DataNode 存储一部分数据块&#xff0c;文件就分布存储在整个 HDFS 服务器集…