题解 | #链表中的节点每k个一组翻转#

链表中的节点每k个一组翻转

https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e

此题使用递归方法较为简单,解题思路如下

首先,创建头结点和前置空节点,并创建cur后节点CurNext

  public ListNode reverse(ListNode head, int k) {
        ListNode pre = null;
        ListNode cur = head;
        int count = 0;
        ListNode CurNext = null;
         int a=len(head);
其次,在创立函数len来计算链表长度k
  public int len(ListNode head) {
        ListNode cur = head;
        int count = 0;
        if (cur==null) {
            return 0;
        }
       while (cur!=null){
           cur=cur.next;
           count++;
       }
       return count;
}
排除所分大小比链表长度大的情况
if (a<k){ return head; }
创立条件,反转链表区间的值,并将这个区间的尾节点的next设置为下个区间的头结点,形成递归
    while (count < k && cur != null) {
            CurNext = cur.next;
            cur.next = pre;
            pre = cur;
            cur = CurNext;
            count++;
        }
        if (CurNext != null) {
            head.next = reverse(CurNext, k);

        }
        return pre;
    }

如上

全部评论

相关推荐

牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务