400 lines
112 KiB
XML
400 lines
112 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||
<title>MarkDown</title>
|
||
|
||
<subtitle>「靡不有初,鲜克有终」</subtitle>
|
||
<link href="http://blog.tunpok.com/atom.xml" rel="self"/>
|
||
|
||
<link href="http://blog.tunpok.com/"/>
|
||
<updated>2020-04-21T05:17:04.000Z</updated>
|
||
<id>http://blog.tunpok.com/</id>
|
||
|
||
<author>
|
||
<name>Ching</name>
|
||
|
||
</author>
|
||
|
||
<generator uri="https://hexo.io/">Hexo</generator>
|
||
|
||
<entry>
|
||
<title>leetcode-number-of-islands</title>
|
||
<link href="http://blog.tunpok.com/2020/04/21/leetcode-number-of-islands/"/>
|
||
<id>http://blog.tunpok.com/2020/04/21/leetcode-number-of-islands/</id>
|
||
<published>2020-04-21T04:55:17.000Z</published>
|
||
<updated>2020-04-21T05:17:04.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="200-岛屿数量"><a href="#200-岛屿数量" class="headerlink" title="200. 岛屿数量"></a>200. 岛屿数量</h3><p><a href="https://leetcode-cn.com/problems/number-of-islands/">题目</a></p><span id="more"></span><p>这种矩阵题现在第一反应就是用<a href="(https://zh.wikipedia.org/zh-cn/%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2)">广度优先搜索</a>做,类似之前算和0之间的距离那题。遍历矩阵,遇到 1 就将 1 改成 0,然后广度优先搜索找出 1 相邻的所有 1,这就是一个岛屿,以此类推。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> collections</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">numIslands</span>(<span class="params">self, grid</span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> rows = <span class="built_in">len</span>(grid)</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> rows:</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> cols = <span class="built_in">len</span>(grid[<span class="number">0</span>])</span><br><span class="line"> islands = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> r <span class="keyword">in</span> <span class="built_in">range</span>(rows):</span><br><span class="line"> <span class="keyword">for</span> l <span class="keyword">in</span> <span class="built_in">range</span>(cols):</span><br><span class="line"> <span class="keyword">if</span> grid[r][l] == <span class="string">'1'</span>:</span><br><span class="line"> islands += <span class="number">1</span></span><br><span class="line"> grid[r][l] = <span class="string">'0'</span></span><br><span class="line"> neighbors = collections.deque([(r, l)])</span><br><span class="line"> <span class="keyword">while</span> neighbors:</span><br><span class="line"> x, y = neighbors.popleft()</span><br><span class="line"> <span class="keyword">for</span> x_, y_ <span class="keyword">in</span> [[x-<span class="number">1</span>, y], [x+<span class="number">1</span>, y], [x, y-<span class="number">1</span>], [x, y+<span class="number">1</span>]]:</span><br><span class="line"> <span class="keyword">if</span> <span class="number">0</span><=x_<rows <span class="keyword">and</span> <span class="number">0</span><=y_<cols <span class="keyword">and</span> grid[x_][y_] == <span class="string">'1'</span>:</span><br><span class="line"> neighbors.append([x_, y_])</span><br><span class="line"> grid[x_][y_] = <span class="string">'0'</span></span><br><span class="line"> <span class="keyword">return</span> islands</span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="200-岛屿数量"><a href="#200-岛屿数量" class="headerlink" title="200. 岛屿数量"></a>200. 岛屿数量</h3><p><a href="https://leetcode-cn.com/problems/number-of-islands/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-string-to-integer-atoi</title>
|
||
<link href="http://blog.tunpok.com/2020/04/16/leetcode-string-to-integer-atoi/"/>
|
||
<id>http://blog.tunpok.com/2020/04/16/leetcode-string-to-integer-atoi/</id>
|
||
<published>2020-04-16T11:50:10.000Z</published>
|
||
<updated>2020-04-16T11:56:40.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="8-字符串转换整数-atoi"><a href="#8-字符串转换整数-atoi" class="headerlink" title="8. 字符串转换整数 (atoi)"></a>8. 字符串转换整数 (atoi)</h3><p><a href="https://leetcode-cn.com/problems/string-to-integer-atoi/">题目</a></p><span id="more"></span><p>没什么好说的,注意各种情况,识别到数字之后就一直要是数字。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">myAtoi</span>(<span class="params">self, <span class="built_in">str</span>: <span class="built_in">str</span></span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> p = <span class="string">''</span></span><br><span class="line"> <span class="built_in">str</span> = <span class="built_in">str</span>.lstrip()</span><br><span class="line"> n = <span class="string">''</span></span><br><span class="line"> min_int = -<span class="number">2</span>**<span class="number">31</span></span><br><span class="line"> max_int = <span class="number">2</span>**<span class="number">31</span>-<span class="number">1</span></span><br><span class="line"> isnumeric = <span class="literal">False</span></span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">str</span>:</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> isnumeric <span class="keyword">and</span> x == <span class="string">'-'</span>:</span><br><span class="line"> p = <span class="string">'-'</span></span><br><span class="line"> isnumeric = <span class="literal">True</span></span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> isnumeric <span class="keyword">and</span> x == <span class="string">'+'</span>:</span><br><span class="line"> isnumeric = <span class="literal">True</span></span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"> <span class="keyword">if</span> x.isnumeric():</span><br><span class="line"> n += x</span><br><span class="line"> isnumeric = <span class="literal">True</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> n:</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">int</span>(n) > max_int:</span><br><span class="line"> <span class="keyword">if</span> p:</span><br><span class="line"> <span class="keyword">return</span> min_int</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">return</span> max_int</span><br><span class="line"> p += n</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">int</span>(p)</span><br><span class="line"><span class="comment"># 32 ms13.6 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="8-字符串转换整数-atoi"><a href="#8-字符串转换整数-atoi" class="headerlink" title="8. 字符串转换整数 (atoi)"></a>8. 字符串转换整数 (atoi)</h3><p><a href="https://leetcode-cn.com/problems/string-to-integer-atoi/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-merge-intervals</title>
|
||
<link href="http://blog.tunpok.com/2020/04/16/leetcode-merge-intervals/"/>
|
||
<id>http://blog.tunpok.com/2020/04/16/leetcode-merge-intervals/</id>
|
||
<published>2020-04-16T11:22:26.000Z</published>
|
||
<updated>2020-04-16T11:22:48.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="56-合并区间"><a href="#56-合并区间" class="headerlink" title="56. 合并区间"></a>56. 合并区间</h3><p><a href="https://leetcode-cn.com/problems/merge-intervals/">题目</a></p><span id="more"></span><p>首先将区间按起点由小到大排序,这样相邻的两个就能通过终点判断是否重合。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">merge</span>(<span class="params">self, intervals</span>):</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> intervals:</span><br><span class="line"> <span class="keyword">return</span> []</span><br><span class="line"> intervals.sort()</span><br><span class="line"> merged = []</span><br><span class="line"> l = <span class="built_in">len</span>(intervals)</span><br><span class="line"> m = intervals[<span class="number">0</span>]</span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(l-<span class="number">1</span>):</span><br><span class="line"> j = intervals[x+<span class="number">1</span>]</span><br><span class="line"> <span class="keyword">if</span> m[<span class="number">1</span>] >= j[<span class="number">0</span>]:</span><br><span class="line"> <span class="keyword">if</span> m[<span class="number">1</span>] <= j[<span class="number">1</span>]:</span><br><span class="line"> m = [m[<span class="number">0</span>], j[<span class="number">1</span>]]</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> merged.append(m)</span><br><span class="line"> m = j</span><br><span class="line"> <span class="keyword">if</span> m:</span><br><span class="line"> merged.append(m)</span><br><span class="line"> <span class="keyword">return</span> merged</span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="56-合并区间"><a href="#56-合并区间" class="headerlink" title="56. 合并区间"></a>56. 合并区间</h3><p><a href="https://leetcode-cn.com/problems/merge-intervals/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-01-matrix</title>
|
||
<link href="http://blog.tunpok.com/2020/04/16/leetcode-01-matrix/"/>
|
||
<id>http://blog.tunpok.com/2020/04/16/leetcode-01-matrix/</id>
|
||
<published>2020-04-16T04:26:34.000Z</published>
|
||
<updated>2020-04-16T04:26:56.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="542-01-矩阵"><a href="#542-01-矩阵" class="headerlink" title="542. 01 矩阵"></a>542. 01 矩阵</h3><p><a href="https://leetcode-cn.com/problems/01-matrix/">题目</a></p><span id="more"></span><p>想了两种思路</p><ol><li><p>0 位置的上下左右是 1, 上下左右中有跟 1 相邻的就是 2,以此类推,从 0 的坐标开始往上下左右四个方向扩散。如果我们把同意个距离的看作是一层,可以用一个队列依次存放每一层的坐标,直至每个坐标都被计算过。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">updateMatrix</span>(<span class="params">self, matrix: <span class="type">List</span>[<span class="type">List</span>[<span class="built_in">int</span>]]</span>) -> <span class="type">List</span>[<span class="type">List</span>[<span class="built_in">int</span>]]:</span></span><br><span class="line"> m, n = <span class="built_in">len</span>(matrix), <span class="built_in">len</span>(matrix[<span class="number">0</span>])</span><br><span class="line"> dist = [[<span class="number">0</span>] * n <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(m)]</span><br><span class="line"> zeroes_pos = [(i, j) <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(m) <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(n) <span class="keyword">if</span> matrix[i][j] == <span class="number">0</span>]</span><br><span class="line"> <span class="comment"># 将所有的 0 添加进初始队列中</span></span><br><span class="line"> q = collections.deque(zeroes_pos)</span><br><span class="line"> seen = <span class="built_in">set</span>(zeroes_pos)</span><br><span class="line"></span><br><span class="line"> <span class="comment"># 广度优先搜索</span></span><br><span class="line"> <span class="keyword">while</span> q:</span><br><span class="line"> i, j = q.popleft()</span><br><span class="line"> <span class="keyword">for</span> ni, nj <span class="keyword">in</span> [(i - <span class="number">1</span>, j), (i + <span class="number">1</span>, j), (i, j - <span class="number">1</span>), (i, j + <span class="number">1</span>)]:</span><br><span class="line"> <span class="keyword">if</span> <span class="number">0</span> <= ni < m <span class="keyword">and</span> <span class="number">0</span> <= nj < n <span class="keyword">and</span> (ni, nj) <span class="keyword">not</span> <span class="keyword">in</span> seen:</span><br><span class="line"> dist[ni][nj] = dist[i][j] + <span class="number">1</span></span><br><span class="line"> q.append((ni, nj))</span><br><span class="line"> seen.add((ni, nj))</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> dist</span><br></pre></td></tr></table></figure></li><li><p>从左上角开往右下角遍历矩阵,当前坐标的距离由左和上两个位置的值确定。遍历一遍后,再反过来从右下角开始往左上角遍历,当前坐标的距离根据右和下两个位置的值确定,比较这两次得出的值中较小的一个即为该点的距离。</p></li></ol>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="542-01-矩阵"><a href="#542-01-矩阵" class="headerlink" title="542. 01 矩阵"></a>542. 01 矩阵</h3><p><a href="https://leetcode-cn.com/problems/01-matrix/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-add-two-numbers-ii</title>
|
||
<link href="http://blog.tunpok.com/2020/04/14/leetcode-add-two-numbers-ii/"/>
|
||
<id>http://blog.tunpok.com/2020/04/14/leetcode-add-two-numbers-ii/</id>
|
||
<published>2020-04-14T15:22:39.000Z</published>
|
||
<updated>2020-04-14T15:28:35.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="445-两数相加-II"><a href="#445-两数相加-II" class="headerlink" title="445. 两数相加 II"></a>445. 两数相加 II</h3><p><a href="https://leetcode-cn.com/problems/add-two-numbers-ii/">题目</a></p><span id="more"></span><p>看到顺序的链表就想到用倒序链表的方法做,折腾了半天</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ListNode</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self, x</span>):</span></span><br><span class="line"> self.val = x</span><br><span class="line"> self.<span class="built_in">next</span> = <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">addTwoNumbers</span>(<span class="params">self, l1: ListNode, l2: ListNode</span>) -> ListNode:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">_reverse</span>(<span class="params">l</span>):</span></span><br><span class="line"> <span class="keyword">if</span> l.<span class="built_in">next</span>:</span><br><span class="line"> last = _reverse(l.<span class="built_in">next</span>)</span><br><span class="line"> l.<span class="built_in">next</span>.<span class="built_in">next</span> = l</span><br><span class="line"> l.<span class="built_in">next</span> = <span class="literal">None</span></span><br><span class="line"> <span class="keyword">return</span> last</span><br><span class="line"> <span class="keyword">return</span> l</span><br><span class="line"></span><br><span class="line"> l1e = _reverse(l1)</span><br><span class="line"> l2e = _reverse(l2)</span><br><span class="line"> new_l = ListNode(<span class="number">0</span>)</span><br><span class="line"> head = new_l</span><br><span class="line"> c = <span class="number">0</span></span><br><span class="line"> <span class="keyword">import</span> ipdb; ipdb.set_trace()</span><br><span class="line"> <span class="keyword">while</span> l1e <span class="keyword">and</span> l2e:</span><br><span class="line"> new_val = l1e.val + l2e.val</span><br><span class="line"> <span class="keyword">if</span> c==<span class="number">1</span>:</span><br><span class="line"> new_val += <span class="number">1</span></span><br><span class="line"> c = <span class="number">0</span></span><br><span class="line"> <span class="keyword">if</span> new_val >= <span class="number">10</span>:</span><br><span class="line"> new_val -= <span class="number">10</span></span><br><span class="line"> c = <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> new_l.val = new_val</span><br><span class="line"> next_n = <span class="literal">None</span></span><br><span class="line"> <span class="keyword">if</span> l1e.<span class="built_in">next</span> <span class="keyword">and</span> l2e.<span class="built_in">next</span> <span class="keyword">or</span> c:</span><br><span class="line"> next_n = ListNode(c)</span><br><span class="line"> new_l.<span class="built_in">next</span> = next_n</span><br><span class="line"> new_l = next_n</span><br><span class="line"> l1e = l1e.<span class="built_in">next</span></span><br><span class="line"> l2e = l2e.<span class="built_in">next</span></span><br><span class="line"> <span class="keyword">if</span> l2e:</span><br><span class="line"> l1e = l2e</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> l1e <span class="keyword">and</span> c:</span><br><span class="line"> l1e = ListNode(<span class="number">0</span>)</span><br><span class="line"> <span class="keyword">while</span> l1e:</span><br><span class="line"> new_l.val = l1e.val</span><br><span class="line"> new_l.val += c</span><br><span class="line"> c = <span class="number">0</span></span><br><span class="line"> <span class="keyword">if</span> new_l.val >= <span class="number">10</span>:</span><br><span class="line"> c = <span class="number">1</span></span><br><span class="line"> new_l.val -= <span class="number">10</span></span><br><span class="line"> l1e = l1e.<span class="built_in">next</span></span><br><span class="line"> <span class="keyword">if</span> l1e:</span><br><span class="line"> new_l.<span class="built_in">next</span> = ListNode(<span class="number">0</span>)</span><br><span class="line"> new_l = new_l.<span class="built_in">next</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> new_l.<span class="built_in">next</span> = ListNode(<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> _reverse(head)</span><br><span class="line"></span><br><span class="line"> <span class="comment"># 84 ms13.9 MB</span></span><br></pre></td></tr></table></figure><p>最后面各种进位的处理应该还可以更清晰优雅一些,但是懒得搞了,感觉很蠢。翻了答案看到了小 tips,需要倒序处理的情况可以用栈。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">addTwoNumbers</span>(<span class="params">self, l1: ListNode, l2: ListNode</span>) -> ListNode:</span></span><br><span class="line"> s1, s2 = [], []</span><br><span class="line"> <span class="keyword">while</span> l1:</span><br><span class="line"> s1.append(l1.val)</span><br><span class="line"> l1 = l1.<span class="built_in">next</span></span><br><span class="line"> <span class="keyword">while</span> l2:</span><br><span class="line"> s2.append(l2.val)</span><br><span class="line"> l2 = l2.<span class="built_in">next</span></span><br><span class="line"> ans = <span class="literal">None</span></span><br><span class="line"> carry = <span class="number">0</span></span><br><span class="line"> <span class="keyword">while</span> s1 <span class="keyword">or</span> s2 <span class="keyword">or</span> carry != <span class="number">0</span>:</span><br><span class="line"> a = <span class="number">0</span> <span class="keyword">if</span> <span class="keyword">not</span> s1 <span class="keyword">else</span> s1.pop()</span><br><span class="line"> b = <span class="number">0</span> <span class="keyword">if</span> <span class="keyword">not</span> s2 <span class="keyword">else</span> s2.pop()</span><br><span class="line"> cur = a + b + carry</span><br><span class="line"> carry = cur // <span class="number">10</span></span><br><span class="line"> cur %= <span class="number">10</span></span><br><span class="line"> curnode = ListNode(cur)</span><br><span class="line"> curnode.<span class="built_in">next</span> = ans</span><br><span class="line"> ans = curnode</span><br><span class="line"> <span class="keyword">return</span> ans</span><br><span class="line"></span><br><span class="line">作者:LeetCode-Solution</span><br><span class="line">链接:https://leetcode-cn.com/problems/add-two-numbers-ii/solution/liang-shu-xiang-jia-ii-by-leetcode-solution/</span><br><span class="line">来源:力扣(LeetCode)</span><br><span class="line">著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。</span><br></pre></td></tr></table></figure><p>不过就执行效率来看差不多。</p>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="445-两数相加-II"><a href="#445-两数相加-II" class="headerlink" title="445. 两数相加 II"></a>445. 两数相加 II</h3><p><a href="https://leetcode-cn.com/problems/add-two-numbers-ii/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-design-twitter</title>
|
||
<link href="http://blog.tunpok.com/2020/04/14/leetcode-design-twitter/"/>
|
||
<id>http://blog.tunpok.com/2020/04/14/leetcode-design-twitter/</id>
|
||
<published>2020-04-14T08:11:41.000Z</published>
|
||
<updated>2020-04-14T15:29:34.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="355-设计推特"><a href="#355-设计推特" class="headerlink" title="355. 设计推特"></a>355. 设计推特</h3><p><a href="https://leetcode-cn.com/problems/design-twitter/">题目</a></p><span id="more"></span><p>做出来倒是很简单,由于没有并发和特别的条件,测试数据量也不大。一开始搞错了,以为传入的 <code>twitterId</code> 就是自增的 id,结果其实是每条推的内容,所以增加了一个计数器去标记 id。</p><p>主要的考点应该是 <code>多路归并</code> 这个东西。我用的是排序,在数据量大的时候应该会有些问题。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Twitter</span>:</span></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self</span>):</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Initialize your data structure here.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> self.tweets = {}</span><br><span class="line"> self.followers = {}</span><br><span class="line"> self._tid = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">postTweet</span>(<span class="params">self, userId: <span class="built_in">int</span>, tweetId: <span class="built_in">int</span></span>) -> <span class="literal">None</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Compose a new tweet.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> self.tweets.get(userId):</span><br><span class="line"> self.tweets[userId] = []</span><br><span class="line"> self.tweets[userId].append((self._tid, tweetId))</span><br><span class="line"> self._tid += <span class="number">1</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">getNewsFeed</span>(<span class="params">self, userId: <span class="built_in">int</span></span>) :</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Retrieve the 10 most recent tweet ids in the user's news feed. Each item in the news feed must be posted by users who the user followed or by the user herself. Tweets must be ordered from most recent to least recent.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> foers = self.followers.get(userId, <span class="built_in">set</span>())</span><br><span class="line"> foers = foers.union((userId,))</span><br><span class="line"> tweets = []</span><br><span class="line"> <span class="keyword">for</span> fo <span class="keyword">in</span> foers:</span><br><span class="line"> tweets.extend(self.tweets.get(fo, [])[-<span class="number">10</span>:])</span><br><span class="line"> <span class="keyword">return</span> [tw[<span class="number">1</span>] <span class="keyword">for</span> tw <span class="keyword">in</span> <span class="built_in">sorted</span>(tweets, reverse=<span class="literal">True</span>)[:<span class="number">10</span>]]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">follow</span>(<span class="params">self, followerId: <span class="built_in">int</span>, followeeId: <span class="built_in">int</span></span>) -> <span class="literal">None</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Follower follows a followee. If the operation is invalid, it should be a no-op.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> self.followers.get(followerId):</span><br><span class="line"> self.followers[followerId] = <span class="built_in">set</span>()</span><br><span class="line"> self.followers[followerId].add(followeeId)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">unfollow</span>(<span class="params">self, followerId: <span class="built_in">int</span>, followeeId: <span class="built_in">int</span></span>) -> <span class="literal">None</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Follower unfollows a followee. If the operation is invalid, it should be a no-op.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> self.followers.get(followerId):</span><br><span class="line"> self.followers[followerId] = <span class="built_in">set</span>()</span><br><span class="line"> <span class="keyword">if</span> followeeId <span class="keyword">in</span> self.followers[followerId]:</span><br><span class="line"> self.followers[followerId].remove(followeeId)</span><br><span class="line"></span><br><span class="line"><span class="comment">#100 ms19.2 MB</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Your Twitter object will be instantiated and called as such:</span></span><br><span class="line"><span class="comment"># obj = Twitter()</span></span><br><span class="line"><span class="comment"># obj.postTweet(userId,tweetId)</span></span><br><span class="line"><span class="comment"># param_2 = obj.getNewsFeed(userId)</span></span><br><span class="line"><span class="comment"># obj.follow(followerId,followeeId)</span></span><br><span class="line"><span class="comment"># obj.unfollow(followerId,followeeId)</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="355-设计推特"><a href="#355-设计推特" class="headerlink" title="355. 设计推特"></a>355. 设计推特</h3><p><a href="https://leetcode-cn.com/problems/design-twitter/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof</title>
|
||
<link href="http://blog.tunpok.com/2020/04/09/leetcode-he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/"/>
|
||
<id>http://blog.tunpok.com/2020/04/09/leetcode-he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/</id>
|
||
<published>2020-04-09T14:14:56.000Z</published>
|
||
<updated>2020-04-14T15:29:40.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="面试题57-II-和为s的连续正数序列"><a href="#面试题57-II-和为s的连续正数序列" class="headerlink" title="面试题57 - II. 和为s的连续正数序列"></a>面试题57 - II. 和为s的连续正数序列</h3><p><a href="https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/">题目</a></p><span id="more"></span><p>又是小学奥数。由等差数列求和公式$\cfrac{(首项 + 末项)×项数}{2}$ 可知,当首项为 1 的时候项数最多,又由于是连续正整数,$n^2 < (1+n)×n < (n+1)^2 $,那最大的 $n$ 就不大于 $\sqrt{2×target} + 1$。</p><p>由小到大遍历 $n$,可以求得首项。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> math</span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">findContinuousSequence</span>(<span class="params">self, target: <span class="built_in">int</span></span>):</span></span><br><span class="line"> n = <span class="built_in">int</span>(math.sqrt(<span class="number">2</span> * target) + <span class="number">1</span>)</span><br><span class="line"> <span class="keyword">if</span> n < <span class="number">2</span>:</span><br><span class="line"> <span class="keyword">return</span> []</span><br><span class="line"> sum_list = []</span><br><span class="line"> a = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, n+<span class="number">1</span>):</span><br><span class="line"> a = ((<span class="number">2</span> * target) / i + <span class="number">1</span> - i) / <span class="number">2</span></span><br><span class="line"> <span class="keyword">if</span> a <span class="keyword">and</span> <span class="keyword">not</span> a % <span class="number">1</span>:</span><br><span class="line"> a = <span class="built_in">int</span>(a)</span><br><span class="line"> s_ = []</span><br><span class="line"> <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, i):</span><br><span class="line"> s_.append(a + j)</span><br><span class="line"> sum_list.append(s_)</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">sorted</span>(sum_list)</span><br><span class="line"> <span class="comment"># 60 ms13.7 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="面试题57-II-和为s的连续正数序列"><a href="#面试题57-II-和为s的连续正数序列" class="headerlink" title="面试题57 - II. 和为s的连续正数序列"></a>面试题57 - II. 和为s的连续正数序列</h3><p><a href="https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-the-masseuse-lcci</title>
|
||
<link href="http://blog.tunpok.com/2020/04/09/leetcode-the-masseuse-lcci/"/>
|
||
<id>http://blog.tunpok.com/2020/04/09/leetcode-the-masseuse-lcci/</id>
|
||
<published>2020-04-08T16:35:26.000Z</published>
|
||
<updated>2020-04-08T17:14:04.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="面试题-17-16-按摩师"><a href="#面试题-17-16-按摩师" class="headerlink" title="面试题 17.16. 按摩师"></a>面试题 17.16. 按摩师</h3><p><a href="https://leetcode-cn.com/problems/the-masseuse-lcci/">题目</a></p><span id="more"></span><p>一开始以为是用递归,想了半天没想出来,偷看了一下答案。答案的思路跟递归类似,假设在当前 $i$ 时刻,$dp[i][0]$ 为当前预约不接的情况下最长预约时间,$dp[i][1]$ 则为接受当前预约的最长预约时间。</p><p>那很显然,由于不能接受相邻两个预约,$dp[i][1] = dp[i-1][0] + nums_i$</p><p>不接受当前预约的话,上一个预约接不接受都可以,$dp[i][0] = max(dp[i-1][0], dp[i-1][1])$</p><p>最后只要比较两种情况即可 $max(dp[i][0], dp[i][1])$</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">massage</span>(<span class="params">self, nums</span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> nums:</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> n = <span class="built_in">len</span>(nums)</span><br><span class="line"> not_choose = <span class="number">0</span></span><br><span class="line"> choose = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> n <span class="keyword">in</span> nums:</span><br><span class="line"> not_choose, choose = <span class="built_in">max</span>(not_choose, choose), not_choose+n</span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">max</span>(not_choose, choose)</span><br><span class="line"> <span class="comment"># 52 ms13.6 MB</span></span><br></pre></td></tr></table></figure><p>这种问题原来有个名字叫<a href="https://zh.wikipedia.org/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92">动态规划</a>,上面推导的方程叫<a href="https://baike.baidu.com/item/%E7%8A%B6%E6%80%81%E8%BD%AC%E7%A7%BB%E6%96%B9%E7%A8%8B">状态转移方程</a>,可以找找资料来看一下。</p>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="面试题-17-16-按摩师"><a href="#面试题-17-16-按摩师" class="headerlink" title="面试题 17.16. 按摩师"></a>面试题 17.16. 按摩师</h3><p><a href="https://leetcode-cn.com/problems/the-masseuse-lcci/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-compress-string-lcci</title>
|
||
<link href="http://blog.tunpok.com/2020/04/01/leetcode-compress-string-lcci/"/>
|
||
<id>http://blog.tunpok.com/2020/04/01/leetcode-compress-string-lcci/</id>
|
||
<published>2020-04-01T07:51:22.000Z</published>
|
||
<updated>2020-04-01T07:57:26.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="面试题-01-06-字符串压缩"><a href="#面试题-01-06-字符串压缩" class="headerlink" title="面试题 01.06. 字符串压缩"></a>面试题 01.06. 字符串压缩</h3><p><a href="https://leetcode-cn.com/problems/compress-string-lcci/">题目</a></p><span id="more"></span><p>遍历一遍字符串,遇到跟上一个字符不同的字符时记录上一个字符的重复长度。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">compressString</span>(<span class="params">self, S: <span class="built_in">str</span></span>) -> <span class="built_in">str</span>:</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> S:</span><br><span class="line"> <span class="keyword">return</span> S</span><br><span class="line"> c = <span class="string">''</span></span><br><span class="line"> prev = S[<span class="number">0</span>]</span><br><span class="line"> p_len = <span class="number">1</span></span><br><span class="line"> <span class="keyword">for</span> w <span class="keyword">in</span> S[<span class="number">1</span>:]:</span><br><span class="line"> <span class="keyword">if</span> w != prev:</span><br><span class="line"> c += <span class="string">'%s%s'</span> % (prev, p_len)</span><br><span class="line"> prev = w</span><br><span class="line"> p_len = <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> p_len += <span class="number">1</span></span><br><span class="line"> c += <span class="string">'%s%s'</span> % (prev, p_len)</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(S) > <span class="built_in">len</span>(c):</span><br><span class="line"> <span class="keyword">return</span> c</span><br><span class="line"> <span class="keyword">return</span> S</span><br><span class="line"><span class="comment"># 52 ms13.8 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="面试题-01-06-字符串压缩"><a href="#面试题-01-06-字符串压缩" class="headerlink" title="面试题 01.06. 字符串压缩"></a>面试题 01.06. 字符串压缩</h3><p><a href="https://leetcode-cn.com/problems/compress-string-lcci/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-1103</title>
|
||
<link href="http://blog.tunpok.com/2020/04/01/leetcode-1103/"/>
|
||
<id>http://blog.tunpok.com/2020/04/01/leetcode-1103/</id>
|
||
<published>2020-04-01T03:22:20.000Z</published>
|
||
<updated>2020-04-08T17:17:27.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="1103-分糖果-II"><a href="#1103-分糖果-II" class="headerlink" title="1103. 分糖果 II"></a>1103. 分糖果 II</h3><p><a href="https://leetcode-cn.com/problems/distribute-candies-to-people/">题目</a></p><span id="more"></span><p>小学奥数题。主要思路就是等差数列求和 $\cfrac{(首项 + 末项)×项数}{2}$ 。可以用公式把每一个位置获得的总糖果数表示出来。我的方法稍微蠢了点,算了每一轮的总糖果数,其实可以直接求总共发了多少次糖果,除以每轮的人数就可以得出发了多少轮。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">distributeCandies</span>(<span class="params">self, candies: <span class="built_in">int</span>, num_people: <span class="built_in">int</span></span>):</span></span><br><span class="line"> total = <span class="number">0</span></span><br><span class="line"> i = <span class="number">0</span></span><br><span class="line"> <span class="comment"># import ipdb; ipdb.set_trace()</span></span><br><span class="line"> <span class="keyword">while</span> total <= candies:</span><br><span class="line"> t = (num_people*i)*num_people + <span class="built_in">int</span>((<span class="number">1</span>+num_people)*num_people/<span class="number">2</span>)</span><br><span class="line"> <span class="keyword">if</span> total + t <= candies:</span><br><span class="line"> total += t</span><br><span class="line"> i += <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> remaining = candies - total</span><br><span class="line"> <span class="built_in">print</span>(total, remaining, i)</span><br><span class="line"> l = []</span><br><span class="line"> <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, num_people+<span class="number">1</span>):</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> total:</span><br><span class="line"> current_candy = n</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> current_candy = n+i*num_people</span><br><span class="line"></span><br><span class="line"> n_count = <span class="built_in">int</span>((<span class="number">0</span>+(i-<span class="number">1</span>))*(i)/<span class="number">2</span>)</span><br><span class="line"> <span class="built_in">print</span>(current_candy, n_count)</span><br><span class="line"> <span class="keyword">if</span> remaining >= current_candy:</span><br><span class="line"> l.append(n_count*num_people + n*i + current_candy)</span><br><span class="line"> remaining -= current_candy</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> l.append(n_count*num_people + n*i + remaining)</span><br><span class="line"> remaining = <span class="number">0</span></span><br><span class="line"> <span class="keyword">return</span> l</span><br><span class="line"><span class="comment"># 28 ms13.7 MB,</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="1103-分糖果-II"><a href="#1103-分糖果-II" class="headerlink" title="1103. 分糖果 II"></a>1103. 分糖果 II</h3><p><a href="https://leetcode-cn.com/problems/distribute-candies-to-people/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-1160</title>
|
||
<link href="http://blog.tunpok.com/2020/04/01/leetcode-1160/"/>
|
||
<id>http://blog.tunpok.com/2020/04/01/leetcode-1160/</id>
|
||
<published>2020-03-31T16:18:48.000Z</published>
|
||
<updated>2020-04-01T07:57:06.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="1160-拼写单词"><a href="#1160-拼写单词" class="headerlink" title="1160. 拼写单词"></a>1160. 拼写单词</h3><p><a href="https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters/">题目</a></p><span id="more"></span><p>利用列表 remove 方法,检查 chars 中是否有足够的字母拼写 word</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">countCharacters</span>(<span class="params">self, words, chars: <span class="built_in">str</span></span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"></span><br><span class="line"> words_ = <span class="string">''</span></span><br><span class="line"> <span class="keyword">for</span> w <span class="keyword">in</span> words:</span><br><span class="line"> lchars = <span class="built_in">list</span>(chars)</span><br><span class="line"> <span class="keyword">try</span>:</span><br><span class="line"> <span class="keyword">for</span> l <span class="keyword">in</span> w:</span><br><span class="line"> lchars.remove(l)</span><br><span class="line"> <span class="keyword">except</span>:</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"> words_ += w</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">len</span>(words_)</span><br><span class="line"><span class="comment"># 152 ms14.1 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="1160-拼写单词"><a href="#1160-拼写单词" class="headerlink" title="1160. 拼写单词"></a>1160. 拼写单词</h3><p><a href="https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-1071</title>
|
||
<link href="http://blog.tunpok.com/2020/03/30/leetcode-1071/"/>
|
||
<id>http://blog.tunpok.com/2020/03/30/leetcode-1071/</id>
|
||
<published>2020-03-30T14:03:01.000Z</published>
|
||
<updated>2020-03-30T14:04:17.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="1071-字符串的最大公因子"><a href="#1071-字符串的最大公因子" class="headerlink" title="1071. 字符串的最大公因子"></a>1071. 字符串的最大公因子</h3><p><a href="https://leetcode-cn.com/problems/greatest-common-divisor-of-strings/">题目</a></p><span id="more"></span><p>如果存在这样字符串,那它最大的长度就是这两个字符串长度的最大公约数。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">gcdOfStrings</span>(<span class="params">self, str1: <span class="built_in">str</span>, str2: <span class="built_in">str</span></span>) -> <span class="built_in">str</span>:</span></span><br><span class="line"> <span class="keyword">if</span> str1[<span class="number">0</span>] != str2[<span class="number">0</span>]:</span><br><span class="line"> <span class="keyword">return</span> <span class="string">''</span></span><br><span class="line"></span><br><span class="line"> a = <span class="built_in">len</span>(str1)</span><br><span class="line"> b = <span class="built_in">len</span>(str2)</span><br><span class="line"> <span class="built_in">print</span>(a, b)</span><br><span class="line"> <span class="keyword">if</span> a < b:</span><br><span class="line"> str1, str2 = str2, str1</span><br><span class="line"> a = <span class="built_in">len</span>(str1)</span><br><span class="line"> b = <span class="built_in">len</span>(str2)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> a%b:</span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, a//b):</span><br><span class="line"> <span class="keyword">if</span> str1[x*b:(x+<span class="number">1</span>)*b] != str2:</span><br><span class="line"> <span class="keyword">return</span> <span class="string">''</span></span><br><span class="line"> <span class="keyword">return</span> str2</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(b, <span class="number">0</span>, -<span class="number">1</span>):</span><br><span class="line"> <span class="built_in">print</span>(x)</span><br><span class="line"> <span class="keyword">if</span> x==b <span class="keyword">or</span> b%x <span class="keyword">or</span> a%x:</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"> <span class="keyword">for</span> y <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, b//x):</span><br><span class="line"> <span class="keyword">if</span> str2[y*x:(y+<span class="number">1</span>)*x] != str2[b-x:b]:</span><br><span class="line"> <span class="keyword">return</span> <span class="string">''</span></span><br><span class="line"> <span class="keyword">for</span> y <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>, a//x):</span><br><span class="line"> <span class="keyword">if</span> str1[y*x:(y+<span class="number">1</span>)*x] != str2[<span class="number">0</span>:x]:</span><br><span class="line"> <span class="keyword">return</span> <span class="string">''</span></span><br><span class="line"> <span class="keyword">return</span> str2[<span class="number">0</span>:x]</span><br><span class="line"><span class="comment"># 44 ms13.9 MB</span></span><br></pre></td></tr></table></figure><p>官方解答中还给了一种巧妙的解法,如果 str1 + str2 == str2 + str1 的话,<a href="https://leetcode-cn.com/problems/greatest-common-divisor-of-strings/solution/zi-fu-chuan-de-zui-da-gong-yin-zi-by-leetcode-solu/">可以证明</a>必定存在这样一个字符串,其长度为两个字符串长度的最大公约数。</p>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="1071-字符串的最大公因子"><a href="#1071-字符串的最大公因子" class="headerlink" title="1071. 字符串的最大公因子"></a>1071. 字符串的最大公因子</h3><p><a href="https://leetcode-cn.com/problems/greatest-common-divisor-of-strings/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-999</title>
|
||
<link href="http://blog.tunpok.com/2020/03/30/leetcode-999/"/>
|
||
<id>http://blog.tunpok.com/2020/03/30/leetcode-999/</id>
|
||
<published>2020-03-30T13:03:25.000Z</published>
|
||
<updated>2020-03-30T13:03:41.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="999-可以被一步捕获的棋子数"><a href="#999-可以被一步捕获的棋子数" class="headerlink" title="999. 可以被一步捕获的棋子数"></a>999. 可以被一步捕获的棋子数</h3><p><a href="https://leetcode-cn.com/problems/available-captures-for-rook/">题目</a></p><span id="more"></span><p>遍历一遍找到车的坐标,然后按上下左右四个方向循环一下看碰到的第一个棋子是什么。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">numRookCaptures</span>(<span class="params">self, board</span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> i = j = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> row <span class="keyword">in</span> board:</span><br><span class="line"> <span class="keyword">if</span> <span class="string">'R'</span> <span class="keyword">in</span> row:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> i += <span class="number">1</span></span><br><span class="line"> j = row.index(<span class="string">'R'</span>)</span><br><span class="line"> count = <span class="number">0</span></span><br><span class="line"> <span class="comment"># right</span></span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(j + <span class="number">1</span>, <span class="number">8</span>):</span><br><span class="line"> <span class="keyword">if</span> row[x] == <span class="string">'p'</span>:</span><br><span class="line"> count += <span class="number">1</span></span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="keyword">if</span> row[x] == <span class="string">'B'</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="comment"># left</span></span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(j, <span class="number">0</span>, -<span class="number">1</span>):</span><br><span class="line"> <span class="keyword">if</span> row[x] == <span class="string">'p'</span>:</span><br><span class="line"> count += <span class="number">1</span></span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="keyword">if</span> row[x] == <span class="string">'B'</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="comment"># up</span></span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(i, <span class="number">0</span>, -<span class="number">1</span>):</span><br><span class="line"> <span class="keyword">if</span> board[x][j] == <span class="string">'p'</span>:</span><br><span class="line"> count += <span class="number">1</span></span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="keyword">if</span> board[x][j] == <span class="string">'B'</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="comment"># down</span></span><br><span class="line"> <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(i+<span class="number">1</span>, <span class="number">8</span>):</span><br><span class="line"> <span class="keyword">if</span> board[x][j] == <span class="string">'p'</span>:</span><br><span class="line"> count += <span class="number">1</span></span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="keyword">if</span> board[x][j] == <span class="string">'B'</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> count</span><br><span class="line"></span><br><span class="line"><span class="comment">#36 ms13.6 MB</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>问题不难,官方解答中给了一个方向数组的概念,上下左右是 (0, 1) (0, -1) (-1, 0) (1, 0),有点像向量的意思。走的路线等于方向数组乘以步数。</p>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="999-可以被一步捕获的棋子数"><a href="#999-可以被一步捕获的棋子数" class="headerlink" title="999. 可以被一步捕获的棋子数"></a>999. 可以被一步捕获的棋子数</h3><p><a href="https://leetcode-cn.com/problems/available-captures-for-rook/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-914</title>
|
||
<link href="http://blog.tunpok.com/2020/03/29/leetcode-914/"/>
|
||
<id>http://blog.tunpok.com/2020/03/29/leetcode-914/</id>
|
||
<published>2020-03-29T14:41:09.000Z</published>
|
||
<updated>2020-03-29T14:52:07.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="914-卡牌分组"><a href="#914-卡牌分组" class="headerlink" title="914. 卡牌分组"></a>914. 卡牌分组</h3><p><a href="https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards/">题目</a></p><span id="more"></span><p>将大牌堆分成多个牌数量相等的小牌堆,就是求每张牌数量的公约数。先遍历一遍得到每张牌的数量,然后找出比2大的公约数即可。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">hasGroupsSizeX</span>(<span class="params">self, deck</span>) -> <span class="built_in">bool</span>:</span></span><br><span class="line"> dc = {}</span><br><span class="line"> max_d = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> d <span class="keyword">in</span> deck:</span><br><span class="line"> <span class="keyword">if</span> d <span class="keyword">not</span> <span class="keyword">in</span> dc:</span><br><span class="line"> dc[d] = <span class="number">0</span></span><br><span class="line"> dc[d] += <span class="number">1</span></span><br><span class="line"> <span class="keyword">if</span> max_d < d:</span><br><span class="line"> max_d = d</span><br><span class="line"> <span class="keyword">if</span> max_d < dc[d]:</span><br><span class="line"> max_d = dc[d]</span><br><span class="line"> has_x = <span class="literal">True</span></span><br><span class="line"> <span class="keyword">if</span> max_d == <span class="number">1</span>:</span><br><span class="line"> max_d = <span class="number">2</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, max_d + <span class="number">1</span>):</span><br><span class="line"> has_x = <span class="literal">True</span></span><br><span class="line"> <span class="keyword">for</span> k,v <span class="keyword">in</span> dc.items():</span><br><span class="line"> <span class="keyword">if</span> v % i:</span><br><span class="line"> has_x = <span class="literal">False</span></span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> <span class="keyword">if</span> has_x <span class="keyword">and</span> i >= <span class="number">2</span>:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#56 ms13.8 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="914-卡牌分组"><a href="#914-卡牌分组" class="headerlink" title="914. 卡牌分组"></a>914. 卡牌分组</h3><p><a href="https://leetcode-cn.com/problems/x-of-a-kind-in-a-deck-of-cards/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-1013</title>
|
||
<link href="http://blog.tunpok.com/2020/03/29/leetcode-1013/"/>
|
||
<id>http://blog.tunpok.com/2020/03/29/leetcode-1013/</id>
|
||
<published>2020-03-29T13:09:22.000Z</published>
|
||
<updated>2020-03-29T13:15:11.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="1013-将数组分成和相等的三个部分"><a href="#1013-将数组分成和相等的三个部分" class="headerlink" title="1013. 将数组分成和相等的三个部分"></a>1013. 将数组分成和相等的三个部分</h3><p><a href="https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/">题目</a></p><span id="more"></span><p>因为是整数数组,如果能均分成三份,则数组和肯定是3的倍数。然后遍历数组逐端求和使得和为 sum(A)/3。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">canThreePartsEqualSum</span>(<span class="params">self, A</span>) -> <span class="built_in">bool</span>:</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> A:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"> sa = <span class="built_in">sum</span>(A)</span><br><span class="line"> <span class="keyword">if</span> sa % <span class="number">3</span>:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"> s = sa // <span class="number">3</span></span><br><span class="line"> s1 = <span class="number">0</span></span><br><span class="line"> s2 = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(A)):</span><br><span class="line"> s1 += A[i]</span><br><span class="line"> <span class="keyword">if</span> s1 == s <span class="keyword">and</span> (i+<span class="number">1</span>) < <span class="built_in">len</span>(A):</span><br><span class="line"> <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(A[i+<span class="number">1</span>:])):</span><br><span class="line"> s2 += A[i+<span class="number">1</span>+j]</span><br><span class="line"> <span class="keyword">if</span> s2 == s <span class="keyword">and</span> j+<span class="number">1</span> < <span class="built_in">len</span>(A[i+<span class="number">1</span>:]) <span class="keyword">and</span> <span class="built_in">sum</span>(A[i+j+<span class="number">2</span>:])== s:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"><span class="comment">#60 ms18.7 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="1013-将数组分成和相等的三个部分"><a href="#1013-将数组分成和相等的三个部分" class="headerlink" title="1013. 将数组分成和相等的三个部分"></a>1013. 将数组分成和相等的三个部分</h3><p><a href="https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-876</title>
|
||
<link href="http://blog.tunpok.com/2020/03/26/leetcode-876/"/>
|
||
<id>http://blog.tunpok.com/2020/03/26/leetcode-876/</id>
|
||
<published>2020-03-26T13:18:41.000Z</published>
|
||
<updated>2020-03-26T13:19:10.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="876-链表的中间结点"><a href="#876-链表的中间结点" class="headerlink" title="876. 链表的中间结点"></a>876. 链表的中间结点</h3><p><a href="https://leetcode-cn.com/problems/middle-of-the-linked-list/">题目</a></p><span id="more"></span><p>思路是遍历一遍得到整个链表,讲每个 node 放进一个 list,就可以通过下标得到中间的。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Definition for singly-linked list.</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ListNode</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self, x</span>):</span></span><br><span class="line"> self.val = x</span><br><span class="line"> self.<span class="built_in">next</span> = <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">middleNode</span>(<span class="params">self, head: ListNode</span>) -> ListNode:</span></span><br><span class="line"> l = []</span><br><span class="line"> n = head</span><br><span class="line"> <span class="keyword">while</span> n.<span class="built_in">next</span>:</span><br><span class="line"> l.append(n)</span><br><span class="line"> n = n.<span class="built_in">next</span></span><br><span class="line"> l.append(n)</span><br><span class="line"> <span class="keyword">return</span> l[<span class="built_in">len</span>(l)//<span class="number">2</span>]</span><br><span class="line"></span><br><span class="line"> <span class="comment">#44 ms13.7 MB</span></span><br></pre></td></tr></table></figure><p>看官方解答,还有一个骚操作,通过两个速度不一样的指针,一个一次走一步,一个两次走一步,快的走到底时,慢的就在中间了。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">middleNode</span>(<span class="params">self, head: ListNode</span>) -> ListNode:</span></span><br><span class="line"> slow = fast = head</span><br><span class="line"> <span class="keyword">while</span> fast <span class="keyword">and</span> fast.<span class="built_in">next</span>:</span><br><span class="line"> slow = slow.<span class="built_in">next</span></span><br><span class="line"> fast = fast.<span class="built_in">next</span>.<span class="built_in">next</span></span><br><span class="line"> <span class="keyword">return</span> slow</span><br><span class="line"></span><br><span class="line">作者:LeetCode-Solution</span><br><span class="line">链接:https://leetcode-cn.com/problems/middle-of-the-linked-<span class="built_in">list</span>/solution/lian-biao-de-zhong-jian-jie-dian-by-leetcode-solut/</span><br><span class="line">来源:力扣(LeetCode)</span><br><span class="line">著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。</span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="876-链表的中间结点"><a href="#876-链表的中间结点" class="headerlink" title="876. 链表的中间结点"></a>876. 链表的中间结点</h3><p><a href="https://leetcode-cn.com/problems/middle-of-the-linked-list/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-836</title>
|
||
<link href="http://blog.tunpok.com/2020/03/25/leetcode-836/"/>
|
||
<id>http://blog.tunpok.com/2020/03/25/leetcode-836/</id>
|
||
<published>2020-03-25T14:41:25.000Z</published>
|
||
<updated>2020-03-25T14:41:44.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="836-矩形重叠"><a href="#836-矩形重叠" class="headerlink" title="836. 矩形重叠"></a>836. 矩形重叠</h3><p><a href="https://leetcode-cn.com/problems/rectangle-overlap/">题目</a></p><span id="more"></span><p>看两个矩形有没有重叠,就看两个矩形在坐标轴上的投影有没有重叠。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">isRectangleOverlap</span>(<span class="params">self, rec1, rec2</span>) -> <span class="built_in">bool</span>:</span></span><br><span class="line"> <span class="keyword">return</span> ((<span class="built_in">min</span>(rec1[<span class="number">2</span>], rec2[<span class="number">2</span>]) > <span class="built_in">max</span>(rec1[<span class="number">0</span>], rec2[<span class="number">0</span>]))</span><br><span class="line"> <span class="keyword">and</span> (<span class="built_in">min</span>(rec1[<span class="number">3</span>], rec2[<span class="number">3</span>]) > <span class="built_in">max</span>(rec1[<span class="number">1</span>], rec2[<span class="number">1</span>])))</span><br><span class="line"></span><br><span class="line">s = Solution()</span><br><span class="line">s.isRectangleOverlap(rec1 = [<span class="number">0</span>,<span class="number">0</span>,<span class="number">2</span>,<span class="number">2</span>], rec2 = [<span class="number">1</span>,<span class="number">1</span>,<span class="number">3</span>,<span class="number">3</span>])</span><br><span class="line"></span><br><span class="line"><span class="comment">#40 ms13.7 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="836-矩形重叠"><a href="#836-矩形重叠" class="headerlink" title="836. 矩形重叠"></a>836. 矩形重叠</h3><p><a href="https://leetcode-cn.com/problems/rectangle-overlap/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-409</title>
|
||
<link href="http://blog.tunpok.com/2020/03/25/leetcode-409/"/>
|
||
<id>http://blog.tunpok.com/2020/03/25/leetcode-409/</id>
|
||
<published>2020-03-25T13:55:38.000Z</published>
|
||
<updated>2020-03-25T13:55:54.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="409-最长回文串"><a href="#409-最长回文串" class="headerlink" title="409. 最长回文串"></a>409. 最长回文串</h3><p><a href="https://leetcode-cn.com/problems/longest-palindrome/">题目</a></p><span id="more"></span><p>一开始理解错题目了,以为是寻找字符串中的最长回文串,结果是构造。但是原理基本一样,由于回文中心对称,所以是由多个偶数个相同字母和至多一个奇数个相同字母组成。</p><p>这样只要数给出的字符串中有几个偶数个相同字母和几个奇数个相同字母就可以了。奇数个相同字母可以减少一个当偶数个用,最后再加回去一个。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">longestPalindrome</span>(<span class="params">self, s: <span class="built_in">str</span></span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> d = {}</span><br><span class="line"> <span class="keyword">for</span> l <span class="keyword">in</span> s:</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> l <span class="keyword">in</span> d:</span><br><span class="line"> d[l] = <span class="number">0</span></span><br><span class="line"> d[l] += <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> i = <span class="number">0</span></span><br><span class="line"> odd = <span class="literal">False</span></span><br><span class="line"> <span class="keyword">for</span> k, v <span class="keyword">in</span> d.items():</span><br><span class="line"> <span class="keyword">if</span> v % <span class="number">2</span>:</span><br><span class="line"> i += (v-<span class="number">1</span>)</span><br><span class="line"> odd = <span class="literal">True</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> i += v</span><br><span class="line"> <span class="keyword">if</span> odd:</span><br><span class="line"> i += <span class="number">1</span></span><br><span class="line"> <span class="keyword">return</span> i</span><br><span class="line"></span><br><span class="line"><span class="comment">#40 ms13.6 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="409-最长回文串"><a href="#409-最长回文串" class="headerlink" title="409. 最长回文串"></a>409. 最长回文串</h3><p><a href="https://leetcode-cn.com/problems/longest-palindrome/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-543</title>
|
||
<link href="http://blog.tunpok.com/2020/03/25/leetcode-543/"/>
|
||
<id>http://blog.tunpok.com/2020/03/25/leetcode-543/</id>
|
||
<published>2020-03-25T11:13:52.000Z</published>
|
||
<updated>2020-04-14T15:29:53.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="543-二叉树的直径"><a href="#543-二叉树的直径" class="headerlink" title="543. 二叉树的直径"></a>543. 二叉树的直径</h3><p><a href="https://leetcode-cn.com/problems/diameter-of-binary-tree/">题目</a></p><span id="more"></span><p>这题做出来了但是没有通过运行时间的测试,主要还是没想明白二叉树的直径到底是什么东西,用了个蠢办法。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Definition for a binary tree node.</span></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">TreeNode</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self, x</span>):</span></span><br><span class="line"> self.val = x</span><br><span class="line"> self.left = <span class="literal">None</span></span><br><span class="line"> self.right = <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>:</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">diameterOfBinaryTree</span>(<span class="params">self, root: TreeNode</span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> root:</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> last_node = -<span class="number">1</span></span><br><span class="line"> routes = []</span><br><span class="line"> start = root</span><br><span class="line"> node_stack = [root]</span><br><span class="line"> <span class="keyword">while</span> (start.left <span class="keyword">or</span> start.right <span class="keyword">or</span> node_stack):</span><br><span class="line"> <span class="keyword">if</span> start != node_stack[-<span class="number">1</span>]:</span><br><span class="line"> node_stack.append(start)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> last_node == start.right:</span><br><span class="line"> node_stack = node_stack[:-<span class="number">1</span>]</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> node_stack:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> last_node = start</span><br><span class="line"> start = node_stack[-<span class="number">1</span>]</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> start.left <span class="keyword">and</span> last_node != start.left:</span><br><span class="line"> start = start.left</span><br><span class="line"> last_node = start</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> start.right:</span><br><span class="line"> start = start.right</span><br><span class="line"> last_node = start</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line"> routes.append(node_stack)</span><br><span class="line"> node_stack = node_stack[:-<span class="number">1</span>]</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> node_stack:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> last_node = start</span><br><span class="line"> start = node_stack[-<span class="number">1</span>]</span><br><span class="line"></span><br><span class="line"> max_l = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> route <span class="keyword">in</span> routes:</span><br><span class="line"> <span class="keyword">for</span> route_ <span class="keyword">in</span> routes:</span><br><span class="line"> intersection = <span class="number">0</span></span><br><span class="line"> <span class="keyword">if</span> route != route_:</span><br><span class="line"> intersection = <span class="built_in">len</span>(<span class="built_in">set</span>(route).intersection(<span class="built_in">set</span>(route_)))</span><br><span class="line"> <span class="keyword">if</span> intersection:</span><br><span class="line"> intersection -= <span class="number">1</span></span><br><span class="line"> max_l = <span class="built_in">max</span>(max_l, <span class="built_in">len</span>(<span class="built_in">set</span>(route)| <span class="built_in">set</span>(route_)) - intersection)</span><br><span class="line"> <span class="keyword">return</span> max_l - <span class="number">1</span></span><br></pre></td></tr></table></figure><p>L43 之前做的是以深度优先的方式遍历一遍树,得出每个点的路径。后面的是将所有路径组合在一起得出任意两个点间的路径,算出最大长度。</p><p>其实以某个点为根节点的树的直径,就是某个节点的<strong>左子树的深度和右子树的深度的和</strong>,用递归来处理这个会比较容易理解</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Solution</span>(<span class="params"><span class="built_in">object</span></span>):</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">diameterOfBinaryTree</span>(<span class="params">self, root</span>):</span></span><br><span class="line"> self.ans = <span class="number">1</span></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">depth</span>(<span class="params">node</span>):</span></span><br><span class="line"> <span class="comment"># 访问到空节点了,返回0</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> node: <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> <span class="comment"># 左儿子为根的子树的深度</span></span><br><span class="line"> L = depth(node.left)</span><br><span class="line"> <span class="comment"># 右儿子为根的子树的深度</span></span><br><span class="line"> R = depth(node.right)</span><br><span class="line"> <span class="comment"># 计算d_node即L+R+1 并更新ans</span></span><br><span class="line"> self.ans = <span class="built_in">max</span>(self.ans, L+R+<span class="number">1</span>)</span><br><span class="line"> <span class="comment"># 返回该节点为根的子树的深度</span></span><br><span class="line"> <span class="keyword">return</span> <span class="built_in">max</span>(L, R) + <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> depth(root)</span><br><span class="line"> <span class="keyword">return</span> self.ans - <span class="number">1</span></span><br><span class="line"></span><br><span class="line">作者:LeetCode-Solution</span><br><span class="line">链接:https://leetcode-cn.com/problems/diameter-of-binary-tree/solution/er-cha-shu-de-zhi-jing-by-leetcode-solution/</span><br><span class="line">来源:力扣(LeetCode)</span><br><span class="line">著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。</span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="543-二叉树的直径"><a href="#543-二叉树的直径" class="headerlink" title="543. 二叉树的直径"></a>543. 二叉树的直径</h3><p><a href="https://leetcode-cn.com/problems/diameter-of-binary-tree/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
<entry>
|
||
<title>leetcode-225</title>
|
||
<link href="http://blog.tunpok.com/2020/03/23/leetcode-225/"/>
|
||
<id>http://blog.tunpok.com/2020/03/23/leetcode-225/</id>
|
||
<published>2020-03-23T15:35:05.000Z</published>
|
||
<updated>2020-03-23T15:35:24.000Z</updated>
|
||
|
||
<content type="html"><![CDATA[<h3 id="225-用队列实现栈"><a href="#225-用队列实现栈" class="headerlink" title="225. 用队列实现栈"></a>225. 用队列实现栈</h3><p><a href="https://leetcode-cn.com/problems/implement-stack-using-queues/">题目</a></p><span id="more"></span><p>注意栈是 FILO(First In Last Out),Python 的 list 是 FIFO(First In First Out)。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">MyStack</span>:</span></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span>(<span class="params">self</span>):</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Initialize your data structure here.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> self.data = []</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">push</span>(<span class="params">self, x: <span class="built_in">int</span></span>) -> <span class="literal">None</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Push element x onto stack.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> self.data.append(x)</span><br><span class="line"> <span class="keyword">return</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">pop</span>(<span class="params">self</span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Removes the element on top of the stack and returns that element.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">return</span> self.data.pop(-<span class="number">1</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">top</span>(<span class="params">self</span>) -> <span class="built_in">int</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Get the top element.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">return</span> self.data[-<span class="number">1</span>]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">empty</span>(<span class="params">self</span>) -> <span class="built_in">bool</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Returns whether the stack is empty.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">return</span> <span class="keyword">not</span> <span class="built_in">bool</span>(self.data)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># Your MyStack object will be instantiated and called as such:</span></span><br><span class="line"><span class="comment"># obj = MyStack()</span></span><br><span class="line"><span class="comment"># obj.push(x)</span></span><br><span class="line"><span class="comment"># param_2 = obj.pop()</span></span><br><span class="line"><span class="comment"># param_3 = obj.top()</span></span><br><span class="line"><span class="comment"># param_4 = obj.empty()</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#24 ms13.5 MB</span></span><br></pre></td></tr></table></figure>]]></content>
|
||
|
||
|
||
<summary type="html"><h3 id="225-用队列实现栈"><a href="#225-用队列实现栈" class="headerlink" title="225. 用队列实现栈"></a>225. 用队列实现栈</h3><p><a href="https://leetcode-cn.com/problems/implement-stack-using-queues/">题目</a></p></summary>
|
||
|
||
|
||
|
||
<category term="leetcode" scheme="http://blog.tunpok.com/categories/leetcode/"/>
|
||
|
||
|
||
</entry>
|
||
|
||
</feed>
|