Skip to content

Commit b93f2c2

Browse files
committed
deploy: 7928aed
1 parent bc8d45a commit b93f2c2

File tree

8 files changed

+7650
-7503
lines changed

8 files changed

+7650
-7503
lines changed

en/lc/1570/index.html

Lines changed: 79 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42069,9 +42069,9 @@
4206942069
<ul class="md-nav__list">
4207042070

4207142071
<li class="md-nav__item">
42072-
<a href="#solution-1" class="md-nav__link">
42072+
<a href="#solution-1-hash-map" class="md-nav__link">
4207342073
<span class="md-ellipsis">
42074-
Solution 1
42074+
Solution 1: Hash Map
4207542075
</span>
4207642076
</a>
4207742077

@@ -87299,8 +87299,11 @@ <h2 id="description">Description</h2>
8729987299
<h2 id="solutions">Solutions</h2>
8730087300
<!-- solution:start -->
8730187301

87302-
<h3 id="solution-1">Solution 1</h3>
87303-
<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>
87302+
<h3 id="solution-1-hash-map">Solution 1: Hash Map</h3>
87303+
<p>We use a hash map <span class="arithmatex">\(d\)</span> to store non-zero elements, where the key is the index, and the value is the corresponding value. We iterate through <span class="arithmatex">\(\textit{nums}\)</span>, and if <span class="arithmatex">\(\textit{nums}[i]\)</span> is not <span class="arithmatex">\(0\)</span>, we add <span class="arithmatex">\((i, \textit{nums}[i])\)</span> to the hash map <span class="arithmatex">\(d\)</span>.</p>
87304+
<p>When calculating the dot product, we iterate through the hash map with fewer non-zero elements and check if the other hash map contains the corresponding key. If it exists, we multiply the corresponding values and add them to the result.</p>
87305+
<p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, and the space complexity is <span class="arithmatex">\(O(n)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the array.</p>
87306+
<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">Rust</label></div>
8730487307
<div class="tabbed-content">
8730587308
<div class="tabbed-block">
8730687309
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -87614,6 +87617,78 @@ <h3 id="solution-1">Solution 1</h3>
8761487617
<span class="cm"> */</span>
8761587618
</code></pre></div></td></tr></table></div>
8761687619
</div>
87620+
<div class="tabbed-block">
87621+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
87622+
<span class="normal"> 2</span>
87623+
<span class="normal"> 3</span>
87624+
<span class="normal"> 4</span>
87625+
<span class="normal"> 5</span>
87626+
<span class="normal"> 6</span>
87627+
<span class="normal"> 7</span>
87628+
<span class="normal"> 8</span>
87629+
<span class="normal"> 9</span>
87630+
<span class="normal">10</span>
87631+
<span class="normal">11</span>
87632+
<span class="normal">12</span>
87633+
<span class="normal">13</span>
87634+
<span class="normal">14</span>
87635+
<span class="normal">15</span>
87636+
<span class="normal">16</span>
87637+
<span class="normal">17</span>
87638+
<span class="normal">18</span>
87639+
<span class="normal">19</span>
87640+
<span class="normal">20</span>
87641+
<span class="normal">21</span>
87642+
<span class="normal">22</span>
87643+
<span class="normal">23</span>
87644+
<span class="normal">24</span>
87645+
<span class="normal">25</span>
87646+
<span class="normal">26</span>
87647+
<span class="normal">27</span>
87648+
<span class="normal">28</span>
87649+
<span class="normal">29</span>
87650+
<span class="normal">30</span>
87651+
<span class="normal">31</span>
87652+
<span class="normal">32</span>
87653+
<span class="normal">33</span>
87654+
<span class="normal">34</span>
87655+
<span class="normal">35</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">use</span><span class="w"> </span><span class="n">std</span><span class="p">::</span><span class="n">collections</span><span class="p">::</span><span class="n">HashMap</span><span class="p">;</span>
87656+
87657+
<span class="cp">#[derive(Clone)]</span>
87658+
<span class="k">struct</span><span class="w"> </span><span class="nc">SparseVector</span><span class="w"> </span><span class="p">{</span>
87659+
<span class="w"> </span><span class="n">d</span><span class="p">:</span><span class="w"> </span><span class="nc">HashMap</span><span class="o">&lt;</span><span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="kt">i32</span><span class="o">&gt;</span><span class="p">,</span>
87660+
<span class="p">}</span>
87661+
87662+
<span class="k">impl</span><span class="w"> </span><span class="n">SparseVector</span><span class="w"> </span><span class="p">{</span>
87663+
<span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">new</span><span class="p">(</span><span class="n">nums</span><span class="p">:</span><span class="w"> </span><span class="nb">Vec</span><span class="o">&lt;</span><span class="kt">i32</span><span class="o">&gt;</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="nc">Self</span><span class="w"> </span><span class="p">{</span>
87664+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HashMap</span><span class="p">::</span><span class="n">new</span><span class="p">();</span>
87665+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">iter</span><span class="p">().</span><span class="n">enumerate</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
87666+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">{</span>
87667+
<span class="w"> </span><span class="n">d</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">x</span><span class="p">);</span>
87668+
<span class="w"> </span><span class="p">}</span>
87669+
<span class="w"> </span><span class="p">}</span>
87670+
<span class="w"> </span><span class="n">SparseVector</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="p">}</span>
87671+
<span class="w"> </span><span class="p">}</span>
87672+
87673+
<span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="nf">dot_product</span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">vec</span><span class="p">:</span><span class="w"> </span><span class="nc">SparseVector</span><span class="p">)</span><span class="w"> </span><span class="p">-&gt;</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="p">{</span>
87674+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="o">&amp;</span><span class="bp">self</span><span class="p">.</span><span class="n">d</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">vec</span><span class="p">.</span><span class="n">d</span><span class="p">);</span>
87675+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="k">mut</span><span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
87676+
87677+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">a</span><span class="p">.</span><span class="n">len</span><span class="p">()</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">b</span><span class="p">.</span><span class="n">len</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
87678+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="n">dot_product</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">clone</span><span class="p">());</span>
87679+
<span class="w"> </span><span class="p">}</span>
87680+
87681+
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="o">&amp;</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">a</span><span class="p">.</span><span class="n">iter</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
87682+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nb">Some</span><span class="p">(</span><span class="o">&amp;</span><span class="n">y</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">b</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87683+
<span class="w"> </span><span class="n">ans</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">y</span><span class="p">;</span>
87684+
<span class="w"> </span><span class="p">}</span>
87685+
<span class="w"> </span><span class="p">}</span>
87686+
87687+
<span class="w"> </span><span class="n">ans</span>
87688+
<span class="w"> </span><span class="p">}</span>
87689+
<span class="p">}</span>
87690+
</code></pre></div></td></tr></table></div>
87691+
</div>
8761787692
</div>
8761887693
</div>
8761987694
<!-- solution:end -->

en/search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)