C++描述 LeetCode 1769. 移動所有球到每個盒子所需的最小運算元
??大家好,我叫亓官劼(qí guān jié ),在CSDN中記錄學習的點滴歷程,時光荏苒,未來可期,加油~博主目前僅在CSDN中寫博客,唯一博客更新的地址為:亓官劼的博客 ,同時正在嘗試在B站中做一些內容分享,B站主頁為: 亓官劼的B站主頁
本文原創為亓官劼,請大家支持原創,部分平臺一直在惡意盜取博主的文章!!!
若需聯系博主,可以聯系本人微信:qiguanjie2015
有 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.length1 <= n <= 2000boxes[i]為'0'或'1'
題解思路
遍歷陣列,如果值為1,則加上當前的距離即可
演算法實作
class Solution {
public:
vector<int> minOperations(string boxes) {
int len = boxes.size();
vector<int> res(len);
for(int i = 0; i < len; i++){
res[i] = 0;
for(int j = 0 ; j < len; j++)
if(boxes[j] == '1')
res[i] += abs(j-i);
}
return res;
}
};
CSDN認證博客專家
Python
全堆疊
資料結構與演算法
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262481.html
標籤:其他
上一篇:好的因子是什么樣的?
