Skip to content

Commit b7cda35

Browse files
committed
deploy: 22ce977
1 parent 4ca79e2 commit b7cda35

File tree

6 files changed

+174
-224
lines changed

6 files changed

+174
-224
lines changed

en/lc/2116/index.html

Lines changed: 72 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54033,9 +54033,9 @@
5403354033
<ul class="md-nav__list">
5403454034

5403554035
<li class="md-nav__item">
54036-
<a href="#solution-1" class="md-nav__link">
54036+
<a href="#solution-1-greedy-two-passes" class="md-nav__link">
5403754037
<span class="md-ellipsis">
54038-
Solution 1
54038+
Solution 1: Greedy + Two Passes
5403954039
</span>
5404054040
</a>
5404154041

@@ -86791,7 +86791,7 @@ <h2 id="description">Description</h2>
8679186791
<pre>
8679286792
<strong>Input:</strong> s = &quot;)&quot;, locked = &quot;0&quot;
8679386793
<strong>Output:</strong> false
86794-
<strong>Explanation:</strong> locked permits us to change s[0].
86794+
<strong>Explanation:</strong> locked permits us to change s[0].
8679586795
Changing s[0] to either &#39;(&#39; or &#39;)&#39; will not make s valid.
8679686796
</pre>
8679786797

@@ -86800,7 +86800,7 @@ <h2 id="description">Description</h2>
8680086800
<pre>
8680186801
<strong>Input:</strong> s = &quot;(((())(((())&quot;, locked = &quot;111111010111&quot;
8680286802
<strong>Output:</strong> false
86803-
<strong>Explanation:</strong> locked permits us to change s[6] and s[8].
86803+
<strong>Explanation:</strong> locked permits us to change s[6] and s[8].
8680486804
We change s[6] and s[8] to &#39;)&#39; to make s valid.
8680586805
</pre>
8680686806

@@ -86819,8 +86819,18 @@ <h2 id="description">Description</h2>
8681986819
<h2 id="solutions">Solutions</h2>
8682086820
<!-- solution:start -->
8682186821

86822-
<h3 id="solution-1">Solution 1</h3>
86823-
<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>
86822+
<h3 id="solution-1-greedy-two-passes">Solution 1: Greedy + Two Passes</h3>
86823+
<p>We observe that a string of odd length cannot be a valid parentheses string because there will always be one unmatched parenthesis. Therefore, if the length of the string <span class="arithmatex">\(s\)</span> is odd, return <span class="arithmatex">\(\textit{false}\)</span> immediately.</p>
86824+
<p>Next, we perform two passes.</p>
86825+
<p>The first pass goes from left to right, checking if all <code>'('</code> parentheses can be matched by <code>')'</code> or changeable parentheses. If not, return <span class="arithmatex">\(\textit{false}\)</span>.</p>
86826+
<p>The second pass goes from right to left, checking if all <code>')'</code> parentheses can be matched by <code>'('</code> or changeable parentheses. If not, return <span class="arithmatex">\(\textit{false}\)</span>.</p>
86827+
<p>If both passes complete successfully, it means all parentheses can be matched, and the string <span class="arithmatex">\(s\)</span> is a valid parentheses string. Return <span class="arithmatex">\(\textit{true}\)</span>.</p>
86828+
<p>The time complexity is <span class="arithmatex">\(O(n)\)</span>, where <span class="arithmatex">\(n\)</span> is the length of the string <span class="arithmatex">\(s\)</span>. The space complexity is <span class="arithmatex">\(O(1)\)</span>.</p>
86829+
<p>Similar problems:</p>
86830+
<ul>
86831+
<li><a href="https://github.com/doocs/leetcode/blob/main/solution/0600-0699/0678.Valid%20Parenthesis%20String/README_EN.md">678. Valid Parenthesis String</a></li>
86832+
</ul>
86833+
<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>
8682486834
<div class="tabbed-content">
8682586835
<div class="tabbed-block">
8682686836
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
@@ -87046,6 +87056,62 @@ <h3 id="solution-1">Solution 1</h3>
8704687056
<span class="p">}</span>
8704787057
</code></pre></div></td></tr></table></div>
8704887058
</div>
87059+
<div class="tabbed-block">
87060+
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"> 1</span>
87061+
<span class="normal"> 2</span>
87062+
<span class="normal"> 3</span>
87063+
<span class="normal"> 4</span>
87064+
<span class="normal"> 5</span>
87065+
<span class="normal"> 6</span>
87066+
<span class="normal"> 7</span>
87067+
<span class="normal"> 8</span>
87068+
<span class="normal"> 9</span>
87069+
<span class="normal">10</span>
87070+
<span class="normal">11</span>
87071+
<span class="normal">12</span>
87072+
<span class="normal">13</span>
87073+
<span class="normal">14</span>
87074+
<span class="normal">15</span>
87075+
<span class="normal">16</span>
87076+
<span class="normal">17</span>
87077+
<span class="normal">18</span>
87078+
<span class="normal">19</span>
87079+
<span class="normal">20</span>
87080+
<span class="normal">21</span>
87081+
<span class="normal">22</span>
87082+
<span class="normal">23</span>
87083+
<span class="normal">24</span>
87084+
<span class="normal">25</span>
87085+
<span class="normal">26</span>
87086+
<span class="normal">27</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">canBeValid</span><span class="p">(</span><span class="nx">s</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="nx">locked</span><span class="o">:</span><span class="w"> </span><span class="kt">string</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="p">{</span>
87087+
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
87088+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87089+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
87090+
<span class="w"> </span><span class="p">}</span>
87091+
<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
87092+
<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">&lt;</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87093+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">s</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="s1">&#39;(&#39;</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">locked</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="s1">&#39;0&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87094+
<span class="w"> </span><span class="o">++</span><span class="nx">x</span><span class="p">;</span>
87095+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87096+
<span class="w"> </span><span class="o">--</span><span class="nx">x</span><span class="p">;</span>
87097+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
87098+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
87099+
<span class="w"> </span><span class="p">}</span>
87100+
<span class="w"> </span><span class="p">}</span>
87101+
<span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
87102+
<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="nx">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="o">--</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87103+
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">s</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="s1">&#39;)&#39;</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">locked</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="s1">&#39;0&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87104+
<span class="w"> </span><span class="o">++</span><span class="nx">x</span><span class="p">;</span>
87105+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
87106+
<span class="w"> </span><span class="o">--</span><span class="nx">x</span><span class="p">;</span>
87107+
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
87108+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
87109+
<span class="w"> </span><span class="p">}</span>
87110+
<span class="w"> </span><span class="p">}</span>
87111+
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
87112+
<span class="p">}</span>
87113+
</code></pre></div></td></tr></table></div>
87114+
</div>
8704987115
</div>
8705087116
</div>
8705187117
<!-- solution:end -->

0 commit comments

Comments
 (0)