LeetCode每日一题——1769. 移动所有球到每个盒子所需的最小操作数
admin
2024-03-12 02:26:37
0次

LeetCode每日一题系列

题目:1769. 移动所有球到每个盒子所需的最小操作数
难度:普通


文章目录

  • LeetCode每日一题系列
  • 题目
  • 示例
  • 思路
  • 题解
    • 暴力题解
    • 预处理题解


题目

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

思路

  • 数据量n<=2000,看到这个数据量可以想到的是暴力,直接两个for循环,第一个遍历boxes中的所有位置当做盒子;第二个for循环遍历所有位置当做球,然后计算有球的地方到盒子的距离累加起来即可。复杂度为O(n^2)
  • 预处理:找到boxes的前缀数组和后缀数组,即到达某个位置时前面所有球转移到该位置的距离和到达某个位置时后面所有球转移到该位置的距离和,最后将前缀数组与后缀数组相同位置的距离和加起来即可。复杂度为O(n)

题解

暴力题解

class Solution:def minOperations(self, boxes: str) -> List[int]:ans, s = [], set()for i in range(len(boxes)):if boxes[i] == '1':s.add(i)for i in range(len(boxes)):tmp = 0for j in s:tmp += abs(j - i)ans.append(tmp)return ans

预处理题解

class Solution:def minOperations(self, boxes: str) -> List[int]:ans = [0] * len(boxes)# index为到该位置前面所有小球需要移动的距离和,num为前方有的小球个数,下同index, num = 0, 0for i in range(1, len(boxes)):if boxes[i-1] == '1': num += 1index += numans[i] += indexindex, num = 0, 0for i in range(len(boxes)-2, -1, -1):if boxes[i+1] == '1': num += 1index += numans[i] += indexreturn ans

相关内容

热门资讯

玩家必看科普透视器!1973棋... 玩家必看科普透视器!1973棋牌透视器多功能AI技巧,1973棋牌确实是有透视器技巧1.1973棋牌...
玩家必看攻略透视挂!家乡大贰透... 玩家必看攻略透视挂!家乡大贰透视挂多功能AI插件,家乡大贰本来有透视挂插件1、操作简单,无需家乡大贰...
总算了解辅助器!牵手跑胡子辅助... 总算了解辅助器!牵手跑胡子辅助器多功能AI教程,牵手跑胡子总是有辅助器教程1、总算了解辅助器!牵手跑...
分享认知透视器!七七娱乐透视器... 分享认知透视器!七七娱乐透视器多功能AI插件,七七娱乐果然存在有透视器插件进入游戏-大厅左侧-新手福...
一分钟揭秘外挂!巴西外挂多功能... 一分钟揭秘外挂!巴西外挂多功能AI脚本,巴西切实有外挂脚本一、巴西可以开透视的定义与意义1、巴西是不...
玩家攻略推荐作弊器!心悦辽宁麻... 玩家攻略推荐作弊器!心悦辽宁麻将作弊器多功能AIapp,心悦辽宁麻将都是是有作弊器app1、心悦辽宁...
必知教程透视挂!天天卡五星透视... 必知教程透视挂!天天卡五星透视挂多功能AI攻略,天天卡五星本来存在有透视挂攻略1、游戏颠覆性的策略玩...
盘点一款开挂!七七娱乐开挂多功... 盘点一款开挂!七七娱乐开挂多功能AI插件,七七娱乐一贯有开挂插件亲,关键说明,七七娱乐透视脚本安卓赛...
记者发布作弊器!麻将争霸花牌作... 记者发布作弊器!麻将争霸花牌作弊器多功能AI教程,麻将争霸花牌都是是真的有作弊器教程在进入麻将争霸花...
指导大家外挂!葫芦岛爱玩麻将外... 指导大家外挂!葫芦岛爱玩麻将外挂多功能AI攻略,葫芦岛爱玩麻将一贯有外挂攻略1)葫芦岛爱玩麻将辅助插...