leetCode 517 超級洗衣機 1

2021-09-04 02:15:27 字數 1518 閱讀 9635

517. 超級洗衣機

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

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

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

示例 1:輸入:[1,0,5]輸出:3解釋:第一步: 1 0 <-- 5 => 1 1 4 第二步: 1 <-- 1 <-- 4 => 2 1 3 第三步: 2 1 <-- 3 => 2 2 2

示例 2:輸入:[0,3,0]輸出:2解釋:第一步: 0 <-- 3 0 => 1 2 0 第二步: 1 2 --> 0 => 1 1 1

示例 3:輸入:[0,2,0]輸出:-1解釋:不可能讓所有三個洗衣機同時剩下相同數量的衣物。

n 的範圍是 [1, 10000]。

在每台超級洗衣機中,衣物數量的範圍是 [0, 1e5]。

思路1: 我的理解是像流水一樣,多的向少的蔓延,但是如果某個地方水為0,高處的水還沒有蔓延到這裡,那麼這裡就耽誤了,因此採用逐步蔓延的方法,這個過程也是題目描述過程的真實模擬!

**如下,在117/120處超時。

class solution 

if(d[i]<0&&machines[i+1]>0&&!vist[i+1])

}if(ex) cnt++;

} while(ex);

return cnt;

}};

思路2:實際上,我上述的擔憂是不存在的,當此處為0的水要蔓延,花費的時間肯定比其他水更多的地方花費的時間少,即便此處因為沒有水了,耽誤了,不影響最大時間,比如,0 0 6,那麼第二個0要向第乙個移動2個水,但是開始的時候因為第二處沒有水,耽誤了乙個時間,但是6處需要4個時間,2處不影響最大時間。

因此,**簡化如下。 d[i]如果為負數,表示後面要向當前i流動,否則,當前要向後面流動,如果乙個既要 向前流動,又要想後流動,那麼應該是是前後流動之和,比如0 3 0.這個要特別注意。

class solution 

return imax;

}};

思路3. 優秀例子

class solution 

return cnt;

}};

Leetcode 517 超級洗衣機 C

假設有 n 臺超級洗衣機放在同一排上。開始的時候,每台洗衣機內可能有一定量的衣服,也可能是空的。在每一步操作中,你可以選擇任意 m 1 m n 臺洗衣機,與此同時將每台洗衣機的一件衣服送到相鄰的一台洗衣機。給定乙個非負整數陣列代表從左至右每台洗衣機中的衣物數量,請給出能讓所有洗衣機中剩下的衣物的數量...

leetcode超級醜數

1.n個指標 設primes.size n,則設定n個指標,初始為0,分別指向結果陣列中有資格與primes 0 primes n 1 相乘的元素的下標,取最小值,且最小值對應的指標的值加1,如下 class solution public int nthsuperuglynumber int n,...

LeetCode 906 超級回文數

如果乙個正整數自身是回文數,而且它也是乙個回文數的平方,那麼我們稱這個數為超級回文數。現在,給定兩個正整數l和r 以字串形式表示 返回包含在範圍 l,r 中的超級回文數的數目。示例 輸入 l 4 r 1000 輸出 4 解釋 4,9,121,以及 484 是超級回文數。注意 676 不是乙個超級回文...