無重疊區間435

2022-09-16 17:51:15 字數 1526 閱讀 8376

無重疊區間:

package

my;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);

}}

二、

package

my;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,...