Linux迷+Python粉 - 算法//blog.pythonwood.com/人生苦短,我用PythonMon, 22 Jun 2020 00:00:00 +0800面试算法编程选记2题之二分法-寻找斜率为K的2点//blog.pythonwood.com/2020/06/%E9%9D%A2%E8%AF%95%E7%AE%97%E6%B3%95%E7%BC%96%E7%A8%8B%E9%80%89%E8%AE%B02%E9%A2%98%E4%B9%8B%E4%BA%8C%E5%88%86%E6%9F%A5-%E5%AF%BB%E6%89%BE%E6%96%9C%E7%8E%87%E4%B8%BAK%E7%9A%842%E7%82%B9/<p>因为一直是用自学+坚持自学方法走过来的,折腾技术运用还可以,基础算法编程能力一直偏弱。</p> <p>1、二分法属于思维简单,细节弄人的典型。之前陷入过二分法脑风暴中不能通透,这次趁面试遇到好好再过一次,提高深度。</p> <p>2、输入数组A 例如&nbsp;[(x1,y1),(x2,y2)&hellip;],输出斜率为K的点对数目</p> <h3 id="_1">二分查找<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>二分查找要处理好中点 …</p>pythonwoodMon, 22 Jun 2020 00:00:00 +0800tag:blog.pythonwood.com,2020-06-22:/2020/06/面试算法编程选记2题之二分查-寻找斜率为K的2点/算法面试二分查找法pythonRSA原理:欧几里德算法与奥数内容辗转相除法——挑战PythonTip//blog.pythonwood.com/2017/12/RSA%E5%8E%9F%E7%90%86%EF%BC%9A%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%B7%E7%AE%97%E6%B3%95%E4%B8%8E%E5%A5%A5%E6%95%B0%E5%86%85%E5%AE%B9%E8%BE%97%E8%BD%AC%E7%9B%B8%E9%99%A4%E6%B3%95%E2%80%94%E2%80%94%E6%8C%91%E6%88%98PythonTip/<p><a href="http://www.pythontip.com" title="PythonTip">PythonTip</a> 里未攻克的题目,如<a href="http://www.pythontip.com/coding/code_oj_case/46" title="RSA密码方程"><span class="caps">RSA</span>密码方程</a>,如今积累工作经验之后从新挑战,仍然失败未成功了。把过程记录分享下。</p> <h3 id="_1">描述:<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>在<span class="caps">RSA</span>密码体系中,欧几里得算法是加密或解密运算的重要组成部分。它的基本运算过程就是解 (x*a) % n = 1 这种方程。 其中 …</p>pythonwoodSun, 17 Dec 2017 23:00:00 +0800tag:blog.pythonwood.com,2017-12-17:/2017/12/RSA原理:欧几里德算法与奥数内容辗转相除法——挑战PythonTip/python算法pythontip奥数数论欧几里得威佐夫博弈:取石子游戏算法——挑战PythonTip//blog.pythonwood.com/2017/12/%E5%A8%81%E4%BD%90%E5%A4%AB%E5%8D%9A%E5%BC%88%EF%BC%9A%E5%8F%96%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94%E6%8C%91%E6%88%98PythonTip/<p><a href="http://www.pythontip.com" title="PythonTip">PythonTip</a> 里未攻克的题目,如<a href="http://www.pythontip.com/coding/code_oj_case/46" title="取石子游戏">取石子游戏</a>,如今积累工作经验之后从新挑战,成功了。把过程记录分享下。</p> <h3 id="_1">描述:<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法, 一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。 现在给出初始的两堆石子的数目a和b,如果轮到你先取,假设双方都采取最好的策略 …</p>pythonwoodSat, 16 Dec 2017 16:30:00 +0800tag:blog.pythonwood.com,2017-12-16:/2017/12/威佐夫博弈:取石子游戏算法——挑战PythonTip/python算法pythontip动态规划Python解无穷大数除法算法——挑战PythonTip//blog.pythonwood.com/2017/12/Python%E8%A7%A3%E6%97%A0%E7%A9%B7%E5%A4%A7%E6%95%B0%E9%99%A4%E6%B3%95%E7%AE%97%E6%B3%95%E2%80%94%E2%80%94%E6%8C%91%E6%88%98PythonTip/<p><a href="http://www.pythontip.com" title="PythonTip">PythonTip</a>提供了一个不错的学习算法平台,大学毕业前挑战进入了前几名<a href="http://www.pythontip.com/coding/userAcList/624" title="pythonwood解题数量">pythonwood解题数量</a>。</p> <p>当时有些未攻克的题目,比如密码生成题目,如今积累工作经验之后从新挑战,成功了。把过程记录分享下。</p> <h3 id="_1">描述:<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>生活在当代社会,我们要记住很多密码,银行卡,qq,人人,微博,邮箱等等。小P经过一番思索之后,发明了下面这种生成密码方法:给定两个正整数a和b …</p>pythonwoodFri, 15 Dec 2017 16:30:00 +0800tag:blog.pythonwood.com,2017-12-15:/2017/12/Python解无穷大数除法算法——挑战PythonTip/python算法pythontip【实习记】2014-08-29算法学习Boyer-Moore和最长公共子串(LCS)问题——阿里校招题//blog.pythonwood.com/2014/08/%E3%80%90%E5%AE%9E%E4%B9%A0%E8%AE%B0%E3%80%912014-08-29%E7%AE%97%E6%B3%95%E5%AD%A6%E4%B9%A0Boyer-Moore%E5%92%8C%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E4%B8%B2%EF%BC%88LCS%EF%BC%89%E9%97%AE%E9%A2%98%E2%80%94%E2%80%94%E9%98%BF%E9%87%8C%E6%A0%A1%E6%8B%9B%E9%A2%98/<!-- 昨天的问题 方案一:寻找hash函数,可行性极低。 方案二:载入内存,维护成一个守护进程的服务。难度比较大。 方案三:使用前5位来索引,由前3位增至前5位唯一性,理论上是分拆记录扩大100倍,但可以就地利用mysql,最易行。 方案四:使用方案三,但增加一个表以减少冗余,但代价新开一个表,并且每次查询都select join两个表。 --> <h3 id="_1">最长公共子串问题分析<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3> <p>其实这是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结果。这个二维矩阵怎么构造呢?直接举个例子吧:&rdquo;bab&rdquo;和&rdquo;caba&rdquo;(当然我们现在一眼就可以看出来最长公共子串是&rdquo;ba&rdquo;或&rdquo;ab&rdquo;)</p> <p>b  a  b</p> <p>c  0  0  0 …</p>pythonwoodFri, 29 Aug 2014 21:23:00 +0800tag:blog.pythonwood.com,2014-08-29:/2014/08/【实习记】2014-08-29算法学习Boyer-Moore和最长公共子串(LCS)问题——阿里校招题/阿里校招实习算法最长公共子串字符串动态规划