国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Day31- 貪心算法part05

這篇具有很好參考價值的文章主要介紹了Day31- 貪心算法part05。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、無重疊區(qū)間

題目一:453. 無重疊區(qū)間?

435. 無重疊區(qū)間

給定一個區(qū)間的集合?intervals?,其中?intervals[i] = [starti, endi]?。返回?需要移除區(qū)間的最小數(shù)量,使剩余區(qū)間互不重疊?。

主要思想是優(yōu)先保留結(jié)束時間早的區(qū)間,這樣留給其他區(qū)間的空間就更多,從而減少需要移除的區(qū)間數(shù)量。具體做法是先根據(jù)每個區(qū)間的結(jié)束時間進行排序,然后遍歷這些區(qū)間,每次選擇結(jié)束時間最早且與前一個選中的區(qū)間不重疊的區(qū)間。

/*
 * @lc app=leetcode.cn id=435 lang=cpp
 *
 * [435] 無重疊區(qū)間
 */

// @lc code=start
class Solution {
public:
    int eraseOverlapIntervals(vector<vector<int>>& intervals) {
        if (intervals.empty()) return 0;

        sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
            return a[1] < b[1];
        });

        int count = 0; 
        int end = intervals[0][1]; 
        for (int i = 1; i < intervals.size(); ++i) {
            if (intervals[i][0] < end) {
                ++count;
            } else {
                end = intervals[i][1];
            }
        }

        return count;
    }
};
// @lc code=end

二、劃分字母區(qū)間

題目一:763. 劃分字母區(qū)間

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

給你一個字符串?s?。我們要把這個字符串劃分為盡可能多的片段,同一字母最多出現(xiàn)在一個片段中。

注意,劃分結(jié)果需要滿足:將所有劃分結(jié)果按順序連接,得到的字符串仍然是?s?。

返回一個表示每個字符串片段的長度的列表。

基本思路是首先遍歷字符串,記錄每個字符最后出現(xiàn)的位置。然后再次遍歷字符串,使用一個變量來跟蹤當(dāng)前片段的結(jié)束位置。如果在遍歷過程中遇到的任何字符的最后出現(xiàn)位置超過了當(dāng)前片段的結(jié)束位置,就更新結(jié)束位置。一旦達到或超過當(dāng)前片段的結(jié)束位置,就可以確定一個片段,并開始尋找下一個片段。

/*
 * @lc app=leetcode.cn id=763 lang=cpp
 *
 * [763] 劃分字母區(qū)間
 */

// @lc code=start
class Solution {
public:
    vector<int> partitionLabels(string s) {
        vector<int> last(26, 0);
        int length = s.length();

        for (int i = 0; i < length; ++i) {
            last[s[i] - 'a'] = i;
        }

        vector<int> partition;
        int start = 0, end = 0;
        for (int i = 0; i < length; ++i) {
            end = max(end, last[s[i] - 'a']);
            if (i == end) {
                partition.push_back(end - start + 1);
                start = end + 1;
            }
        }
        return partition;
    }
};
// @lc code=end

三、合并區(qū)間

題目一:56. 合并區(qū)間

56. 合并區(qū)間

以數(shù)組?intervals?表示若干個區(qū)間的集合,其中單個區(qū)間為?intervals[i] = [starti, endi]?。請你合并所有重疊的區(qū)間,并返回?一個不重疊的區(qū)間數(shù)組,該數(shù)組需恰好覆蓋輸入中的所有區(qū)間?。

基本思路是先根據(jù)區(qū)間的起始位置進行排序,然后遍歷排序后的區(qū)間列表,合并所有重疊的區(qū)間。

在這個算法中,首先對區(qū)間按起始位置進行排序。然后遍歷每個區(qū)間,如果當(dāng)前區(qū)間的起始位置大于已合并區(qū)間集合中最后一個區(qū)間的結(jié)束位置,則說明當(dāng)前區(qū)間與已合并區(qū)間集合中的區(qū)間不重疊,可以直接添加到已合并區(qū)間集合中。如果有重疊,則將已合并區(qū)間集合中最后一個區(qū)間的結(jié)束位置更新為當(dāng)前區(qū)間的結(jié)束位置和已合并區(qū)間集合中最后一個區(qū)間的結(jié)束位置中的較大值。文章來源地址http://www.zghlxwxcb.cn/news/detail-805472.html

/*
 * @lc app=leetcode.cn id=56 lang=cpp
 *
 * [56] 合并區(qū)間
 */

// @lc code=start
class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if (intervals.empty()) return {};

        sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
            return a[0] < b[0];
        });

        vector<vector<int>> merged;
        for (const auto& interval : intervals) {
            if (merged.empty() || merged.back()[1] < interval[0]) {
                merged.push_back(interval);
            } else {
                merged.back()[1] = max(merged.back()[1], interval[1]);
            }
        }

        return merged;
    }
};
// @lc code=end

到了這里,關(guān)于Day31- 貪心算法part05的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 代碼隨想錄 day38 第九章 動態(tài)規(guī)劃part01

    ●??理論基礎(chǔ) ●??509.?斐波那契數(shù) ●??70.?爬樓梯 ●??746.?使用最小花費爬樓梯 理論基礎(chǔ) 解決動態(tài)規(guī)劃必須要想清楚的點 dp數(shù)組以及下標的含義 遞推公式 dp數(shù)組如何初始化 遍歷順序 打印數(shù)組 檢查結(jié)果 關(guān)聯(lián) leetcode 509.?斐波那契數(shù) 思路 動規(guī)五部曲 dp數(shù)組以及下標的含義

    2024年04月17日
    瀏覽(30)
  • 代碼隨想錄——貪心算法

    代碼隨想錄——貪心算法

    代碼隨想錄——回溯 代碼隨想錄——貪心算法 分發(fā)餅干 鏈接:https://leetcode.cn/problems/assign-cookies/description/ 這道題我自己一開始的想法是從大到小遍歷孩子數(shù)組,對于每個元素從大到小遍歷餅干數(shù)組,滿足則total+1,并且該元素置0防止被再次使用。這樣雖然是可以的,但時間復(fù)

    2024年02月22日
    瀏覽(92)
  • Day31- 貪心算法part05

    題目一:453. 無重疊區(qū)間? 435. 無重疊區(qū)間 給定一個區(qū)間的集合? intervals ?,其中? intervals[i] = [starti, endi] ?。返回? 需要移除區(qū)間的最小數(shù)量,使剩余區(qū)間互不重疊? 。 主要思想是優(yōu)先保留結(jié)束時間早的區(qū)間,這樣留給其他區(qū)間的空間就更多,從而減少需要移除的區(qū)間數(shù)量

    2024年01月19日
    瀏覽(26)
  • 代碼隨想錄算法訓(xùn)練51 | 動態(tài)規(guī)劃part12

    本題加了一個冷凍期,狀態(tài)就多了,有點難度,大家要把各個狀態(tài)分清,思路才能清晰? 視頻講解: 動態(tài)規(guī)劃來決定最佳時機,這次有冷凍期!| LeetCode:309.買賣股票的最佳時機含冷凍期_嗶哩嗶哩_bilibili 代碼隨想錄 相對122.買賣股票的最佳時機II?,本題只需要在計算賣出操

    2024年01月18日
    瀏覽(51)
  • 【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù)

    【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù)

    今天又是補打卡的一天,開沖!?。?今日任務(wù): 70.爬樓梯(進階) 322.零錢兌換 279.完全平方數(shù) 這道題之前做過一次,但是可以采用完全背包的問題來分析一遍。 卡瑪網(wǎng)題目:【57.爬樓梯】 這個題目其實是更難了一點,因為前面的題目都是每次要不爬1階樓梯,要不爬2階樓

    2024年03月25日
    瀏覽(33)
  • 【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II

    【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II

    昨天已經(jīng)把打家劫舍的問題解決了,最后一個題目涉及到樹形dp比較難(等到二刷的時候再重點看下),今天的任務(wù)是解決股票問題。 今日任務(wù): 121.買賣股票的最佳時機 122.買賣股票的最佳時機II Leetcode題目:【121.買賣股票的最佳時機】 因為此題中買賣股票只能買賣一次。

    2024年03月15日
    瀏覽(33)
  • 代碼隨想錄day24 開啟回溯算法

    感覺回溯算法其實和遞歸很像,也是用遞歸的做法,也有三部曲,但又不太一樣的地方是遞歸中類似二叉樹,只有縱向遍歷(一層層往下遍歷,沒有橫向遍歷),而回溯算法中多的for循環(huán)就是橫向遍歷,說實話這一點我沒有理解的太深,只是知道它類似于兩個for循環(huán)中的第一

    2024年01月16日
    瀏覽(108)
  • 代碼隨想錄算法訓(xùn)練day4 | 鏈表

    目錄 24. 兩兩交換鏈表節(jié)點 19. 刪除鏈表倒數(shù)第n個節(jié)點 方法一:普通寫法 方法二:雙指針法 面試題:找鏈表相交節(jié)點 142. 判斷環(huán)形鏈表 虛擬頭節(jié)點的本質(zhì)意義在于減少了特殊情況的處理。不用判斷該節(jié)點是否在鏈表的第一位。 定義快慢兩個指針。 fast先走n步,再讓fast和s

    2024年02月04日
    瀏覽(90)
  • 代碼隨想錄算法訓(xùn)練DAY25|回溯2

    代碼隨想錄算法訓(xùn)練DAY25|回溯2

    力扣題目鏈接 找出所有相加之和為 n 的 k 個數(shù)的組合。組合中只允許含有 1 - 9 的正整數(shù),并且每種組合中不存在重復(fù)的數(shù)字。 說明: 所有數(shù)字都是正整數(shù)。 解集不能包含重復(fù)的組合。 示例 1: 輸入: k = 3, n = 7 輸出: [[1,2,4]] 示例 2: 輸入: k = 3, n = 9 輸出: [[1,2,6], [1,3,5], [2,3,4]

    2024年01月22日
    瀏覽(91)
  • 代碼隨想錄算法訓(xùn)練DAY27|回溯3

    代碼隨想錄算法訓(xùn)練DAY27|回溯3

    力扣題目鏈接 給定一個無重復(fù)元素的數(shù)組 candidates 和一個目標數(shù) target ,找出 candidates 中所有可以使數(shù)字和為 target 的組合。 candidates 中的數(shù)字可以無限制重復(fù)被選取。 說明: 所有數(shù)字(包括 target)都是正整數(shù)。 解集不能包含重復(fù)的組合。 示例 1: 輸入:candidates = [2,3,6,

    2024年01月23日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包