随笔分类 - --算法恩仇--实战篇--
解题代码
摘要:--算法恩仇录--实战篇--力扣(LeetCode)--070-爬楼梯-- 这道题主要是思路得对。 思路 假如你要走5个阶梯,你的第一步有两种选择。 走一步,还剩4个阶梯 走两步,还剩3个阶梯 那么这就变成了 3 个阶梯加上 4个阶梯的情况。 答案就出来了~ f[n] = f[n-1] + f[n-
阅读全文
摘要:这道题直接递归模拟添加括号。 注意不要放置过多的右括号。右括号和左括号是一一对应的。 代码: /** * @param {number} n * @return {string[]} */ //使用递归 //每一个括号生成都是一一对应的关系 let list = []; function trava
阅读全文
摘要:这道题纯暴力枚举的复杂度是O(n^2),显然还可以最优。 如果需要优化应该在哪里优化? 需要在遍历的环节进行优化,那么应该如何遍历? 因为我们所计算面积,为两板间较小的那块高度*两板间的距离 所以我们可以从数组的头和尾,两边开始遍历。 每次遍历结束,舍弃较小的那块板子。因为两板间的距离固定-1,所以
阅读全文
摘要:这题。。。没啥好分析的吧。。。模拟一下就行。 关键要分析好模拟需要从哪儿开始转折。 我使用的模拟是遍历一遍,将每一层分成多个字符串数组,最后进行拼接。 吐槽一下:JavaScript的二维数组真的是有点懵~ 代码: 1 function initArray(n) { //创建二维数组 2 var s
阅读全文
摘要:最长回文子串这道题,最关键的步骤还是遍历字符串。如何有效的遍历字符串,是解这道题的关键。 对于回文串的遍历可以查看算法恩仇录第一章对马拉车算法的讲解: --算法恩仇录-01-小虾米回忆马拉车--(Manacher回文串算法) 然后,接下来就只用找到原数组遍历的起点和终点就行。 JS代码如下~ 1 c
阅读全文
摘要:1.这是道简单题,之所以记录的原因是其使用链式编程完成字符串的反转。 代码如下: /** * @param {string} s * @return {string} */ var reverseWords = function(s) { let str='', tmp=''; for(let i
阅读全文

浙公网安备 33010602011771号