|
54061 | 54061 | <ul class="md-nav__list">
|
54062 | 54062 |
|
54063 | 54063 | <li class="md-nav__item">
|
54064 |
| - <a href="#solution-1" class="md-nav__link"> |
| 54064 | + <a href="#solution-1-simulation" class="md-nav__link"> |
54065 | 54065 | <span class="md-ellipsis">
|
54066 |
| - Solution 1 |
| 54066 | + Solution 1: Simulation |
54067 | 54067 | </span>
|
54068 | 54068 | </a>
|
54069 | 54069 |
|
@@ -77704,8 +77704,11 @@ <h2 id="description">Description</h2>
|
77704 | 77704 | <h2 id="solutions">Solutions</h2>
|
77705 | 77705 | <!-- solution:start -->
|
77706 | 77706 |
|
77707 |
| -<h3 id="solution-1">Solution 1</h3> |
77708 |
| -<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><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" /><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></div> |
| 77707 | +<h3 id="solution-1-simulation">Solution 1: Simulation</h3> |
| 77708 | +<p>We use an array $d$ to record the denominations of the bills and an array $cnt$ to record the number of bills for each denomination.</p> |
| 77709 | +<p>For the <code>deposit</code> operation, we only need to add the number of bills for the corresponding denomination. The time complexity is $O(1)$.</p> |
| 77710 | +<p>For the <code>withdraw</code> operation, we enumerate the bills from largest to smallest denomination, taking out as many bills as possible without exceeding the $amount$. Then, we subtract the total value of the withdrawn bills from $amount$. If $amount$ is still greater than $0$ at the end, it means it's not possible to withdraw the $amount$ with the available bills, and we return $-1$. Otherwise, we return the number of bills withdrawn. The time complexity is $O(1)$.</p> |
| 77711 | +<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> |
77709 | 77712 | <div class="tabbed-content">
|
77710 | 77713 | <div class="tabbed-block">
|
77711 | 77714 | <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
|
@@ -77981,6 +77984,82 @@ <h3 id="solution-1">Solution 1</h3>
|
77981 | 77984 | <span class="cm"> */</span>
|
77982 | 77985 | </code></pre></div></td></tr></table></div>
|
77983 | 77986 | </div>
|
| 77987 | +<div class="tabbed-block"> |
| 77988 | +<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span> |
| 77989 | +<span class="normal"> 2</span> |
| 77990 | +<span class="normal"> 3</span> |
| 77991 | +<span class="normal"> 4</span> |
| 77992 | +<span class="normal"> 5</span> |
| 77993 | +<span class="normal"> 6</span> |
| 77994 | +<span class="normal"> 7</span> |
| 77995 | +<span class="normal"> 8</span> |
| 77996 | +<span class="normal"> 9</span> |
| 77997 | +<span class="normal">10</span> |
| 77998 | +<span class="normal">11</span> |
| 77999 | +<span class="normal">12</span> |
| 78000 | +<span class="normal">13</span> |
| 78001 | +<span class="normal">14</span> |
| 78002 | +<span class="normal">15</span> |
| 78003 | +<span class="normal">16</span> |
| 78004 | +<span class="normal">17</span> |
| 78005 | +<span class="normal">18</span> |
| 78006 | +<span class="normal">19</span> |
| 78007 | +<span class="normal">20</span> |
| 78008 | +<span class="normal">21</span> |
| 78009 | +<span class="normal">22</span> |
| 78010 | +<span class="normal">23</span> |
| 78011 | +<span class="normal">24</span> |
| 78012 | +<span class="normal">25</span> |
| 78013 | +<span class="normal">26</span> |
| 78014 | +<span class="normal">27</span> |
| 78015 | +<span class="normal">28</span> |
| 78016 | +<span class="normal">29</span> |
| 78017 | +<span class="normal">30</span> |
| 78018 | +<span class="normal">31</span> |
| 78019 | +<span class="normal">32</span> |
| 78020 | +<span class="normal">33</span> |
| 78021 | +<span class="normal">34</span> |
| 78022 | +<span class="normal">35</span> |
| 78023 | +<span class="normal">36</span> |
| 78024 | +<span class="normal">37</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nx">ATM</span><span class="w"> </span><span class="p">{</span> |
| 78025 | +<span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">cnt</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[];</span> |
| 78026 | +<span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">d</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[];</span> |
| 78027 | + |
| 78028 | +<span class="w"> </span><span class="kr">constructor</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
| 78029 | +<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">cnt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">];</span> |
| 78030 | +<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">20</span><span class="p">,</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span><span class="w"> </span><span class="mf">100</span><span class="p">,</span><span class="w"> </span><span class="mf">200</span><span class="p">,</span><span class="w"> </span><span class="mf">500</span><span class="p">];</span> |
| 78031 | +<span class="w"> </span><span class="p">}</span> |
| 78032 | + |
| 78033 | +<span class="w"> </span><span class="nx">deposit</span><span class="p">(</span><span class="nx">banknotesCount</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[])</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span> |
| 78034 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">banknotesCount</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 78035 | +<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">cnt</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">banknotesCount</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> |
| 78036 | +<span class="w"> </span><span class="p">}</span> |
| 78037 | +<span class="w"> </span><span class="p">}</span> |
| 78038 | + |
| 78039 | +<span class="w"> </span><span class="nx">withdraw</span><span class="p">(</span><span class="nx">amount</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="p">{</span> |
| 78040 | +<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">];</span> |
| 78041 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">4</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">>=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 78042 | +<span class="w"> </span><span class="nx">ans</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nx">amount</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">[</span><span class="nx">i</span><span class="p">]),</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">cnt</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span> |
| 78043 | +<span class="w"> </span><span class="nx">amount</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="nx">ans</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">d</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> |
| 78044 | +<span class="w"> </span><span class="p">}</span> |
| 78045 | +<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">amount</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 78046 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">1</span><span class="p">];</span> |
| 78047 | +<span class="w"> </span><span class="p">}</span> |
| 78048 | +<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="nx">ans</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| 78049 | +<span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">cnt</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="nx">ans</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span> |
| 78050 | +<span class="w"> </span><span class="p">}</span> |
| 78051 | +<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">;</span> |
| 78052 | +<span class="w"> </span><span class="p">}</span> |
| 78053 | +<span class="p">}</span> |
| 78054 | + |
| 78055 | +<span class="cm">/**</span> |
| 78056 | +<span class="cm"> * Your ATM object will be instantiated and called as such:</span> |
| 78057 | +<span class="cm"> * var obj = new ATM()</span> |
| 78058 | +<span class="cm"> * obj.deposit(banknotesCount)</span> |
| 78059 | +<span class="cm"> * var param_2 = obj.withdraw(amount)</span> |
| 78060 | +<span class="cm"> */</span> |
| 78061 | +</code></pre></div></td></tr></table></div> |
| 78062 | +</div> |
77984 | 78063 | </div>
|
77985 | 78064 | </div>
|
77986 | 78065 | <!-- solution:end -->
|
|
0 commit comments