無重疊區(qū)間
力扣題目鏈接
思路
var eraseOverlapIntervals = function(intervals) {
intervals.sort((a,b)=>{
return a[0]-b[0]
})
let res=0
for(let i=0;i<intervals.length-1;i++){
if(intervals[i+1][0]<intervals[i][1]){
res++
intervals[i+1][1]=Math.min(intervals[i][1],intervals[i+1][1])
}
}
return res
};
劃分字母區(qū)間
var partitionLabels = function(s) {
let hash={}
for(let i=0;i<s.length;i++){
hash[s[i]]=i
}
let res=[]
let left=0,right=0;
for(let i=0;i<s.length;i++){
right=Math.max(hash[s[i]],right)
if(i===right){
res.push(right-left+1)
left = right+1
}
}
return res
};
合并區(qū)間
力扣題目鏈接
關(guān)鍵:
判斷區(qū)間重疊后的邏輯
思路:
- 先排序
- 將結(jié)果單獨(dú)保存到數(shù)組中,避免在原數(shù)組中操作威鹿。
- 與結(jié)果數(shù)據(jù)的最后一個數(shù)據(jù)進(jìn)行比較里覆,若重疊鸳兽,則更新結(jié)果數(shù)據(jù)的右邊界像寒。不重疊,直接加入結(jié)果數(shù)組锌蓄。
var merge = function(intervals) {
if(intervals.length===0)return []
intervals.sort((a,b)=>{
return a[0]-b[0]
})
console.log(intervals)
let res=[]
res.push([...intervals[0]]);
for(let i=1;i<intervals.length;i++){
if(intervals[i][0] <=res[res.length-1][1]){//重疊
res[res.length-1][1]=Math.max(res[res.length-1][1],intervals[i][1])//更新res右邊界
}else{
res.push(intervals[i])
}
}
return res
};