diff --git "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md" "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md"
index e4ca2dc2f09449ff749f54582ec58c093ca3458e..7972184d5b0a91d3f50fa21c439ee3feed6e4b0e 100644
--- "a/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md"
+++ "b/\347\256\227\346\263\225\346\200\235\347\273\264\347\263\273\345\210\227/\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230\344\271\213\345\214\272\351\227\264\345\220\210\345\271\266.md"
@@ -90,5 +90,66 @@ def merge(intervals):
+======其他语言代码======
+
+~~~java
+class Solution {
+ /**
+ * 1. 先对区间集合进行排序(根据开始位置)
+ * 2. 合并的情况一共有三种
+ * a. b. c.
+ * |---------| |--------| |--------|
+ * |---------| |--| |--------|
+ * a和b两种情况,合并取右边界大的值,c情况不合并
+ *
+ */
+
+ private int[][] tmp;
+
+ public int[][] merge(int[][] intervals) {
+ if(intervals == null ||intervals.length == 0)return new int[0][0];
+ int length = intervals.length;
+ //将列表中的区间按照左端点升序排序
+ // Arrays.sort(intervals,(v1,v2) -> v1[0]-v2[0]);
+
+ this.tmp = new int[length][2];
+ sort(intervals,0,length-1);
+
+ int[][] ans = new int[length][2];
+ int index = -1;
+ for(int[] interval:intervals){
+ // 当结果数组是空是,或者当前区间的起始位置 > 结果数组中最后区间的终止位置(即上图情况c);
+ // 则不合并,直接将当前区间加入结果数组。
+ if(index == -1 || interval[0] > ans[index][1]){
+ ans[++index] = interval;
+ }else{
+ // 反之将当前区间合并至结果数组的最后区间(即上图情况a,b)
+ ans[index][1] = Math.max(ans[index][1],interval[1]);
+ }
+ }
+ return Arrays.copyOf(ans, index + 1);
+ }
+
+ //归并排序
+ public void sort(int[][] intervals,int l,int r){
+ if(l >= r)return;
+
+ int mid = l + (r-l)/2;
+ sort(intervals,l,mid);
+ sort(intervals,mid+1,r);
+
+ //合并
+ int i=l,j=mid+1;
+ for(int k=l;k<=r;k++){
+ if(i>mid)tmp[k]=intervals[j++];
+ else if(j>r)tmp[k]=intervals[i++];
+ else if(intervals[i][0]>intervals[j][0])tmp[k] = intervals[j++];
+ else tmp[k] = intervals[i++];
+ }
+
+ System.arraycopy(tmp,l,intervals,l,r-l+1);
+ }
+
+}
+~~~
-======其他语言代码======
\ No newline at end of file