#力扣 LeetCode61. 旋转链表 @FDDLC
发布日期:2021-06-30 21:03:23 浏览次数:2 分类:技术文章

本文共 1633 字,大约阅读时间需要 5 分钟。

题目描述:

 

Java代码:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode() {} *     ListNode(int val) { this.val = val; } *     ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution {    public int getNodeSum(ListNode head){        int nodeSum=0;        while(head!=null){            nodeSum++;            head=head.next;        }        return nodeSum;    }    public ListNode rotateRight(ListNode head, int k) {        if(k==0||head==null||head.next==null)return head;//特判        int nodeSum=getNodeSum(head);//head不变        k=k%nodeSum;//nodeSum非0        if(k==0)return head;//特判        ListNode oldLeftTail=head;         for(int i=nodeSum-k;i>1;i--)oldLeftTail=oldLeftTail.next;        ListNode oldRightHead=oldLeftTail.next,oldRightTail=oldRightHead;        for(int i=1;i

 

 

Java代码二:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode() {} *     ListNode(int val) { this.val = val; } *     ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution {    public ListNode rotateRight(ListNode head, int k) {        if(k==0||head==null||head.next==null)return head;//后续的链表至少有2个结点        ListNode tail=head,newTail=head,newHead;        int nodeSum=1;        for(;tail.next!=null;nodeSum++,tail=tail.next);        if((k=k%nodeSum)==0)return head;//k=k%nodeSum,后续k大于0小于nodeSum        for(int i=nodeSum-k;i>1;i--)newTail=newTail.next;        newHead=newTail.next;        newTail.next=null;        tail.next=head;        return newHead;    }}

 

 

 

转载地址:https://liuxingchang.blog.csdn.net/article/details/115263130 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:#力扣 LeetCode263. 丑数 @FDDLC
下一篇:#力扣 LeetCode504. 七进制数 @FDDLC

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月07日 19时43分49秒