LeetCode - Reverse Nodes in k-Group
生活随笔
收集整理的這篇文章主要介紹了
LeetCode - Reverse Nodes in k-Group
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目:
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is. You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
For example,
Given this linked list: 1->2->3->4->5
For k = 2, you should return: 2->1->4->3->5
For k = 3, you should return: 3->2->1->4->5
思路:
沒啥思路,就是指針交換
package list;public class ReverseNodesInKGroup {public ListNode reverseKGroup(ListNode head, int k) {if (head == null || k < 2) return head;ListNode first = new ListNode(0);first.next = head;ListNode prevp = first;ListNode p = head;ListNode q = p;while (q != null) {int i = 0;for (; q != null && i < k - 1; ++i) {q = q.next;}if (i == k - 1 && q != null) {ListNode qNext = q.next;q.next = null;ListNode newHead = reverseList(p);prevp.next = newHead;prevp = p;p = qNext;q = qNext;prevp.next = qNext;} }return first.next;}// This function will only be invoked when the list contains more than one node.private ListNode reverseList(ListNode head) {ListNode prevp = null;ListNode p = head;ListNode q = head.next;while (p != null && q != null) {ListNode tmp = q.next;q.next = p;p.next = prevp;prevp = p;p = q;q = tmp;}return p;}public static void main(String[] args) {// TODO Auto-generated method stubListNode a1 = new ListNode(1);ListNode a2 = new ListNode(2);ListNode a3 = new ListNode(3);ListNode a4 = new ListNode(4);ListNode a5 = new ListNode(5);a1.next = a2;a2.next = a3;a3.next = a4;a4.next = a5;a5.next = null;ReverseNodesInKGroup r = new ReverseNodesInKGroup();ListNode x = r.reverseKGroup(a1, 3);while (x != null) {System.out.println(x.val);x = x.next;}}}?
總結(jié)
以上是生活随笔為你收集整理的LeetCode - Reverse Nodes in k-Group的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual studio 生成事件的使
- 下一篇: 6.组函数(avg(),sum(),ma