您的位置:首页 > 其它

61. Rotate List

2017-11-29 20:56 218 查看
原题:

即把给定链表尾部k个元素挪到链表开始。

思考过程 & 解题思路:

先遍历整个链表并存到数组便于索引。所需要做的也就是把尾部和头部连起来,再把第len - k -1个元素后面断开。同时要考虑k == 0和k == len等情况。

AC代码:

public ListNode rotateRight(ListNode head, int k) {
ArrayList<ListNode> listNodes = new ArrayList<>();
ListNode listNode = head;
while (listNode != null){//用数组存储节点,便于索引
ListNode listNode1 = listNode;
listNodes.add(listNode1);
listNode = listNode.next;
}
int len = listNodes.size();
if (len ==0 || k == 0) return head;
k %= len;//防止越界
if (k == 0) return head;
listNodes.get(len - 1).next = listNodes.get(0);//原来的尾节点指向头结点
listNodes.get(len - 1 - k).next = null;//从中间断开
return listNodes.get(len - k);//返回新的链表首部
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: