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

news/2024/4/19 20:07:35/

 目录链接:

力扣编程题-解法汇总_分享+记录-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;包邮…

Java后端接口幂等的方案

原文网址&#xff1a;Java后端接口幂等的方案_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java后端接口幂等的方案。 接口幂等也是Java后端面试中常见的问题。 幂等的含义 对同一个系统&#xff0c;使用同样的条件&#xff0c;一次请求和重复的多次请求对系统资源的影响是一致的…

Python中__init__.py的作用介绍

一、文件__init__.py作用&#xff1a;package / module 的标志 下图的serrors包含这个文件时候&#xff0c;Python会将其当做一个模块&#xff08;module&#xff09;来处理&#xff0c;进而可以使用from serrors import xx方式导入serrors包中的文件或模块。 如图所示&#x…

马斯克这波操作赢麻了?网友:这是我们玩剩下的

我愿称马斯克已经掌握了人民企业家的精髓——写周报。 周报这东西在国内大家并不陌生&#xff0c;深受荼毒的人更非少数。不过在国外倒是很少&#xff0c;如果确实要汇报&#xff0c;一般都是拉个电话会议&#xff0c;只能说马斯克确实学到了精髓。 不过比起国内的周报卷到飞…

前端面试题集锦(3)

目录 1、解释一下什么是闭包 ? 2、解释一下原型和原型链 ? 3、说一下 ES6 中你熟悉的一些内容 ? 4、数组排序的方式 ? 5、什么是事件轮询(EventLoop) ? 6、数组的一些API, 哪些能够改变原数组, 那些不能 ? 7、for 循环与 forEach 的区别 ? 8、url 的组成 ? 9、…

谁在抢夺千亿老酒

一个中老年男人&#xff0c;推着一辆三轮车&#xff0c;上面放着“高价回收老酒”的纸牌子——这就是老酒民间交易的一个缩影。 这个看似简陋的买卖背后&#xff0c;蕴藏着巨大的市场。 相关数据显示&#xff0c;我国老酒市场规模已破千亿。老酒收藏爱好者、专门的运营机构以…

Postman之Newman命令行运行脚本生成HTML报告

目录 一、Newman的下载安装 二、Newman生成Html报告 三、执行脚本准备 3.1.导出项目集脚本 3.2.导出环境变量 3.3.导出全局变量 3.4.data数据驱动文件 3.5.文件存储 四、Newman运行命令简介 4.1.运行命令&#xff1a;newman run 4.2.常用参数&#xff1a; 4.3.执行…

谷粒学苑_第十一天

要开始做前台部分(用户环境) 之前我们用的后台前端框架是vue-admin-template 这次的前台框架是用的NUXT 轮播图实现 显示课程和老师 redis缓存 NUXT 服务端渲染技术 解压guli_site 在这里我们使用的是成品,页面也基本写好 然后下载依赖: 开始运行: npm rum dev后面…

yolov5量化注意事项(二)

一、引言 前面的博文&#xff0c;是PTQ的注意事项。本篇文章是记录QAT部分需要修改的一些要点。 注&#xff1a;本文仅供自己的笔记作用&#xff0c;防止未来自己忘记一些坑的处理方式 QAT的大致流程&#xff1a;&#xff08;1&#xff09;训练生成基础模型&#xff0c;通常是…

【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通

STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 LAN8720A数据手册(中文英文)----点击下载 STM32F407-ETHLAN8720ALWIP-无操作系统-ping通----程序源码-点击下载 前言 本次实验以 STM32F407VET6 芯片为MCU&#xff0c;使用 25MHz 外部时钟源…

在linux系统上看全世界新闻 -- Clinews的使用详解

一. Clinews介绍 Clinews 和 InstantNews 类似&#xff0c;都是 Linux 命令行下的新闻客户端&#xff0c;安装及配置 Clinews 后就可以在 Linux 命令行下阅读新闻及头条新闻了&#xff0c; 当然还有博客新闻&#xff0c;不需要安装 GUI 应用或移动应用&#xff0c;轻松在 Linu…

STM32实战总结:HAL之IAP

我们学习单片机一般都是从51开始的&#xff0c;51单片机烧录程序通常是使用烧录软件如STC-ISP。这种方式&#xff0c;通过串口连接单片机&#xff0c;选择一个合适的波特率就可以烧录了。 后来学习STM32&#xff0c;编程时使用KEIL软件自带的下载按钮就能下载程序&#xff0c;方…

神仙级编程神器,吹爆

Visual Studio 编程领域公认的“最强IDE”&#xff0c;Visual Studio是目前最流行的Windows平台应用程序的集成开发环境&#xff0c;提供了高级开发工具、调试功能、数据库功能和创新功能&#xff0c;帮助在各种平台上快速创建当前最先进的应用程序&#xff0c;开发新的程序。 …