1769 移動所有球到每個盒子所需的最小運算元

2021-10-19 21:51:54 字數 1064 閱讀 9895

題目描述:

有 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 個盒子:將乙個小球從第 2 個盒子移動到第 1 個盒子,需要 1 步操作。

第 2 個盒子:將乙個小球從第 1 個盒子移動到第 2 個盒子,需要 1 步操作。

第 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』

方法1:

(1)統計1的分布,然後利用分布,獲得移動到每個位置上的移動距離;

class

solution

} res[0]

= cur_count;

for(

int i =

1; i < boxes.

size()

;++i)

return res;}}

;

所有取球方案

程式設計題 袋子裡有n個球,每次取只能取1個 2個 3個球,請輸出所有可能的情況。例如,假設袋子裡有4個球,則所有可能情況為 1 1 1 1 1 2 1 1 32 2 3 11 1 2 2 1 1 思路 固定第一次取球次數i,然後考慮袋子裡有n i個球的情況。固定第二次取j,考慮n i j的情況 遞...

可移動懸浮球的實現

近期看到魅族的懸浮球功能,初步研究了下,實現了基本的功能。window 乙個抽象類,具體實現在phonewindow。表示乙個視窗的概念,android中所有的view都是通過window來顯示的,actvity dialog toast中的view都是附加在window上的 window是view...

科普 Scrum 從橄欖球爭球到敏捷開發

對敏捷開發scrum稍有了解的都知道scrum 於橄欖球,但你知道為何要以這項球類運動的術語來命名這個敏捷開發方 嗎?scrum 一詞源於英式橄欖球運動,是指雙方球員對陣爭球。雙方前鋒肩靠肩站成一橫排,面對面躬身,肩膀互相抵在一起,形成乙個通道。犯規隊的球員低手將球拋入通道,此時通道兩邊的球員們互相...