zoukankan      html  css  js  c++  java
  • leetcode(56)合并区间

    合并区间

    解题思路:快速排序+伴随排序+迭代合并区间

    class Solution {
        public int[][] merge(int[][] intervals) {
            int xlen = intervals.length;
            if(xlen==0){
                return new int[0][0];
            }
            int[] x1 = new int[xlen];
            for(int i=0;i<xlen;i++){
                x1[i]=intervals[i][0];
            }
            kuaipai(intervals,x1,0,xlen-1);
            List<int[]> results = new ArrayList<>();
            for(int i=0;i<xlen-1;++i){
                if(intervals[i][1]>=intervals[i+1][0]){
                    if(intervals[i][1]>intervals[i+1][1]){
                        intervals[i+1][0] = intervals[i][0];
                        intervals[i+1][1] = intervals[i][1];
                    }else{
                        intervals[i+1][0] = intervals[i][0];
                    }
                }else{
                    results.add(intervals[i]);
                }
            }
            results.add(intervals[xlen-1]);
            int[][] result = new int[results.size()][2];
            return results.toArray(result);
        }
        public void kuaipai(int[][] intervals,int[] x1,int begin,int finnl){
            if(begin>=finnl){
                return;
            }
            int start = begin;
            int end = finnl;
            int temp = x1[start];
            int temp1 = intervals[start][0];
            int temp2 = intervals[start][1];
            while(start<end){
                while(start<end&&x1[end]>=temp) --end;
                x1[start]=x1[end];
                intervals[start][0]=intervals[end][0];
                intervals[start][1]=intervals[end][1];
                while(start<end&&x1[start]<=temp) ++start;
                x1[end] = x1[start];
                intervals[end][0]=intervals[start][0];
                intervals[end][1]=intervals[start][1];
            }
            x1[start] = temp;
            intervals[start][0]=temp1;
            intervals[start][1]=temp2;
            kuaipai(intervals,x1,begin,start-1);
            kuaipai(intervals,x1,start+1,finnl);
        }
    }
  • 相关阅读:
    蓝桥杯训练 | 二分和前缀和 | 02
    广西师大数据结构 | 2015年真题 | 02
    广西师大数据结构 | 2014年真题 | 01
    Centos添加开机自启项
    SUSE系统添加开机自启项
    LNMP
    源码编译安装 libiconv-1.14(php依赖)
    lnmp
    centos添加epel源
    系统挂在镜像
  • 原文地址:https://www.cnblogs.com/erdanyang/p/11242961.html
Copyright © 2011-2022 走看看