当前位置: 首页 > Web前端 > JavaScript

LeetCode第20题和第21题——有效括号,合并两个有序链表

时间:2023-03-26 21:35:04 JavaScript

1.leetCode第20题https://leetcode-cn.com/probl...Givenagivenonly'(',')','{','}','[',']'strings,判断字符串是否有效。一个有效的字符串需要满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例1:输入:s="()"输出:true示例2:输入:s="()[]{}"输出:true示例3:输入:s="(]"输出:false示例4:输入:s="([)]"输出:false例5:输入:s="{[]}"输出:true括号是对称的,比如'()',我们可以提前做一个映射表{'(':')'},当检测到左括号时,我们将映射表对应的值入栈,继续遍历下一个字节是')',这时需要判断是否相同我们栈顶的元素如果相同的话就是合法的functionprint(s){//因为上面的问题说只检查这三种括号来建立关系表letmap={"{":"}","[":"]","(":")",};让堆栈=[];for(leti=0;i2->4,1->3->4输出:1->1->2->3->4->4思路:做一个类列表的问题就是处理链表的指针之间的关系,只要改变next的值即可。这里我们设置了一个cur的值,相当于穿针引线的作用,把两个链表穿插在一起。函数ListNode(val){this.val=val;这个.下一个=空;}functionprint(l1,l2){lethead=newListNode("head");head.next=l1;让cur=头;while(l1&&l2){if(l1.val<=l2.val){cur.next=l1;l1=l1.下一个;}else{cur.next=l2;l2=l2.下一个;}当前=当前。下一个;}//如果长度不一样,那么直接拼接cur.next=l1?l1:l2;返回head.next;}