代碼隨想錄打卡第36天 435. 無重疊區(qū)間 763. 劃分字母區(qū)間56. 合并區(qū)間

435. 無重疊區(qū)間

https://leetcode.cn/problems/non-overlapping-intervals/

算法思想:

求重疊區(qū)間的個數(shù)段磨。按照左邊界進行排序,使用當前區(qū)間的左邊界和上一個區(qū)間的右邊界比較术羔,小于則有重疊杨箭,傾向于刪除右邊界長的那個區(qū)間寞焙,因此將當前區(qū)間的邊界更新為兩個右邊界中的最小那個。


class Solution {

public:

? ? static bool cmp(const vector<int>& a, vector<int>& b)

? ? {

? ? ? ? if(a[0]==b[0])

? ? ? ? ? ? return a[1]<b[1];

? ? ? ? return a[0]<b[0];

? ? }

? ? int eraseOverlapIntervals(vector<vector<int>>& intervals) {

? ? ? ? sort(intervals.begin(), intervals.end(), cmp);

? ? ? ? int count=0;

? ? ? ? cout<<"["<<intervals[0][0]<<", "<<intervals[0][1]<<"] ";

? ? ? ? for(int i=1;i<intervals.size();i++)

? ? ? ? {

? ? ? ? ? ? // cout<<"["<<intervals[i][0]<<", "<<intervals[i][1]<<"] ";

? ? ? ? ? ? if(intervals[i][0]<intervals[i-1][1]) //如果和上一個區(qū)間有交集

? ? ? ? ? ? {?

? ? ? ? ? ? ? ? // cout<<"intervals[i][0]:"<<intervals[i][0]<<" intervals[i-1][1]"<<intervals[i-1][1]<<endl;

? ? ? ? ? ? ? ? intervals[i][1] = min(intervals[i][1], intervals[i-1][1]);

? ? ? ? ? ? ? ? count++;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return count;

? ? }

};

763. 劃分字母區(qū)間

https://leetcode.cn/problems/partition-labels/

算法思想:

求每個字母的最遠下標互婿,當遍歷到的位置=最遠下標時捣郊,表示可以截斷了。

class Solution {

public:

? ? vector<int> partitionLabels(string s) {

? ? ? ? //使用一個哈希表記錄每個元素的最遠距離下標

? ? ? ? vector<int> haxi(26,-1);

? ? ? ? for(int i=0;i<s.size();i++)

? ? ? ? {

? ? ? ? ? ? haxi[s[i]-'a'] = i;

? ? ? ? }

? ? ? ? // for(int i=0;i<26;i++)

? ? ? ? //? ? cout<<haxi[i]<<" ";

? ? ? ? // cout<<endl;

? ? ? ? int left = 0;

? ? ? ? int right = 0;

? ? ? ? vector<int> result;

? ? ? ? for(int i=0;i<s.size();i++)

? ? ? ? {

? ? ? ? ? ? right = max(right, haxi[s[i]-'a']);

? ? ? ? ? ? // cout<<s[i]<<" right:"<<right<<" i:"<<i<<" haxi[i]"<<haxi[i]<<endl;

? ? ? ? ? ? if(i==right)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? result.push_back(right-left+1);

? ? ? ? ? ? ? ? left = i+1;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return result;

? ? }

};


56. 合并區(qū)間

https://leetcode.cn/problems/merge-intervals/

算法思想:

合并區(qū)間慈参,當出現(xiàn)重合的時候呛牲,把上一個區(qū)間和當前區(qū)間合并,合并為左邊界取兩者最小值驮配,右邊界取兩者最大值娘扩。當區(qū)間不重合時,把上一個區(qū)間放入結(jié)果中壮锻。

class Solution {

public:

? ? static bool cmp(const vector<int>& a, const vector<int>& b)

? ? {

? ? ? ? if(a[0]==b[0])

? ? ? ? ? ? return a[1]<b[1];

? ? ? ? return a[0]<b[0];

? ? }

? ? vector<vector<int>> merge(vector<vector<int>>& intervals) {

? ? ? ? sort(intervals.begin(), intervals.end(), cmp);

? ? ? ? // intervals.push_back(vector<int> {INT_MAX-1, INT_MAX});

? ? ? ? vector<vector<int>> result;

? ? ? ? for(int i=1;i<intervals.size();i++)

? ? ? ? {

? ? ? ? ? ? if(intervals[i][0]<=intervals[i-1][1])// 說明有重疊

? ? ? ? ? ? {

? ? ? ? ? ? ? ? intervals[i][0] = min(intervals[i-1][0], intervals[i][0]);

? ? ? ? ? ? ? ? intervals[i][1] = max(intervals[i-1][1], intervals[i][1]);

? ? ? ? ? ? }

? ? ? ? ? ? else //說明不重疊了

? ? ? ? ? ? {

? ? ? ? ? ? ? ? result.push_back(vector<int> {intervals[i-1][0], intervals[i-1][1]});

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? result.push_back(vector<int> {intervals[intervals.size()-1][0], intervals[intervals.size()-1][1]});

? ? ? ? return result;

? ? }

};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琐旁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猜绣,更是在濱河造成了極大的恐慌灰殴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件途事,死亡現(xiàn)場離奇詭異验懊,居然都是意外死亡,警方通過查閱死者的電腦和手機尸变,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門义图,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人召烂,你說我怎么就攤上這事碱工。” “怎么了奏夫?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵怕篷,是天一觀的道長。 經(jīng)常有香客問我酗昼,道長廊谓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任麻削,我火速辦了婚禮蒸痹,結(jié)果婚禮上春弥,老公的妹妹穿的比我還像新娘。我一直安慰自己叠荠,他們只是感情好匿沛,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榛鼎,像睡著了一般逃呼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上者娱,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天抡笼,我揣著相機與錄音,去河邊找鬼肺然。 笑死蔫缸,一個胖子當著我的面吹牛腿准,可吹牛的內(nèi)容都是我干的际起。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼吐葱,長吁一口氣:“原來是場噩夢啊……” “哼街望!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弟跑,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤灾前,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后孟辑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哎甲,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年饲嗽,在試婚紗的時候發(fā)現(xiàn)自己被綠了炭玫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡貌虾,死狀恐怖吞加,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尽狠,我是刑警寧澤衔憨,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站袄膏,受9級特大地震影響践图,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沉馆,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一码党、第九天 我趴在偏房一處隱蔽的房頂上張望赫舒。 院中可真熱鬧,春花似錦闽瓢、人聲如沸接癌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缺猛。三九已至,卻和暖如春椭符,著一層夾襖步出監(jiān)牢的瞬間荔燎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工销钝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留有咨,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓蒸健,卻偏偏與公主長得像座享,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子似忧,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容