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

leetcode 630. 課程表 III

這篇具有很好參考價(jià)值的文章主要介紹了leetcode 630. 課程表 III。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

這里有 n 門不同的在線課程,按從 1 到 n 編號(hào)。給你一個(gè)數(shù)組 courses ,其中 courses[i] = [durationi, lastDayi] 表示第 i 門課將會(huì) 持續(xù) 上 durationi 天課,并且必須在不晚于 lastDayi 的時(shí)候完成。

你的學(xué)期從第 1 天開(kāi)始。且不能同時(shí)修讀兩門及兩門以上的課程。
返回你最多可以修讀的課程數(shù)目。

示例 1:
輸入:courses = [[100, 200], [200, 1300], [1000, 1250], [2000, 3200]]
輸出:3
解釋:
這里一共有 4 門課程,但是你最多可以修 3 門:
首先,修第 1 門課,耗費(fèi) 100 天,在第 100 天完成,在第 101 天開(kāi)始下門課。
第二,修第 3 門課,耗費(fèi) 1000 天,在第 1100 天完成,在第 1101 天開(kāi)始下門課程。
第三,修第 2 門課,耗時(shí) 200 天,在第 1300 天完成。
第 4 門課現(xiàn)在不能修,因?yàn)閷?huì)在第 3300 天完成它,這已經(jīng)超出了關(guān)閉日期。

示例 2:
輸入:courses = [[1,2]]
輸出:1

示例 3:
輸入:courses = [[3,2],[4,3]]
輸出:0

提示=
1 <= courses.length <= 104
1 <= durationi, lastDayi <= 104
leetcode 630
思路:
可以用貪心法的思路來(lái)做,
1.假如有兩門課 (t1, d1) 和 (t2, d2),假如 d1 <= d2,我們應(yīng)該先學(xué)前者,再學(xué)后者,這樣總的課程數(shù)是最優(yōu)的
2.根據(jù)1,我們可以把課程根據(jù) lastDay 從小到大排序,當(dāng)遍歷到 (ti,di) 課程時(shí),如果學(xué) ti 課程,總時(shí)間超過(guò)了 di, 我們需要從已經(jīng)打算學(xué)的課程列表里面挑選出 duration 最大的課程和 ti 比較,如果 duration > ti, 則 duration 課程出列,ti 入列(減少 總 duration 的上限),最后課程列表(可用最大值堆來(lái)實(shí)現(xiàn))的長(zhǎng)度即為最長(zhǎng)的課程數(shù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-588436.html

from functools import cmp_to_key
import heapq
class Solution:
    def compare(self, a, b):
        if a[1] <= b[1]:
            return -1
        else:
            return 1

    def scheduleCourse(self, courses: List[List[int]]) -> int:

        a = []
        for x in courses:     ### 過(guò)濾掉 duration > lastDay 的課程
            if x[0] <= x[1]:
                a.append(x)
        if len(a) <= 1:
            return len(a)
        nums = sorted(a, key=cmp_to_key(self.compare))  ## 按 lastDay 從小到大排序
        ss = []
        heapq.heappush(ss, -nums[0][0])  ### 默認(rèn)是最小值堆, 加負(fù)號(hào)變成最大值堆
        curSum = nums[0][0]
        for i in range(1, len(nums)):
            if curSum + nums[i][0] <= nums[i][1]:
                heapq.heappush(ss, -nums[i][0])
                curSum += nums[i][0]
            else:  ### 存 duration 小的, 比如輸入是[[5,5],[4,6],[2,6]] 這種
                if nums[i][0] < -ss[0]:
                    curSum += nums[i][0] + ss[0]
                    heapq.heappop(ss)
                    heapq.heappush(ss, -nums[i][0])
                    
        return len(ss)

到了這里,關(guān)于leetcode 630. 課程表 III的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【圖論】Leetcode 207. 課程表【中等】

    你這個(gè)學(xué)期必須選修 numCourses 門課程,記為 0 到 numCourses - 1 。 在選修某些課程之前需要一些先修課程。 先修課程按數(shù)組 prerequisites 給出,其中 prerequisites[i] = [ai, bi] ,表示如果要學(xué)習(xí)課程 ai 則 必須 先學(xué)習(xí)課程 bi 。 例如,先修課程對(duì) [0, 1] 表示:想要學(xué)習(xí)課程 0 ,你需要先

    2024年04月14日
    瀏覽(26)
  • 【LeetCode】210. 課程表 II——拓?fù)渑判? decoding=
  • 【LeetCode: 210. 課程表 II:拓?fù)渑判?圖】

    【LeetCode: 210. 課程表 II:拓?fù)渑判?圖】

    ?? 算法題 ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣? ?? 作者簡(jiǎn)介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國(guó)家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開(kāi)發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文

    2024年02月09日
    瀏覽(28)
  • 2023-09-09 LeetCode每日一題(課程表)

    2023-09-09 LeetCode每日一題(課程表)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 你這個(gè)學(xué)期必須選修 numCourses 門課程,記為 0 到 numCourses - 1 。 在選修某些課程之前需要一些先修課程。 先修課程按數(shù)組 prerequisites 給出,其中 prerequisites[i] = [ai, bi] ,表示如果要學(xué)習(xí)課程 ai 則 必須 先學(xué)習(xí)課程 bi 。 例如,先修課程對(duì) [0, 1] 表示:想要學(xué)

    2024年02月09日
    瀏覽(20)
  • 2023-09-10 LeetCode每日一題(課程表 II)

    2023-09-10 LeetCode每日一題(課程表 II)

    點(diǎn)擊跳轉(zhuǎn)到題目位置 現(xiàn)在你總共有 numCourses 門課需要選,記為 0 到 numCourses - 1。給你一個(gè)數(shù)組 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在選修課程 ai 前 必須 先選修 bi 。 例如,想要學(xué)習(xí)課程 0 ,你需要先完成課程 1 ,我們用一個(gè)匹配來(lái)表示:[0,1] 。 返回你為了學(xué)完所

    2024年02月09日
    瀏覽(25)
  • 【LeetCode熱題100】打卡第38天:課程表&實(shí)現(xiàn)前綴樹(shù)

    【LeetCode熱題100】打卡第38天:課程表&實(shí)現(xiàn)前綴樹(shù)

    大家好,我是知識(shí)汲取者,歡迎來(lái)到我的LeetCode熱題100刷題專欄! 精選 100 道力扣(LeetCode)上最熱門的題目,適合初識(shí)算法與數(shù)據(jù)結(jié)構(gòu)的新手和想要在短時(shí)間內(nèi)高效提升的人,熟練掌握這 100 道題,你就已經(jīng)具備了在代碼世界通行的基本能力。在此專欄中,我們將會(huì)涵蓋各種

    2024年02月17日
    瀏覽(16)
  • Python每日一練(20230505) 課程表 Course Schedule III/IV

    Python每日一練(20230505) 課程表 Course Schedule III/IV

    目錄 3. 課程表 Course Schedule III 4. 課程表 Course Schedule IV ?? 每日一練刷題專欄??? Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 這里有? n ?門不同的在線課程,按從? 1 ?到? n ?編號(hào)。給你一個(gè)數(shù)組? courses ?,其中? courses[i] = [durationi, lastDayi

    2024年02月03日
    瀏覽(22)
  • 自制課程表小程序

    自制課程表小程序

    微信開(kāi)發(fā)者工具:穩(wěn)定版 Stable Build 根據(jù)自己電腦的系統(tǒng)下載對(duì)應(yīng)的版本 完整代碼連接: https://pan.baidu.com/s/1VbgPOS6CUOae8vg2axhGIg?pwd=hk9e 提取碼:hk9e 先把完整代碼的壓縮包解壓,并記住這個(gè)路徑,后面要用 1.打開(kāi)下載好的微信開(kāi)發(fā)工具, 注意不要用游客登錄 ,我一開(kāi)始就是游客

    2024年02月09日
    瀏覽(37)
  • 210. 課程表 II Python

    現(xiàn)在你總共有 numCourses 門課需要選,記為 0 到 numCourses - 1 。給你一個(gè)數(shù)組 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在選修課程 ai 前 必須 先選修 bi 。 返回你為了學(xué)完所有課程所安排的學(xué)習(xí)順序??赡軙?huì)有多個(gè)正確的順序,你只要返回 任意一種 就可以了。如果不可能完

    2024年02月14日
    瀏覽(17)
  • java實(shí)現(xiàn)課程表 II

    題目: 現(xiàn)在你總共有? numCourses ?門課需要選,記為? 0 ?到? numCourses - 1 。給你一個(gè)數(shù)組? prerequisites ?,其中? prerequisites[i] = [ai, bi] ?,表示在選修課程? ai ?前? 必須 ?先選修? bi ?。 例如,想要學(xué)習(xí)課程? 0 ?,你需要先完成課程? 1 ?,我們用一個(gè)匹配來(lái)表示: [0,1] ?。

    2024年02月09日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包