@@ -84849,7 +84849,7 @@ <h3 id="_3">方法一:贪心 + 二分查找</h3>
84849
84849
<p>我们定义函数 $check(T)$,表示是否存在一种分组方案,使得每一组去掉最大值后不超过 $T$,并且分组数不超过 $m$。</p>
84850
84850
<p>我们可以用贪心的方法来判断是否存在这样的分组方案。我们从左到右遍历题目,将题目耗时加入当前总耗时 $s$,并更新当前分组的最大值 $mx$。如果当前总耗时 $s$ 减去当前分组的最大值 $mx$ 大于 $T$,则将当前题目作为新的分组的第一题,更新 $s$ 和 $mx$。继续遍历题目,直到遍历完所有题目。如果分组数不超过 $m$,则说明存在这样的分组方案,返回 $true$,否则返回 $false$。</p>
84851
84851
<p>时间复杂度 $O(n \times \log S)$,空间复杂度 $O(1)$。其中 $n$ 和 $S$ 分别为题目数量和题目总耗时。</p>
84852
- <div class="tabbed-set tabbed-alternate" data-tabs="1:5 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label></div>
84852
+ <div class="tabbed-set tabbed-alternate" data-tabs="1:6 "><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" />< div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label><label for="__tabbed_1_6">Swift </label></div>
84853
84853
<div class="tabbed-content">
84854
84854
<div class="tabbed-block">
84855
84855
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -85111,6 +85111,74 @@ <h3 id="_3">方法一:贪心 + 二分查找</h3>
85111
85111
<span class="p">}</span>
85112
85112
</code></pre></div></td></tr></table></div>
85113
85113
</div>
85114
+ <div class="tabbed-block">
85115
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
85116
+ <span class="normal"> 2</span>
85117
+ <span class="normal"> 3</span>
85118
+ <span class="normal"> 4</span>
85119
+ <span class="normal"> 5</span>
85120
+ <span class="normal"> 6</span>
85121
+ <span class="normal"> 7</span>
85122
+ <span class="normal"> 8</span>
85123
+ <span class="normal"> 9</span>
85124
+ <span class="normal">10</span>
85125
+ <span class="normal">11</span>
85126
+ <span class="normal">12</span>
85127
+ <span class="normal">13</span>
85128
+ <span class="normal">14</span>
85129
+ <span class="normal">15</span>
85130
+ <span class="normal">16</span>
85131
+ <span class="normal">17</span>
85132
+ <span class="normal">18</span>
85133
+ <span class="normal">19</span>
85134
+ <span class="normal">20</span>
85135
+ <span class="normal">21</span>
85136
+ <span class="normal">22</span>
85137
+ <span class="normal">23</span>
85138
+ <span class="normal">24</span>
85139
+ <span class="normal">25</span>
85140
+ <span class="normal">26</span>
85141
+ <span class="normal">27</span>
85142
+ <span class="normal">28</span>
85143
+ <span class="normal">29</span>
85144
+ <span class="normal">30</span>
85145
+ <span class="normal">31</span>
85146
+ <span class="normal">32</span>
85147
+ <span class="normal">33</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span> <span class="nc">Solution</span> <span class="p">{</span>
85148
+ <span class="kd">func</span> <span class="nf">minTime</span><span class="p">(</span><span class="kc">_</span> <span class="n">time</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="kc">_</span> <span class="n">m</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Int</span> <span class="p">{</span>
85149
+ <span class="kd">var</span> <span class="nv">left</span> <span class="p">=</span> <span class="mi">0</span>
85150
+ <span class="kd">var</span> <span class="nv">right</span> <span class="p">=</span> <span class="n">time</span><span class="p">.</span><span class="bp">reduce</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="o">+</span><span class="p">)</span>
85151
+
85152
+ <span class="k">while</span> <span class="kr">left</span> <span class="o"><</span> <span class="kr">right</span> <span class="p">{</span>
85153
+ <span class="kd">let</span> <span class="nv">mid</span> <span class="p">=</span> <span class="p">(</span><span class="kr">left</span> <span class="o">+</span> <span class="kr">right</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span>
85154
+ <span class="k">if</span> <span class="n">check</span><span class="p">(</span><span class="n">mid</span><span class="p">,</span> <span class="n">time</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span> <span class="p">{</span>
85155
+ <span class="kr">right</span> <span class="p">=</span> <span class="n">mid</span>
85156
+ <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
85157
+ <span class="kr">left</span> <span class="p">=</span> <span class="n">mid</span> <span class="o">+</span> <span class="mi">1</span>
85158
+ <span class="p">}</span>
85159
+ <span class="p">}</span>
85160
+ <span class="k">return</span> <span class="kr">left</span>
85161
+ <span class="p">}</span>
85162
+
85163
+ <span class="kd">private</span> <span class="kd">func</span> <span class="nf">check</span><span class="p">(</span><span class="kc">_</span> <span class="n">t</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="kc">_</span> <span class="n">time</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">],</span> <span class="kc">_</span> <span class="n">m</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-></span> <span class="nb">Bool</span> <span class="p">{</span>
85164
+ <span class="kd">var</span> <span class="nv">sum</span> <span class="p">=</span> <span class="mi">0</span>
85165
+ <span class="kd">var</span> <span class="nv">maxTime</span> <span class="p">=</span> <span class="mi">0</span>
85166
+ <span class="kd">var</span> <span class="nv">days</span> <span class="p">=</span> <span class="mi">1</span>
85167
+
85168
+ <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">time</span> <span class="p">{</span>
85169
+ <span class="n">sum</span> <span class="o">+=</span> <span class="n">x</span>
85170
+ <span class="n">maxTime</span> <span class="p">=</span> <span class="bp">max</span><span class="p">(</span><span class="n">maxTime</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
85171
+ <span class="k">if</span> <span class="n">sum</span> <span class="o">-</span> <span class="n">maxTime</span> <span class="o">></span> <span class="n">t</span> <span class="p">{</span>
85172
+ <span class="n">sum</span> <span class="p">=</span> <span class="n">x</span>
85173
+ <span class="n">maxTime</span> <span class="p">=</span> <span class="n">x</span>
85174
+ <span class="n">days</span> <span class="o">+=</span> <span class="mi">1</span>
85175
+ <span class="p">}</span>
85176
+ <span class="p">}</span>
85177
+ <span class="k">return</span> <span class="n">days</span> <span class="o"><=</span> <span class="n">m</span>
85178
+ <span class="p">}</span>
85179
+ <span class="p">}</span>
85180
+ </code></pre></div></td></tr></table></div>
85181
+ </div>
85114
85182
</div>
85115
85183
</div>
85116
85184
<!-- solution:end -->
@@ -85144,6 +85212,11 @@ <h3 id="_3">方法一:贪心 + 二分查找</h3>
85144
85212
85145
85213
<nav>
85146
85214
85215
+ <a href="https://github.com/klever34" class="md-author" title="@klever34">
85216
+
85217
+ <img src="https://avatars.githubusercontent.com/u/12745225?v=4&size=72" alt="klever34">
85218
+ </a>
85219
+
85147
85220
<a href="https://github.com/yanglbme" class="md-author" title="@yanglbme">
85148
85221
85149
85222
<img src="https://avatars.githubusercontent.com/u/21008209?v=4&size=72" alt="yanglbme">
0 commit comments