链表

206. 反转链表
题目的意思就是给一个链表,将其反转即可
思路

    设置保护节点 help空指针,我们让头指针指向help
           cur next
    nil    1 =>2=>3=>4=>5=>null
    help   null<=1<=2
                     help
    for cur != nil{
        next := cur.Next
        cur.Next = help
        help = cur 
        cur = next 
        
    }
    return help

25. k个一组反转链表

题目的意思给一组链表,给一个整数k,让链表按k个一组进行反转
思路

  1. 将链表分组,往后遍历k-1步为一组,head&end
  2. 组内做反转(单链表反转)
  3. 维护组间的关系
    func reverseKGroup(head *ListNode, k int) *ListNode {
    protect:=&ListNode{Val:0,Next:head}
    pre:=protect
    for head!=nil{
        end:=getEnd(head,k)
        if end == nil{
            break
        }
        nextGrpHead:=end.Next
        reverseList(head,nextGrpHead)
        pre.Next = end 
        head.Next = nextGrpHead
        pre = head 
        head = nextGrpHead
    }
    return protect.Next
}
func getEnd(head * ListNode,k int) *ListNode{
    for head!=nil{
         k--
         if k == 0{
             return head
         }
        head = head.Next
    }
    return nil
}
func reverseList(head * ListNode,nxtGrpH * ListNode){
   help:=head
   head = head.Next
    for head!=nxtGrpH{
        next:=head.Next
        head.Next = help
        help = head
        head = next
    }
}

21. 合并两个有序链表
将两个链表按照升序的条件进行合并
思路

    过滤器+双指针+保护节点
    head
  p=>1=>1=>2=>3=>4=>4
func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
    head:=&ListNode{Val:0,Next:nil}
    p:=head
    for (list1!=nil || list2!=nil ){
        if (list2 == nil || (list1!=nil &&list1.Val<list2.Val)){
            head.Next = list1
            list1 = list1.Next
        }else{
            head.Next = list2
            list2 = list2.Next
        }
        head = head.Next
    }
    return p.Next
}

141. 环形链表
判断一个链表有没有环
思路
快慢指针

func hasCycle(head *ListNode) bool {
    fast:=head
    for (fast != nil && fast.Next != nil){
        head = head.Next
        fast = fast.Next.Next
        if (fast == head){
            return true
        }
    }
    return false
}

876. 链表的中间节点

posted @ 2023-03-29 10:55  Asakalan  阅读(27)  评论(0)    收藏  举报