leetcode Day23 链表

57 阅读1分钟

442. 数组中重复的数据

var findDuplicates = function(nums) {
    nums.sort((a,b)=>a-b)
    let res=[]
    for(let i=0;i<nums.length-1;i++){
        if(nums[i]===nums[i+1]){
            res.push(nums[i])
        }
    }
    return res
};

203. 移除链表元素

var removeElements = function(head, val) {
    let vhead=new ListNode(0)
    vhead.next=head
    let node=vhead
    while(node.next){
        if(node.next.val==val){
            node.next=node.next.next
        }else{
            node=node.next
        }
    }
    return vhead.next
};

206. 反转链表

var reverseList = function(head) {
    let pre=null,node=head,cur=null
    while(node){
        cur=node.next
        node.next=pre
        pre=node
        node=cur
    }
    return pre
};

24. 两两交换链表中的节点

var swapPairs = function(head) {
    let vhead=new ListNode(0,head)
    let ret=vhead
    while(ret.next && ret.next.next){
        temp=ret.next
        cur=ret.next.next
        temp.next=cur.next
        cur.next=temp
        ret.next=cur
        ret=temp
    }
    return vhead.next
};

19. 删除链表的倒数第 N 个结点

var removeNthFromEnd = function(head, n) {
    let vhead=new ListNode(0,head)
    let f=vhead,s=vhead
    while(n>0){
        f=f.next
        n--
    }
    while(f.next){
        f=f.next
        s=s.next
    }
    s.next=s.next.next
    return vhead.next
};