[LeetCode][Java] Reverse Nodes in k-Group

原创 2015年07月10日 18:29:12

题目:

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

题意:

给定一个链表,对于链表中的节点每k个进行转置一次,返回改动后的链表。

如果链表中的节点的数目不是k的整数倍,那么保持结尾剩余的那些节点不懂。

只允许常数空间。

比如:

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


算法分析:

利用的题目《Reverse Linked List II》的算法,k个元素为一组,进行倒置 

AC代码:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
 //利用的题目《Reverse Linked List II》的算法,k个元素为一组,进行倒置 
public class Solution 
{
    public ListNode reverseKGroup(ListNode head, int k) 
    {
		if(head==null||k<=1) return head;
    	int startindex=1;
		int endindex=k;
		int ki=0;
		int Allk=0;
		int kk=0;
		ListNode testhead=head;
		while(testhead!=null)
		{
			kk++;
			testhead=testhead.next;
		}
		Allk=kk/k;
		while(ki<Allk)
		{
			head=reverseBetween( head, startindex, endindex); 
			ki++;
			startindex+=k;
			endindex+=k;
		}
    	return head;
    }
    public static ListNode reverseBetween(ListNode head, int m, int n) 
    {
        if(head == null)
            return null;
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode preNode = dummy;
        int i=1;
        while(preNode.next!=null && i<m)
        {
            preNode = preNode.next;
            i++;
        }
        //if(i<m)
          //  return head;
        ListNode mNode = preNode.next;
        ListNode cur = mNode.next;
        while(cur!=null && i<n)
        {
            ListNode next = cur.next;
            cur.next = preNode.next;
            preNode.next = cur;
            mNode.next = next;
            cur = next;
            i++;
        }
        return dummy.next;
    }
}


版权声明:本文为博主原创文章,转载注明出处

面试题三:使用 java 实现单向链表的倒置

我理解的链表倒置的意思应该是比如 a->b 变成 b->a , 核心算法不难, a->b->c->d->f a->null  b->c->d->f b->a->null c->d->...
  • hhooong
  • hhooong
  • 2016年04月05日 16:35
  • 1198

(Java)LeetCode-25. Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...
  • u012848330
  • u012848330
  • 2016年06月02日 22:06
  • 511

【Leetcode】【python】Reverse Nodes in k-Group

题目大意将一个链表中每k个数进行翻转,末尾不足k个的数不做变化。解题思路参考: https://shenjie1993.gitbooks.io/leetcode-python/025%20Rever...
  • qqxx6661
  • qqxx6661
  • 2017年09月05日 09:00
  • 115

LeetCode解题报告--Reverse Nodes in k-Group

题目 Given a linked list, reverse the nodes of a linked list k at a time and return its modified li...
  • github_27609763
  • github_27609763
  • 2015年10月17日 23:48
  • 575

[LeetCode]Reverse Nodes in k-Group, 解题报告

前言 今天收到了阿里的电子入职offer,看岗位的要求是要熟悉linux内核,迅速入手了一本《Linux内核设计与实现》,入职前希望能翻完一遍,在亚马逊货到付款下周二才能送到,这两天还是按部就班的写...
  • zinss26914
  • zinss26914
  • 2014年02月08日 15:51
  • 1712

Reverse Nodes in k-Group -- LeetCode

原题链接: http://oj.leetcode.com/problems/reverse-nodes-in-k-group/  这道题是Swap Nodes in Pairs的扩展,Swap N...
  • linhuanmars
  • linhuanmars
  • 2014年02月26日 06:27
  • 11220

[leetcode] 25. Reverse Nodes in k-Group 解题报告

题目链接:https://leetcode.com/problems/reverse-nodes-in-k-group/ Given a linked list, reverse the node...
  • qq508618087
  • qq508618087
  • 2016年01月08日 10:51
  • 435

[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java)

[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java)
  • hcbbt
  • hcbbt
  • 2015年03月05日 15:04
  • 2754

python写算法题:leetcode: 25. Reverse Nodes in k-Group

https://leetcode.com/problems/reverse-nodes-in-k-group/#/description class Solution(object): ...
  • lzf_china
  • lzf_china
  • 2017年06月29日 21:29
  • 86

LeetCode 25: Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. I...
  • sunao2002002
  • sunao2002002
  • 2015年06月08日 20:00
  • 3676
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LeetCode][Java] Reverse Nodes in k-Group
举报原因:
原因补充:

(最多只允许输入30个字)