無重疊區間:
packagemy;import
j**a.util.arrays;
//435.無重疊區間
public
class
nooverlapintervals
//遞迴函式裡,先檢查是否已經處理完所有的區間, 是, 表明不需要刪除操作,直接返回
int eraseoverlapintervals(int previous,int current ,int
intervals)
int taken =integer.max_value , nottaken;
if(previous == -1 || intervals[previous][1] <= intervals[current][0])
//其他情況,可以考慮刪除掉current 區間,看看刪除了它之後會不會產生最後的結果
nottaken = eraseoverlapintervals(previous , current + 1,intervals) + 1;
return
math.min(taken ,nottaken);
}public
static
void
main(string args),,,,};
nooverlapintervals noi = new
nooverlapintervals();
int n =noi.eraseoverlapintervals(inte);
system.out.println(n);
}}
二、
packagemy;import
j**a.util.arrays;
public
class
nooverlapintervals2
//將所有區間按照起始時間排序
arrays.sort(intervals ,(v1,v2) -> v1[0] -v2[0]);
//用乙個變數end 記錄前期的最小結束時間點,
//以及乙個count 變數記錄到目前為止刪除掉了多少區間
int end = intervals[0][1], count =0;
//從第二個區間開始,判斷一下當前區間和前乙個區間的結束時間
for (int i = 1 ;i < intervals.length; i++)
else
}//如果沒有發生重疊,根據貪婪法,更新end 變數為當前區間的結束時間
return
count ;
}public
static
void
main(string args),,,,};
nooverlapintervals noi = new
nooverlapintervals();
int n =noi.eraseoverlapintervals(inte);
system.out.println(n);
}}
435 無重疊區間
題目描述 給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1...
435 無重疊區間
給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1,2 1,...
435 無重疊區間
給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 1.可以認為區間的終點總是大於它的起點。2.區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1,...