Skip to content

Commit 1376f85

Browse files
committed
deploy: 5a549bf
1 parent 0c7fe53 commit 1376f85

File tree

7 files changed

+36
-100
lines changed

7 files changed

+36
-100
lines changed

en/lc/1281/index.html

Lines changed: 10 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -34061,15 +34061,6 @@
3406134061
</span>
3406234062
</a>
3406334063

34064-
</li>
34065-
34066-
<li class="md-nav__item">
34067-
<a href="#solution-2" class="md-nav__link">
34068-
<span class="md-ellipsis">
34069-
Solution 2
34070-
</span>
34071-
</a>
34072-
3407334064
</li>
3407434065

3407534066
</ul>
@@ -79417,10 +79408,10 @@ <h2 id="description">Description</h2>
7941779408

7941879409
<pre>
7941979410
<strong>Input:</strong> n = 234
79420-
<strong>Output:</strong> 15
79421-
<b>Explanation:</b>
79422-
Product of digits = 2 * 3 * 4 = 24
79423-
Sum of digits = 2 + 3 + 4 = 9
79411+
<strong>Output:</strong> 15
79412+
<b>Explanation:</b>
79413+
Product of digits = 2 * 3 * 4 = 24
79414+
Sum of digits = 2 + 3 + 4 = 9
7942479415
Result = 24 - 9 = 15
7942579416
</pre>
7942679417

@@ -79429,9 +79420,9 @@ <h2 id="description">Description</h2>
7942979420
<pre>
7943079421
<strong>Input:</strong> n = 4421
7943179422
<strong>Output:</strong> 21
79432-
<b>Explanation:
79433-
</b>Product of digits = 4 * 4 * 2 * 1 = 32
79434-
Sum of digits = 4 + 4 + 2 + 1 = 11
79423+
<b>Explanation:
79424+
</b>Product of digits = 4 * 4 * 2 * 1 = 32
79425+
Sum of digits = 4 + 4 + 2 + 1 = 11
7943579426
Result = 32 - 11 = 21
7943679427
</pre>
7943779428

@@ -79458,18 +79449,10 @@ <h3 id="solution-1-simulation">Solution 1: Simulation</h3>
7945879449
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
7945979450
<span class="normal">2</span>
7946079451
<span class="normal">3</span>
79461-
<span class="normal">4</span>
79462-
<span class="normal">5</span>
79463-
<span class="normal">6</span>
79464-
<span class="normal">7</span>
79465-
<span class="normal">8</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
79452+
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
7946679453
<span class="k">def</span> <span class="nf">subtractProductAndSum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
79467-
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span>
79468-
<span class="k">while</span> <span class="n">n</span><span class="p">:</span>
79469-
<span class="n">n</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="nb">divmod</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
79470-
<span class="n">x</span> <span class="o">*=</span> <span class="n">v</span>
79471-
<span class="n">y</span> <span class="o">+=</span> <span class="n">v</span>
79472-
<span class="k">return</span> <span class="n">x</span> <span class="o">-</span> <span class="n">y</span>
79454+
<span class="n">nums</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)))</span>
79455+
<span class="k">return</span> <span class="n">prod</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span> <span class="o">-</span> <span class="nb">sum</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
7947379456
</code></pre></div></td></tr></table></div>
7947479457
</div>
7947579458
<div class="tabbed-block">
@@ -79642,25 +79625,6 @@ <h3 id="solution-1-simulation">Solution 1: Simulation</h3>
7964279625
</div>
7964379626
<!-- solution:end -->
7964479627

79645-
<!-- solution:start -->
79646-
79647-
<h3 id="solution-2">Solution 2</h3>
79648-
<div class="tabbed-set tabbed-alternate" data-tabs="2:1"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label></div>
79649-
<div class="tabbed-content">
79650-
<div class="tabbed-block">
79651-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
79652-
<span class="normal">2</span>
79653-
<span class="normal">3</span>
79654-
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
79655-
<span class="k">def</span> <span class="nf">subtractProductAndSum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
79656-
<span class="n">nums</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)))</span>
79657-
<span class="k">return</span> <span class="n">prod</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span> <span class="o">-</span> <span class="nb">sum</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
79658-
</code></pre></div></td></tr></table></div>
79659-
</div>
79660-
</div>
79661-
</div>
79662-
<!-- solution:end -->
79663-
7966479628
<!-- problem:end -->
7966579629

7966679630

en/lc/1300/index.html

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34454,9 +34454,9 @@
3445434454
<ul class="md-nav__list">
3445534455

3445634456
<li class="md-nav__item">
34457-
<a href="#solution-1" class="md-nav__link">
34457+
<a href="#solution-1-sorting-prefix-sum-binary-search-enumeration" class="md-nav__link">
3445834458
<span class="md-ellipsis">
34459-
Solution 1
34459+
Solution 1: Sorting + Prefix Sum + Binary Search + Enumeration
3446034460
</span>
3446134461
</a>
3446234462

@@ -79456,7 +79456,11 @@ <h2 id="description">Description</h2>
7945679456
<h2 id="solutions">Solutions</h2>
7945779457
<!-- solution:start -->
7945879458

79459-
<h3 id="solution-1">Solution 1</h3>
79459+
<h3 id="solution-1-sorting-prefix-sum-binary-search-enumeration">Solution 1: Sorting + Prefix Sum + Binary Search + Enumeration</h3>
79460+
<p>We notice that the problem requires changing all values greater than <code>value</code> to <code>value</code> and then summing them up. Therefore, we can consider sorting the array <code>arr</code> first, and then calculating the prefix sum array $s$, where $s[i]$ represents the sum of the first $i$ elements of the array.</p>
79461+
<p>Next, we can enumerate all <code>value</code> values from smallest to largest. For each <code>value</code>, we can use binary search to find the index $i$ of the first element in the array that is greater than <code>value</code>. At this point, the number of elements in the array greater than <code>value</code> is $n - i$, so the number of elements in the array less than or equal to <code>value</code> is $i$. The sum of the elements in the array less than or equal to <code>value</code> is $s[i]$, and the sum of the elements in the array greater than <code>value</code> is $(n - i) \times value$. Therefore, the sum of all elements in the array is $s[i] + (n - i) \times \textit{value}$. If the absolute difference between $s[i] + (n - i) \times \textit{value}$ and <code>target</code> is less than the current minimum difference <code>diff</code>, update <code>diff</code> and <code>ans</code>.</p>
79462+
<p>After enumerating all <code>value</code> values, we can get the final answer <code>ans</code>.</p>
79463+
<p>Time complexity $O(n \times \log n)$, space complexity $O(n)$. Where $n$ is the length of the array <code>arr</code>.</p>
7946079464
<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>
7946179465
<div class="tabbed-content">
7946279466
<div class="tabbed-block">

en/lc/1301/index.html

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34475,9 +34475,9 @@
3447534475
<ul class="md-nav__list">
3447634476

3447734477
<li class="md-nav__item">
34478-
<a href="#solution-1" class="md-nav__link">
34478+
<a href="#solution-1-dynamic-programming" class="md-nav__link">
3447934479
<span class="md-ellipsis">
34480-
Solution 1
34480+
Solution 1: Dynamic Programming
3448134481
</span>
3448234482
</a>
3448334483

@@ -79461,7 +79461,11 @@ <h2 id="description">Description</h2>
7946179461
<h2 id="solutions">Solutions</h2>
7946279462
<!-- solution:start -->
7946379463

79464-
<h3 id="solution-1">Solution 1</h3>
79464+
<h3 id="solution-1-dynamic-programming">Solution 1: Dynamic Programming</h3>
79465+
<p>We define $f[i][j]$ to represent the maximum score from the starting point $(n - 1, n - 1)$ to $(i, j)$, and $g[i][j]$ to represent the number of ways to achieve the maximum score from the starting point $(n - 1, n - 1)$ to $(i, j)$. Initially, $f[n - 1][n - 1] = 0$ and $g[n - 1][n - 1] = 1$. The other positions of $f[i][j]$ are all $-1$, and $g[i][j]$ are all $0$.</p>
79466+
<p>For the current position $(i, j)$, it can be transferred from three positions: $(i + 1, j)$, $(i, j + 1)$, and $(i + 1, j + 1)$. Therefore, we can enumerate these three positions to update the values of $f[i][j]$ and $g[i][j]$. If the current position $(i, j)$ has an obstacle, or the current position is the starting point, or other positions are out of bounds, no update is performed. Otherwise, if another position $(x, y)$ satisfies $f[x][y] \gt f[i][j]$, then we update $f[i][j] = f[x][y]$ and $g[i][j] = g[x][y]$. If $f[x][y] = f[i][j]$, then we update $g[i][j] = g[i][j] + g[x][y]$. Finally, if the current position $(i, j)$ is reachable and is a number, we update $f[i][j] = f[i][j] + board[i][j]$.</p>
79467+
<p>Finally, if $f[0][0] \lt 0$, it means there is no path to reach the endpoint, return $[0, 0]$. Otherwise, return $[f[0][0], g[0][0]]$. Note that the result needs to be taken modulo $10^9 + 7$.</p>
79468+
<p>Time complexity $O(n^2)$, space complexity $O(n^2)$. Where $n$ is the side length of the array.</p>
7946579469
<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>
7946679470
<div class="tabbed-content">
7946779471
<div class="tabbed-block">

en/search/search_index.json

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

lc/1281/index.html

Lines changed: 9 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -34101,15 +34101,6 @@
3410134101
</span>
3410234102
</a>
3410334103

34104-
</li>
34105-
34106-
<li class="md-nav__item">
34107-
<a href="#_4" class="md-nav__link">
34108-
<span class="md-ellipsis">
34109-
方法二
34110-
</span>
34111-
</a>
34112-
3411334104
</li>
3411434105

3411534106
</ul>
@@ -84018,20 +84009,20 @@ <h2 id="_1">题目描述</h2>
8401884009
<p><strong>示例 1:</strong></p>
8401984010

8402084011
<pre><strong>输入:</strong>n = 234
84021-
<strong>输出:</strong>15
84012+
<strong>输出:</strong>15
8402284013
<strong>解释:</strong>
84023-
各位数之积 = 2 * 3 * 4 = 24
84024-
各位数之和 = 2 + 3 + 4 = 9
84014+
各位数之积 = 2 * 3 * 4 = 24
84015+
各位数之和 = 2 + 3 + 4 = 9
8402584016
结果 = 24 - 9 = 15
8402684017
</pre>
8402784018

8402884019
<p><strong>示例 2:</strong></p>
8402984020

8403084021
<pre><strong>输入:</strong>n = 4421
8403184022
<strong>输出:</strong>21
84032-
<strong>解释:
84033-
</strong>各位数之积 = 4 * 4 * 2 * 1 = 32
84034-
各位数之和 = 4 + 4 + 2 + 1 = 11
84023+
<strong>解释:
84024+
</strong>各位数之积 = 4 * 4 * 2 * 1 = 32
84025+
各位数之和 = 4 + 4 + 2 + 1 = 11
8403584026
结果 = 32 - 11 = 21
8403684027
</pre>
8403784028

@@ -84059,18 +84050,10 @@ <h3 id="_3">方法一:模拟</h3>
8405984050
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
8406084051
<span class="normal">2</span>
8406184052
<span class="normal">3</span>
84062-
<span class="normal">4</span>
84063-
<span class="normal">5</span>
84064-
<span class="normal">6</span>
84065-
<span class="normal">7</span>
84066-
<span class="normal">8</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
84053+
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
8406784054
<span class="k">def</span> <span class="nf">subtractProductAndSum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
84068-
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span>
84069-
<span class="k">while</span> <span class="n">n</span><span class="p">:</span>
84070-
<span class="n">n</span><span class="p">,</span> <span class="n">v</span> <span class="o">=</span> <span class="nb">divmod</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
84071-
<span class="n">x</span> <span class="o">*=</span> <span class="n">v</span>
84072-
<span class="n">y</span> <span class="o">+=</span> <span class="n">v</span>
84073-
<span class="k">return</span> <span class="n">x</span> <span class="o">-</span> <span class="n">y</span>
84055+
<span class="n">nums</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)))</span>
84056+
<span class="k">return</span> <span class="n">prod</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span> <span class="o">-</span> <span class="nb">sum</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
8407484057
</code></pre></div></td></tr></table></div>
8407584058
</div>
8407684059
<div class="tabbed-block">
@@ -84243,25 +84226,6 @@ <h3 id="_3">方法一:模拟</h3>
8424384226
</div>
8424484227
<!-- solution:end -->
8424584228

84246-
<!-- solution:start -->
84247-
84248-
<h3 id="_4">方法二</h3>
84249-
<div class="tabbed-set tabbed-alternate" data-tabs="2:1"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Python3</label></div>
84250-
<div class="tabbed-content">
84251-
<div class="tabbed-block">
84252-
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
84253-
<span class="normal">2</span>
84254-
<span class="normal">3</span>
84255-
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
84256-
<span class="k">def</span> <span class="nf">subtractProductAndSum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
84257-
<span class="n">nums</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)))</span>
84258-
<span class="k">return</span> <span class="n">prod</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span> <span class="o">-</span> <span class="nb">sum</span><span class="p">(</span><span class="n">nums</span><span class="p">)</span>
84259-
</code></pre></div></td></tr></table></div>
84260-
</div>
84261-
</div>
84262-
</div>
84263-
<!-- solution:end -->
84264-
8426584229
<!-- problem:end -->
8426684230

8426784231

lc/1300/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84057,7 +84057,7 @@ <h2 id="_2">解法</h2>
8405784057

8405884058
<h3 id="_3">方法一:排序 + 前缀和 + 二分查找 + 枚举</h3>
8405984059
<p>我们注意到,题目中要把所有大于 <code>value</code> 的值变成 <code>value</code>,并且求和,因此我们可以考虑先对数组 <code>arr</code> 进行排序,然后求出前缀和数组 $s$,其中 $s[i]$ 表示数组前 $i$ 个元素之和。</p>
84060-
<p>接下来,我们可以从小到大枚举所有 <code>value</code> 值,对于每个 <code>value</code>,我们可以通过二分查找找到数组中第一个大于 <code>value</code> 的元素的下标 $i$,此时数组中大于 <code>value</code> 的元素个数为 $n - i$,因此数组中小于等于 <code>value</code> 的元素个数为 $i$,此时数组中小于等于 <code>value</code> 的元素之和为 $s[i]$,数组中大于 <code>value</code> 的元素之和为 $(n - i) \times value$,因此数组中所有元素之和为 $s[i] + (n - i) \times value$。如果 $s[i] + (n - i) \times value$ 与 <code>target</code> 的差的绝对值小于当前的最小差值 <code>diff</code>,则更新 <code>diff</code> 和 <code>ans</code>。</p>
84060+
<p>接下来,我们可以从小到大枚举所有 <code>value</code> 值,对于每个 <code>value</code>,我们可以通过二分查找找到数组中第一个大于 <code>value</code> 的元素的下标 $i$,此时数组中大于 <code>value</code> 的元素个数为 $n - i$,因此数组中小于等于 <code>value</code> 的元素个数为 $i$,此时数组中小于等于 <code>value</code> 的元素之和为 $s[i]$,数组中大于 <code>value</code> 的元素之和为 $(n - i) \times \textit{value}$,因此数组中所有元素之和为 $s[i] + (n - i) \times \textit{value}$。如果 $s[i] + (n - i) \times \textit{value}$ 与 <code>target</code> 的差的绝对值小于当前的最小差值 <code>diff</code>,则更新 <code>diff</code> 和 <code>ans</code>。</p>
8406184061
<p>枚举完所有 <code>value</code> 后,即可得到最终答案 <code>ans</code>。</p>
8406284062
<p>时间复杂度 $O(n \times \log n)$,空间复杂度 $O(n)$。其中 $n$ 为数组 <code>arr</code> 的长度。</p>
8406384063
<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>

search/search_index.json

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

0 commit comments

Comments
 (0)