![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
coder_yihua
这个作者很懒,什么都没留下…
展开
-
字符串的排列(TS)
题目来源于leetcode字符串的排列function checkInclusion(s1: string, s2: string): boolean { //滑动窗口+数组 const equal = (arr1:number[], arr2:number[]) => { for(let i = 0; i < arr1.length ; i++){ if(arr1[i] != arr2[i]){ ret.原创 2022-02-09 14:21:50 · 748 阅读 · 0 评论 -
无重复字符的最长子串
题目来源于leetcode无重复字符的最长子串var lengthOfLongestSubstring = function(s) { let set = new Set() , n = s.length , max = 0 ; for(let i = 0 ; i < n ; i++){ j = i let count = 0 while(j<n){ if(!set.has(s[j])){ .原创 2022-02-09 11:11:31 · 235 阅读 · 0 评论 -
链表的中间结点
题目来源于leetcode链表的中间结点var middleNode = function(head) { // 双指针解法 let p1 = head , p2 = head // p1走一步,p2走两步,则当p2到终点的时候p1则在中点,如果是奇数时p2到最后一个加一的时候p1到中点 while(p2&&p2.next){ p1 = p1.next p2 = p2.next.next } return p.原创 2022-02-09 18:30:00 · 201 阅读 · 0 评论 -
反转字符串中的单词 III(JS)
题目来源于leetcode反转字符串中的单词var reverseWords = function(s) { let arr = s.split(' ') const reverseString = (str) => { if(!str) return str str = str.split('') let temp for(let i = 0 ; i < str.length>>1 ; i++).原创 2022-02-08 21:30:00 · 137 阅读 · 0 评论 -
反转字符串(JS)
题目来源于leetcode反转字符串var reverseString = function(s) { //双指针 let satrt = 0 , end = s.length - 1 , temp; while(satrt<end){ temp = s[satrt] s[satrt] = s[end] s[end] = temp satrt ++ end -- } //for.原创 2022-02-08 16:07:44 · 309 阅读 · 0 评论 -
两数之和 II - 输入有序数组
题目来源于leetcode两数之和 II - 输入有序数组var twoSum = function(numbers, target) { //for循环 for(let i = 0 ; i< numbers.length ; i++){ let j = i + 1; while(j < numbers.length){ if(numbers[j] + numbers[i] == target){ .原创 2022-02-08 15:53:58 · 81 阅读 · 0 评论 -
移动零(JS)
题目来源于leetcode移动0var moveZeroes = function(nums) { //双重for循环 for(let i = 0; i < nums.length - 1; i++){ for(let j = 0 ; j < nums.length -1 ;j++){ if(nums[j] == 0){ nums[j] = nums[j+1] nums[j.原创 2022-02-08 20:00:00 · 376 阅读 · 0 评论 -
轮转数组(JS)
题目来源于leetcode轮转数组原创 2022-02-08 14:59:21 · 487 阅读 · 0 评论 -
词法分析题
题目:将’2[1[a]3[b]2[3[c]4[d]]]'变成abbbcccddddcccddddabbbcccddddcccdddd解题思路:使用栈的思想,当我们遇到数字加[开头需要读取出数字压入数字栈中,当为字母加]结尾的时候需要读取字符替换字符的栈中最后一个,因为此时最后一个为’’,当为]则需要将数子栈中的弹出最后一个与字符栈的最后一个结合进行字符的重复,将重复后的与当前字符串最后一项进行拼接。代码let str = '2[1[a]3[b]2[3[c]4[d]]]'原创 2022-01-20 23:32:34 · 197 阅读 · 0 评论 -
汉诺塔(JS版)
当只有一个的时候,我们只需要将这个移到C上面,不然我们就将A的n-1哥移到B上,再把最后一个移到C上。var hanota = function(A, B, C) { const m =A.length const move = (m,A,B,C) => { if(m === 1){ C.push(A.pop()) return ; } move(m-1,A,C,B) move(1,A,B原创 2022-01-20 23:35:20 · 1721 阅读 · 0 评论 -
判断链表是否存在环形结构
解题思路,如果存在环形结构则必定不会结束,链表的next一直存在,我们可以设置两个指针,一个快一个满,如果两个指针相遇了则证明该链表存在环形var hasCycle = function(head) { let slow = head let fast = head while(fast && fast.next){ fast = fast.next.next slow = slow.next if(fast ==原创 2022-01-20 23:37:10 · 292 阅读 · 0 评论 -
Js翻转链表
var reverseList = function(head) { if(!head || !head.next) return head //最后返回的链表 let prev = null //当前所在元素 let current = head while(current){ //保存下一个元素 let next = current.next //断掉当前链表,并将当前元素的next指向要返回的链表prev原创 2022-01-20 23:38:21 · 458 阅读 · 0 评论 -
JS有效的括号
思想:首先判断字符串是否是包含偶数个字符,如果为奇数个肯定存在括号对应不上,然后再通过一定要先有左括号再有右括号,所以我们利用map先判断是否存在,如果是我们先设定可以包含的数据再进行push,如果不存在则不合法。其次我们将最后一个数据对应的右括号和当前的字符比较,如果不相等或者已有数据为空则返回false,不然就将最后一个数据弹出。最后判断是否全部弹出,如果是则为有效负责就无效。var isValid = function(s) { if(s.length%2 !== 0) return fal原创 2022-01-20 23:39:34 · 1293 阅读 · 0 评论 -
爬楼梯问题
一共n阶,一次只能爬一层或者两层var climbStairs = function(n) { if(n <= 1) return n let p=0,q=0,r=1; for(let i = 1; i <= n ; i++){ p = q ; q = r; r = p + q; } return r};原创 2022-01-20 23:41:27 · 101 阅读 · 0 评论 -
JS合并两个有顺序的数组
指针法,双指针。从后面开始,在其中一个匹配完之后可以后续直接匹配另一个。var merge = function(nums1, m, nums2, n) { let k = m + n -1; m--; n--; while(m>=0 || n>=0){ if(m<0){ nums1[k--] = nums2[n--] }else if(n<0){ nums1[k--]原创 2022-01-20 23:43:16 · 568 阅读 · 0 评论