自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 算法基础06 KMP算法

文章目录题目KMP算法思路匹配过程KMP的原理构建`next`数组代码实现总结参考题目LeetCode的第28题,实现strStr(),实现字符串的匹配,实际上就是实现一个JS的indexOf函数const haystack = 'hello', needle = 'll';console.log(strStr(haystack, needle); // 2const haystack = 'aaaaa', needle = 'bba';console.log(strStr(haystack,

2021-06-30 10:05:47 219 1

原创 204 计数质数(2021.06.25)

160. 相交链表链接:https://leetcode-cn.com/problems/count-primes/题目描述见链接内容。解法1:暴力法二话不说,用暴力法解决这个问题,遍历n,对所有计数调用isPrime方法,isPrime中要注意的一个点是,结束循环的条件是x * x < n,不是n / 2,遍历到开方之前就可以完成所有的判断了var countPrimes = function (n) { let count = 0; for (let i = 2; i &lt

2021-06-25 11:12:41 158

原创 113 路径总和II(2021-06-24)

113. 路径总和II链接:https://leetcode-cn.com/problems/path-sum-ii/题目描述见链接内容。解法1:广度优先搜索在广度优先搜索时,重新构造了一个queue,原本的queue只用来存放未遍历的节点,现在queue的成员是一个对象,对象中包括了三个属性,node用来存放未遍历的节点,val存放遍历到当前节点前的历史路径求和,history保存当前节点前的历史路径var pathSum = function (root, targetSum) { l

2021-06-24 10:50:20 138

原创 5 最长回文串(2021-06-23)

5. 最长回文子串链接:https://leetcode-cn.com/problems/longest-palindromic-substring/题目描述见链接内容。解法1:动态规划(1)第一步:定义数组元素的含义dp[i][j]定义为从从i开始,到j结束的字符串是不是一个回文串,是的话填充true(2)第二步:找出数组元素之间的关系式如果一个子串是回文串,那么去掉首尾字符,剩下的子串也一定是回文串,那么就可以得到状态转义方程:dp[i][j] = dp[i + 1][j - 1]

2021-06-23 12:29:32 118

原创 169 多数元素(2021.06.10)

169. 多数元素链接:https://leetcode-cn.com/problems/majority-element/题目描述见链接内容。解法1:Hash法直觉的想到,可以利用一个额外的Map对象,在遍历数组过程中,存储每一项出现的次数,只要某一项的出现次数大元n.length / 2,返回它即可var majorityElement = function (nums) { const map = new Map(); const length = nums.length;

2021-06-10 14:48:40 146 2

原创 168. Excel表列名称(2021.06.09)

168. Excel表列名称链接:https://leetcode-cn.com/problems/excel-sheet-column-title/题目描述见链接内容。解法1:减一法这道题实质上就是进制转换的题目,将十进制转换为26进制,但是特别之处在,如果按照26进制转换,余数是0-25,而现在的转换余数是1-26,对应A-Z,现在需要消除这两个之间的差异解法1就是把被除数减一首先找到字符转换的基准,String.fromCharCode(65),对应字母A这个时候,如果n等于1,对2

2021-06-09 17:17:59 148 2

原创 155 两数之和 II - 输入有序数组(2021.06.07)

167. 两数之和 II - 输入有序数组链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/题目描述见链接内容。解法1:哈希法与无序数组的解法相同,声明一个辅助的Map对象,key是target减去当前遍历的数组的值,valu是当前值的序号遍历数组的时候判断Map对象中是否存在当前值即可var twoSum = function(numbers, target) { const map = new

2021-06-07 21:22:05 175 1

原创 160. 相交链表(2021.06.04)

160. 相交链表链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/题目描述见链接内容。解法1:暴力法二话不说,用暴力法解决这个问题,先遍历headA,看headA的每一个节点,是否在headB存在,也就是说,每一个headA的节点,都要在headB中全部过一遍效率之低下就不用说了var getIntersectionNode = function(headA, headB) { let a =

2021-06-05 19:37:49 97 2

原创 48. 旋转图像(2021.06.04)

48. 旋转图像链接:https://leetcode-cn.com/problems/rotate-image/题目描述见链接内容。解法1:辅助数组既然让原地修改数组,但是我又想不出来如何直接修改,就像之前做的一道题目一样,直接声明一个新的数组,把调换后的数组按顺序推入新的数组中就行了然后需要找到替换的规律,脑子不够用,就用了3x3的矩阵,一个一个列,用归纳法,找到规律:temp[j][length - i - 1] = matrix[i][j]; // i是行,j是列然后把得到的te

2021-06-04 10:16:55 111

原创 155. 最小栈(2021.06.03)

155. 最小栈链接:https://leetcode-cn.com/problems/min-stack/题目描述见链接内容。解法1:辅助栈想到了用一个辅助栈来解决问题,但是总是想着入栈和出栈前把辅助栈排序,这样就总是没法在常数时间内完成getMin的操作要理解栈『先进后出』的特性,a入栈时,如果有栈中已经有了b、c和d,在a没出栈之前,b,c,d一定在栈中,也就是说,只要a在栈顶,那么栈中元素一定是a、b、c和d,也就说说,a在栈顶时,最小值一定是确定的我们把这个与a在栈顶对应的最小值放

2021-06-03 10:22:27 68

原创 141. 环形链表(2021-06-01)

141. 环形链表链接:https://leetcode-cn.com/problems/linked-list-cycle/题目描述见链接内容。解法1:标记链表首先想到的是,在遍历这个链表时,为每个节点添加一个属性visited,如果再次遍历到visited为true时,说明出现了环var hasCycle = function (head) { while (head) { if (head.visited) { return true; } hea

2021-06-01 21:32:04 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除