517. 超級洗衣機

517. 超級洗衣機

假設有 n 臺超級洗衣機放在同一排上。開始的時候,每臺洗衣機內可能有一定量的衣服,也可能是空的。

在每一步操作中,你可以選擇任意 m (1 <= m <= n) 臺洗衣機,與此同時將每臺洗衣機的一件衣服送到相鄰的一臺洗衣機。

給定一個整數數組 machines 代表從左至右每臺洗衣機中的衣物數量,請給出能讓所有洗衣機中剩下的衣物的數量相等的 最少的操作步數 。如果不能使每臺洗衣機中衣物的數量相等,則返回 -1 。

示例 1:輸入:machines = [1,0,5]
輸出:3
解釋:
第一步:    1     0 <-- 5    =>    1     1     4
第二步:    1 <-- 1 <-- 4    =>    2     1     3    
第三步:    2     1 <-- 3    =>    2     2     2   
示例 2:輸入:machines = [0,3,0]
輸出:2
解釋:
第一步:    0 <-- 3     0    =>    1     2     0    
第二步:    1     2 --> 0    =>    1     1     1     
示例 3:輸入:machines = [0,2,0]
輸出:-1
解釋:
不可能讓所有三個洗衣機同時剩下相同數量的衣物。

解題思路

  1. 先計算出衣服的總數,判斷衣服能否被平均分到每一臺洗衣機里面
  2. 對于每一臺洗衣機,我們可以計算出其與平均后衣服數量的差值,如果為負數,意味著需要抽調其他洗衣機的衣服過來,如果為正數,則是需要把當前衣服移除出去。我們將前面若干洗衣機分為一組,后面分為一組,維護一個變量sum,代表前一組洗衣機需要移動多少件衣服進入后一組才可以使得衣服的數量均等。因為每次只能移動一件衣服,因此如果要把前一組的移動到后一組來補充衣服的話,最少需要sum次移動,特殊情況是,當其他一個洗衣機衣服太多,不光要分去后一組,還要平攤到前一組的前部分,至少需要machines[i]-tar次移動

代碼

class Solution {public int findMinMoves(int[] machines) {int n=machines.length,sum=0;for(int m:machines)sum+=m;if(sum%n!=0) return -1;int tar=sum/n,pre=0,res=0;for(int i=0;i<n;i++){machines[i]-=tar;pre+=machines[i];res=Math.max(res,Math.max(Math.abs(pre),machines[i]));} return res;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390026.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

netflix的準實驗面臨的主要挑戰

重點 (Top highlight)Kamer Toker-Yildiz, Colin McFarland, Julia GlickKAMER Toker-耶爾德茲 &#xff0c; 科林麥克法蘭 &#xff0c; Julia格里克 At Netflix, when we can’t run A/B experiments we run quasi experiments! We run quasi experiments with various obje…

網站漏洞檢測針對區塊鏈網站安全分析

2019獨角獸企業重金招聘Python工程師標準>>> 目前移動互聯網中&#xff0c;區塊鏈的網站越來越多&#xff0c;在區塊鏈安全上&#xff0c;很多都存在著網站漏洞&#xff0c;區塊鏈的充值&#xff0c;會員賬號的存儲性XSS竊取漏洞&#xff0c;賬號安全&#xff0c;等…

223. 矩形面積

223. 矩形面積 給你 二維 平面上兩個 由直線構成的 矩形&#xff0c;請你計算并返回兩個矩形覆蓋的總面積。 每個矩形由其 左下 頂點和 右上 頂點坐標表示&#xff1a; 第一個矩形由其左下頂點 (ax1, ay1) 和右上頂點 (ax2, ay2) 定義。 第二個矩形由其左下頂點 (bx1, by1) …

微觀計量經濟學_微觀經濟學與數據科學

微觀計量經濟學什么是經濟學和微觀經濟學&#xff1f; (What are Economics and Microeconomics?) Economics is a social science concerned with the production, distribution, and consumption of goods and services. It studies how individuals, businesses, governmen…

NPM 重新回爐

官方教程傳送門( 英文 ) 本文主要是官方文章的精煉,適合想了解一些常用操作的同學們 NPM 是 基于node的一個包管理工具 , 安裝node環境時會自帶安裝NPM. NPM版本管理 查看現有版本 npm -v 安裝最新的穩定版本 npm install npmlatest -g 安裝最新的測試版本 npm install npmn…

1436. 旅行終點站

1436. 旅行終點站 給你一份旅游線路圖&#xff0c;該線路圖中的旅行線路用數組 paths 表示&#xff0c;其中 paths[i] [cityAi, cityBi] 表示該線路將會從 cityAi 直接前往 cityBi 。請你找出這次旅行的終點站&#xff0c;即沒有任何可以通往其他城市的線路的城市。 題目數據…

如何使用fio模擬線上環境

線上表現 這里我想通過fio來模擬線上的IO場景&#xff0c;那么如何模擬呢&#xff1f; 首先使用iostat看線上某個盤的 使用情況&#xff0c;這里我們需要關注的是 avgrq-sz, avgrq-qz. #iostat -dx 1 1000 /dev/sdk Device: rrqm/s wrqm/s r/s w/s rkB/s …

熊貓數據集_熊貓邁向數據科學的第二部分

熊貓數據集If you haven’t read the first article then it is advised that you go through that before continuing with this article. You can find that article here. So far we have learned how to access data in different ways. Now we will learn how to analyze …

Python基礎綜合練習

Pycharm開發環境設置與熟悉。 練習基本輸入輸出&#xff1a; print(你好,{}..format(name)) print(sys.argv) 庫的使用方法&#xff1a; import ... from ... import ... 條件語句&#xff1a; if (abs(pos()))<1: break 循環語句&#xff1a; for i in range(5): while Tru…

POJ 3608 旋轉卡殼

思路&#xff1a; 旋轉卡殼應用 注意點&邊 邊&邊 點&點 三種情況 //By SiriusRen #include <cmath> #include <cstdio> #include <algorithm> using namespace std; const double eps1e-5; const int N10050; typedef double db; int n,m; str…

405. 數字轉換為十六進制數

405. 數字轉換為十六進制數 給定一個整數&#xff0c;編寫一個算法將這個數轉換為十六進制數。對于負整數&#xff0c;我們通常使用 補碼運算 方法。 注意: 十六進制中所有字母(a-f)都必須是小寫。 十六進制字符串中不能包含多余的前導零。如果要轉化的數為0&#xff0c;那么…

為什么我要重新開始數據科學

I’m feeling stuck.我感覺卡住了。 In my current work and in the content I create (videos and blog posts), I feel like I’ve begun to stall out. Most of the consumers of my content are at the start of their data science journey. The longer I’m in the fiel…

藍牙協議 HFP,HSP,A2DP,A2DP_CT,A2DP_TG,AVRCP,OPP,PBAP,SPP,FTP,TP,DTMF,DUN,SDP

簡介&#xff1a; HSP&#xff08;手機規格&#xff09;– 提供手機&#xff08;移動電話&#xff09;與耳機之間通信所需的基本功能。 HFP&#xff08;免提規格&#xff09;– 在 HSP 的基礎上增加了某些擴展功能&#xff0c;原來只用于從固定車載免提裝置來控制移動電話。 A2…

482. 密鑰格式化

482. 密鑰格式化 有一個密鑰字符串 S &#xff0c;只包含字母&#xff0c;數字以及 ‘-’&#xff08;破折號&#xff09;。其中&#xff0c; N 個 ‘-’ 將字符串分成了 N1 組。 給你一個數字 K&#xff0c;請你重新格式化字符串&#xff0c;使每個分組恰好包含 K 個字符。特…

安裝mariadb、安裝Apache

2019獨角獸企業重金招聘Python工程師標準>>> 安裝mariadb 安裝mariadb的步驟與安裝mysql的一樣 下載二進制源碼包 再用tar 解壓&#xff0c;創建/data/mariadb目錄和用戶 初始化 編譯啟動腳本 啟動 安裝Apache Apache是軟件基金會的名字&#xff0c;軟件的名字叫htt…

數據科學的發展_數據科學的發展與發展

數據科學的發展There’s perhaps nothing that sets the 21st century apart from others more than the concept of data. Every interaction we have with a connected device creates a data record, and beams it back to some data store for tracking and analysis. Inte…

Polling 、Long Polling 和 WebSocket

最近在學習研究WebSocket,了解到Polling 和Long Polling,翻閱了一些博文&#xff0c;根據自己的理解&#xff0c;做個學習筆記 Polling &#xff08;輪詢&#xff09;&#xff1a; 這種方式就是客戶端定時向服務器發送http的Get請求&#xff0c;服務器收到請求后&#xff0c;就…

慣性張量的推理_選擇合適的intel工作站處理器進行張量流推理和開發

慣性張量的推理With the increasing number of data scientists using TensorFlow, it might be a good time to discuss which workstation processor to choose from Intel’s lineup. You have several options to choose from:隨著使用TensorFlow的數據科學家數量的增加&am…

MongoDB數據庫查詢性能提高40倍

MongoDB數據庫查詢性能提高40倍 大家在使用 MongoDB 的時候有沒有碰到過性能問題呢&#xff1f;下面這篇文章主要給大家分享了MongoDB數據庫查詢性能提高40倍的經歷&#xff0c;需要的朋友可以參考借鑒&#xff0c;下面來一起看看吧。 前言 數據庫性能對軟件整體性能有著至關重…

通過Ajax方式上傳文件(input file),使用FormData進行Ajax請求

<script type"text/jscript">$(function () {$("#btn_uploadimg").click(function () {var fileObj document.getElementById("FileUpload").files[0]; // js 獲取文件對象if (typeof (fileObj) "undefined" || fileObj.size …