​力扣解法汇总1769. 移动所有球到每个盒子所需的最小操作数

news/2024/11/30 9:29:21/

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

有 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'

解题思路:

* 解题思路:
* 以i的位置来进行分割,分为left和right。
* 先求出rightSum和rightNum,然后遍历boxes。
* result[i]其实就等于把左侧的往右挪,把右侧的往左挪,最终求出其sum值和。
* 所以遍历的时候,遍历一个位置,就可以对应计算leftNum和leftSum,然后重新加计算右侧的rightSum和rightNum。

代码:

public class Solution1769 {public int[] minOperations(String boxes) {int leftSum = 0;int leftNum = 0;int rightSum = 0;int rightNum = 0;char[] chars = boxes.toCharArray();for (int i = 0; i < chars.length; i++) {if (chars[i] == '0') {continue;}rightNum++;rightSum += (i);}int[] result = new int[boxes.length()];for (int i = 0; i < chars.length; i++) {result[i] = Math.abs(rightSum - i * rightNum) + Math.abs(leftSum - i * leftNum);if (chars[i] == '1') {leftNum++;leftSum += i;rightSum -= i;rightNum--;}}return result;}
}


http://www.ppmy.cn/news/853.html

相关文章

Elasticsearch_第一章_ elasticsearch基础

Elasticsearch_第一章_ elasticsearch基础 – elasticsearch基础 文章目录Elasticsearch_第一章_ elasticsearch基础0.学习目标1.初识elasticsearch1.1.了解ES1.1.1.elasticsearch的作用1.1.2.ELK技术栈1.1.3.elasticsearch和lucene1.1.4.为什么不是其他搜索技术&#xff1f;1…

Vue系列之v-for循环结构

文章の目录一、v-for循环数组二、v-for循环对象三、v-if与v-for一起使用写在最后一、v-for循环数组 <li v-for"item in items">{{item}}</li>其中 items 是源数据数组&#xff0c;而 item 则是被迭代的数组元素的别名。 v-for 还支持一个可选的第二个参…

基于Springboot旅游网站管理系统、Springboot旅游线路和景点网站系统设计与实现 毕业设计开题报告

本科生毕业论文 基于java(springboot框架)旅游网站管理系统 开题报告 学 院&#xff1a; 专 业&#xff1a; 计算机科学与技术 年 级&#xff1a; 学生姓名&#xff1a; 指导教师&…

第二证券|抖音发布三季度安全透明度报告,整治贩卖焦虑广告近3万条

近来&#xff0c;抖音发布《2022年第三季度安全透明度陈述》(以下简称《陈述》)。《陈述》显现经过要点整治&#xff0c;渠道不标准表达削减超越30%&#xff0c;不实信息被告发量同比下降36.7%&#xff0c;整治贩卖焦虑广告2.9万条。一起&#xff0c;抖音还更新了《社区自律条约…

电子招标采购商城系统:优化传统采购业务,提速企业数字化升级

后疫情时代&#xff0c;电子元器件供应链发生了巨大的变化&#xff0c;缺货已经影响了大多数企业&#xff0c;电子元器件采购人员每天被“缺货”“涨价”的字眼包围着&#xff0c;对电子元器件企业的发展带来了极大的限制。当前&#xff0c;借助数字化技术对电子元器件采购管理…

Deadlock found when trying to get lock; try restarting transaction

报错详情 Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction The error may involve com.iss.cms.fdrb.common.dao.entity.InterfaceQueue.updateInt…

将整个网站变为黑白色

目录 效果&#xff1a; 代码&#xff1a; 兼容性写法&#xff1a; 原理&#xff1a; 效果&#xff1a; ps&#xff1a;实测淘宝也是用的这种方式&#xff0c;有兴趣可以去看看 代码&#xff1a; 使用方式就是找到根标签&#xff0c;将里面的两行代码放进去即可 html {filte…

单商户商城系统功能拆解41—应用中心—用户储值

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…