var removeOuterParentheses = function(s) {
let stack=[]
let res=''
for(let i of s){
if(i==='('){
if(stack.length===0){
stack.push(i)
}else{
res+=i
stack.push(i)
}
}else{
stack.pop()
if(stack.length!==0){
res+=i
}
}
}
return res
};
var getIntersectionNode = function(headA, headB) {
if(headA===null || headB===null){
return null
}
let pA=headA,pB=headB
while(pA!==pB){
pA=pA===null?headB:pA.next
pB=pB===null?headA:pB.next
}
return pA
};
var reverseList = function(head) {
let pre=null,cur=null,node=head
while(node){
cur=node.next
node.next=pre
pre=node
node=cur
}
return pre
}
var addTwoNumbers = function(l1, l2) {
let list1=reverseList(l1)
let list2=reverseList(l2)
let flag=0
let dummyHead=new ListNode(0)
let pre=dummyHead
while(list1 || list2 || flag>0){
let x=list1===null?0:list1.val
let y=list2===null?0:list2.val
pre.next=new ListNode((x+y+flag)%10)
pre=pre.next
flag=Math.floor((x+y+flag)/10)
list1=list1===null?null:list1.next
list2=list2===null?null:list2.next
}
return reverseList(dummyHead.next)
}
const reverseList=(list)=>{
let pre=null,cur=null,node=list
while(node){
cur=node.next
node.next=pre
pre=node
node=cur
}
return pre
}
var reorderList = function(head) {
if(head.next==null || head.next.next==null) return head
let fast=head,slow=head
while(fast.next){
fast=fast.next
slow=slow.next
if(fast.next){
fast=fast.next
}
}
let cur=slow.next
slow.next=null
let add=reverseList(cur)
let current=head
while(current.next && add!=null) {
let cNext = current.next
let preNext = add.next
current.next = add
current.next.next = cNext
add = preNext
current = cNext
}
return head
}
const reverseList=(list)=>{
let pre=null,curr=null,node=list
while(node){
curr=node.next
node.next=pre
pre=node
node=curr
}
return pre
}