zoukankan      html  css  js  c++  java
  • Leetcode56 合并区间

    public int[][] merge(int[][] arr) {
            //根据第一个元素排序,快速排序
            if(arr.length == 0)
                return new int[0][0];
            if(arr.length == 1)
                return arr;
            boolean[] isvristed = new boolean[arr.length];
            for(int i= 0 ; i < isvristed.length ; i++)
            {
                isvristed[i] = false;
            }
            
            List<int[]> list = new ArrayList<>();
             boolean flag = false;
            quickSort(arr,0,arr.length-1);
            int i = 0;
            
            while(i< arr.length && i+1<arr.length) {
                
                int[] num1 = arr[i];
                int[] num2 = arr[i+1];
                isvristed[i] = true;
                
                isvristed[i+1] = true;
                while(true)
                {
                    
                    if(num1[1] >= num2[0])
                    {
                        num1 = new int[] {num1[0] , Math.max(num1[1], num2[1])};
                        i++;
                        arr[i] = num1;
                        flag = true;
                    }
                    else
                    {
                    flag = false;    
                        break;
                    }
                    if(i< arr.length && i+1<arr.length)
                    {
                        num1 = arr[i];
                        num2 = arr[i+1];
                        isvristed[i] = true;
                        isvristed[i+1] = true;
                    }
                    else
                    {
                        break;
                    }
                    
                }
                list.add(num1);
                
                i++;
            }
            if(flag == false)
            {
                list.add(arr[arr.length-1]);
            }
            
            int[][] ans = new  int[list.size()][2];
            
            int index = 0;
            for(int[] a : list)
            {
                ans[index][0] = a[0];
                ans[index][1] = a[1];
                index++;
                
            }
            return ans;
    
        }
        private  void quickSort(int[][] arr, int low, int high) {
    
            if (low < high) {
                
                int index = quickSorts(arr,low,high);
                quickSort(arr, low, index - 1);
                quickSort(arr, index + 1, high);
            }
    
        }
        public   int quickSorts(int[][] arr,int l , int r)
        {
            /**
            *1,设置锚点
            *2,定义左右边界
            **/
            int[] curArr  = arr[l];
            int curValue =  curArr[0];
    
            
    
            while(l < r)
            {
                while(l < r && arr[r][0] >= curValue)
                {
                    r--;
                }
                if(l < r)
                {
                    arr[l] = arr[r];
                    l++;
                }
                
                while(l < r && arr[l][0] <=curValue)
                {
                    l++;
                }
                if(l < r)
                {
                    arr[r] = arr[l];
                    r--;
                }
                
            }
            arr[r] = curArr;
            return r;
            
        }
  • 相关阅读:
    cefsharp设置默认语言
    C#创建委托实例
    C++/C#互调步骤
    mybatis别名
    redis
    数据库优化方面的事情:
    Properties类使用详解
    七层协议以及如何很好得记忆
    Http 请求到后端过程
    【转】那些年用过的Redis集群架构(含面试解析)
  • 原文地址:https://www.cnblogs.com/swqblog/p/12865176.html
Copyright © 2011-2022 走看看