2-链表:LeeCode26重排链表

目录

简介

题目

题解


简介

链表

题目 

 

直接看示例2或许理解更清楚。

题解 [1]

class Solution {
    public void reorderList(ListNode head) {
        List<ListNode> list = new ArrayList<>();

        while(head != null){
            list.add(head);
            head = head.next;
        }

        int n = list.size();

        for(int i = 0; i < n/2; i++){
            list.get(i).next = list.get(n-1-i);
            list.get(n-1-i).next = list.get(i+1);
        }

        list.get(n/2).next = null;
    }
}

分治模版-归并排序 [2]:

“归并排序算法是用分治策略实现对规模为n的记录序列进行排序的算法,基本思想是:待排序记录分成大小大致相同的两个或多个子集合,分别对子集合进行排序,最终将两个排序号的子集合合并成所要求的排序好的集合。“

public class solution{
    public static void result(int[] array){
        int[] temp = new int[array.length];

        mergeSort(array, 0, array.length-1, temp);
    }

    public static void merge(int[] array, int left, int mid, int right, int[] temp){
        int i = 0;
        int l = left;
        int r = mid+1;
        
        while(l <= mid && r <=right){             
            if(array[r] <= array[k]){
                temp[i++] = array[l++];
            }else{
                temp[i++] = array[r++];
            }
        }
             
        while(l <= mid){
            temp[i++] = arr[l++];
        }
        while(r <= right){
            tmp[i++] = array[r++];
        }
    
        for(int j = 0; j < l; j++){         
            array[left + j] = temp[j];
        }         
    }

    public static void mergeSort(int[] array,int left,int right,int[] temp){
             if(left < right){
                 int mid = (left+right)/2;
                 mergeSort(array, left, mid, temp); 
                 mergeSort(array, mid+1, right, temp);  
                 merge(array, left, mid, right, temp);    
             }
         }
}
        

推荐阅读

[1] 题解:

力扣

[2] 分治模版:

https://www.jb51.net/article/246509.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值