-
Notifications
You must be signed in to change notification settings - Fork 160
/
last-stone-weight-ii.md
33 lines (24 loc) · 1.36 KB
/
last-stone-weight-ii.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<p>We have a collection of rocks, each rock has a positive integer weight.</p>
<p>Each turn, we choose <strong>any two rocks</strong> and smash them together. Suppose the stones have weights <code>x</code> and <code>y</code> with <code>x <= y</code>. The result of this smash is:</p>
<ul>
<li>If <code>x == y</code>, both stones are totally destroyed;</li>
<li>If <code>x != y</code>, the stone of weight <code>x</code> is totally destroyed, and the stone of weight <code>y</code> has new weight <code>y-x</code>.</li>
</ul>
<p>At the end, there is at most 1 stone left. Return the <strong>smallest possible</strong> weight of this stone (the weight is 0 if there are no stones left.)</p>
<p> </p>
<p><strong>Example 1:</strong></p>
<pre>
<strong>Input: </strong>[2,7,4,1,8,1]
<strong>Output: </strong>1
<strong>Explanation: </strong>
We can combine 2 and 4 to get 2 so the array converts to [2,7,1,8,1] then,
we can combine 7 and 8 to get 1 so the array converts to [2,1,1,1] then,
we can combine 2 and 1 to get 1 so the array converts to [1,1,1] then,
we can combine 1 and 1 to get 0 so the array converts to [1] then that's the optimal value.
</pre>
<p> </p>
<p><strong>Note:</strong></p>
<ol>
<li><code>1 <= stones.length <= 30</code></li>
<li><code>1 <= stones[i] <= 100</code></li>
</ol>