題目:
分析:在非重疊的區間中插入乙個新的區間,可能還需要與原有的區間進行合併,因此要對給定的區間集合進行遍歷,需要考慮兩點:
新插入的區間與原有區間不重疊,不重疊的情況分為兩種:第一種是新區間的start>原區間的end;第二種是新區間的end《原區間的start。這種情況直接將新區間插入到對應的位置即可。
新插入的區間與原有區間重疊,可能存在多個重疊,所以需要更新區間的範圍來包含所有重疊。
用變數cur來遍歷區間,如果當前cur區間的結束位置小於新加入區間的開始位置,則說明沒有重疊且新區間在當前cur區間後面,則將cur區間加入到res中,cur+1;如果當前cur區間的開始位置大於新加入區間的結束位置,則說明沒有重疊且新區間在當前cur區間之前;除此之外的情況,都是有重疊的情況,此時更新新加入區間的開始位置和結束位置,更新後的開始位置為新區間開始位置和當前區間開始位置的較小的,更新後的結束位置為新區間結束位置和當前區間結束位置的較大的。
最後返回的cur為新區間插入的位置,在該位置插入新區間後返回即可。
/**
* definition of interval:
* public classs interval
* }*/public class solution else
}//在cur儲存插入的位置
res.add(cur,newinterval);
return res;}}
LintCode 30 插入區間
給出乙個無重疊的按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你要確保列表中的區間仍然有序且不重疊 如果有必要的話,可以合併區間 插入區間 2,5 到 1,2 5,9 我們得到 1,9 插入區間 3,4 到 1,2 5,9 我們得到 1,2 3,4 5,9 無直接將數從小到大存到陣列,接...
LintCode 30 插入區間
給出乙個無重疊的按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你要確保列表中的區間仍然有序且不重疊 如果有必要的話,可以合併區間 樣例 插入區間 2,5 到 1,2 5,9 我們得到 1,9 插入區間 3,4 到 1,2 5,9 我們得到 1,2 3,4 5,9 這道題比較考驗邏輯能力,...
lintcode 30 插入區間
給出乙個無重疊的按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你要確保列表中的區間仍然有序且不重疊 如果有必要的話,可以合併區間 插入區間 2,5 到 1,2 5,9 我們得到 1,9 插入區間 3,4 到 1,2 5,9 我們得到 1,2 3,4 5,9 這道題共有三種情況 1.新區間...