LeetCode25

来源:互联网 发布:ttip数据什么意思 编辑:程序博客网 时间:2024/06/05 14:22

【题目】

将链表以k个为一组进行翻转,要求与24相同

【思路】

定义r_curr指向即将进行翻转的k个元素的紧邻的前一个元素;

定义r依次遍历将要进行翻转的k个元素,并最终执行其紧邻的后一个元素;

将遍历到的k个listnode放入数组中,进行翻转操作,最后将r_curr的next指向翻转后的列表,重复该过程直至完成

【Java代码】

public ListNode reverseKGroup(ListNode head, int k){boolean flag_head = true;ListNode[] candidate = new ListNode[k];ListNode r = head;ListNode r_curr = null;boolean flag = false;while(r != null){for(int i = 0 ; i < k ; i++){if(r == null){flag = true;break;}candidate[i] = r;r = r.next;}if(flag)break;candidate[0].next = r;for(int i = 1 ; i < k ; i++){candidate[i].next = candidate[i-1];}if(flag_head){head = candidate[k-1];flag_head = false;r_curr = head;for(int i = 0 ; i < k-1 ; i++){r_curr = r_curr.next;}}else{r_curr.next = candidate[k-1];for(int i = 0 ; i < k ; i++)r_curr = r_curr.next;}}return head;}

【递归】

该题目也可以由递归实现,只对前k个元素进行详细翻转说明,后面部分的翻转结果直接由递归函数得到

原创粉丝点击