当前位置:   article > 正文

链表的奇偶重排_java 链表的奇偶重排

java 链表的奇偶重排

 链表的奇偶重排_牛客题霸_牛客网 (nowcoder.com)

描述

给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。

注意是节点的编号而非节点的数值。

数据范围:节点数量满足 0≤n≤1e5,节点中的值都满足 0≤ val ≤1000

要求:空间复杂度 O(n),时间复杂度 O(n)

示例1

输入:{1,2,3,4,5,6}
返回值:{1,3,5,2,4,6}

说明:1->2->3->4->5->6->NULL

        重排后为

        1->3->5->2->4->6->NULL

示例2

输入:{1,4,6,3,7}

返回值:{1,6,7,4,3}

说明:

1->4->6->3->7->NULL

重排后为

1->6->7->4->3->NULL
奇数位节点有1,6,7,偶数位节点有4,3。重排后为1,6,7,4,3

备注:

链表长度不大于200000。每个数范围均在int内。
  1. import java.util.*;
  2. /*
  3. * public class ListNode {
  4. * int val;
  5. * ListNode next = null;
  6. * public ListNode(int val) {
  7. * this.val = val;
  8. * }
  9. * }
  10. */
  11. public class Solution {
  12. /**
  13. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  14. *
  15. *
  16. * @param head ListNode类
  17. * @return ListNode类
  18. */
  19. public ListNode oddEvenList (ListNode head) {
  20. // write code here
  21. ListNode head1=new ListNode(0);
  22. ListNode head2=new ListNode(0);
  23. ListNode p=head;
  24. ListNode p1=head1;
  25. ListNode p2=head2;
  26. int i=0;
  27. while(p!=null){
  28. if(i%2==0) {
  29. p1.next=new ListNode(p.val);
  30. p1=p1.next;
  31. }
  32. else{
  33. p2.next=new ListNode(p.val);
  34. p2=p2.next;
  35. }
  36. p=p.next;
  37. i++;
  38. }
  39. p1.next=head2.next;
  40. return head1.next;
  41. }
  42. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/777362
推荐阅读
相关标签
  

闽ICP备14008679号