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

【LeetCode - 每日一題】2594. 修車的最少時間(23.09.07)

這篇具有很好參考價值的文章主要介紹了【LeetCode - 每日一題】2594. 修車的最少時間(23.09.07)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

2594. 修車的最少時間

題意

  • 給定每個師傅修車的時間和需要修的車輛總數(shù),計算修理所有汽車需要的最少時間。
  • 師傅可以同時修車。

解法 二分

看到題目沒有任何頭緒,直接查看題解。

至于為什么用二分做呢,討論區(qū)有個友友這么說到:
【LeetCode - 每日一題】2594. 修車的最少時間(23.09.07),c++,每日一題,leetcode,leetcode,c++,每日一題

對于修理時間 t t t 來說:

  • t t t 時間內(nèi)可以修理完所有車,則大于等于 t t t 時間都可以修理完車;
  • t t t時間內(nèi)不能修理完所有車,則小于等于 t t t 時間也不能修理完車;

存在單調(diào)性。因此,假設(shè)最少需要 t i m e time time 時間,那么我們要找的就是第一個大于等于 t i m e time time 的時間 t t t

所以可以直接套板子:

class Solution {
public:
    long long repairCars(vector<int>& ranks, int cars) {
        long long maxTime = (long long)*max_element(ranks.begin(), ranks.end()) * cars * cars;

        long long left = 0, right = maxTime, middle;
        
        long long maxCar = 0;
        while(left < right)
        {
            long long middle = (left +right) / 2;
            maxCar = 0;
            for(auto rank :ranks)
            {
                maxCar += sqrt(middle / rank);  
            }
            // cout << left << " " << right << " " << middle << " " << maxCar << endl;
            
            if(maxCar < cars)
            {
                left = middle + 1;
            }
            else if(maxCar >= cars)
            {

                right = middle;
            }
        }
        return left;
    }
};

另一種寫法:

class Solution {
public:
    long long repairCars(vector<int>& ranks, int cars) {
        long long maxTime = (long long)*max_element(ranks.begin(), ranks.end()) * cars * cars;

        long long left = 0, right = maxTime, middle;
        
        long long maxCar = 0;
        while(left <= right)
        {
            long long middle = (left +right) / 2;
            maxCar = 0;
            for(auto rank :ranks)
            {
                maxCar += sqrt(middle / rank);  
            }
            // cout << left << " " << right << " " << middle << " " << maxCar << endl;
            
            if(maxCar < cars)
            {
                left = middle + 1;
            }
            else if(maxCar > cars)
            {

                right = middle - 1;
            }
            else if(maxCar == cars)
            {
                right = middle - 1;
            }
        }
        return left;
    }
};

板子:

int lower_bound(int a[],int left,int right,int x) 	//第一個小于等于x的數(shù)的位置 
{
	int mid;
	while(left<right)
	{
		mid=(left+right)/2;
		if(a[mid]>=x)
			right=mid;
		else
			left=mid+1;
	}
	return left;
}

int lower_bound(int a[],int left,int right,int x) 	//第一個小于等于x的數(shù)的位置 
{
	int mid;
	while(left<=right)
	{
		mid=(left+right)/2;
		if(a[mid]>=x)
			right=mid-1;
		else
			left=mid+1;
	}
	return left;
}

復(fù)雜度

時間復(fù)雜度:O( r a n k s . s i z e ( ) ? ( log ? m a x ( r a n k ? c a r s ? c a r s ) ) ranks.size() * (\log max(rank*cars*cars)) ranks.size()?(logmax(rank?cars?cars)) ),每一次二分都要遍歷 ranks 數(shù)組計算可修理最大車輛數(shù)。
空間復(fù)雜度:O(1),常數(shù)個變量。文章來源地址http://www.zghlxwxcb.cn/news/detail-706256.html


到了這里,關(guān)于【LeetCode - 每日一題】2594. 修車的最少時間(23.09.07)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 【LeetCode每日一題】2809. 使數(shù)組和小于等于 x 的最少時間

    【LeetCode每日一題】2809. 使數(shù)組和小于等于 x 的最少時間

    2024-1-19 2809. 使數(shù)組和小于等于 x 的最少時間 思路: 獲取兩個列表的長度n,并初始化一個二維數(shù)組f,用于存儲最優(yōu)解。 定義一個二維數(shù)組nums,用于存儲輸入的兩個列表中的元素,并按照第二列元素進行排序。 使用動態(tài)規(guī)劃的方法,通過遍歷nums數(shù)組,計算最優(yōu)解。其中,

    2024年01月21日
    瀏覽(25)
  • 2023-07-07 LeetCode每日一題(過橋的時間)

    點擊跳轉(zhuǎn)到題目位置 共有 k 位工人計劃將 n 個箱子從舊倉庫移動到新倉庫。給你兩個整數(shù) n 和 k,以及一個二維整數(shù)數(shù)組 time ,數(shù)組的大小為 k x 4 ,其中 time[i] = [leftToRighti, pickOldi, rightToLefti, putNewi] 。 一條河將兩座倉庫分隔,只能通過一座橋通行。舊倉庫位于河的右岸,新倉

    2024年02月15日
    瀏覽(24)
  • 2023-09-08 LeetCode每日一題(計算列車到站時間)

    2023-09-08 LeetCode每日一題(計算列車到站時間)

    點擊跳轉(zhuǎn)到題目位置 給你一個正整數(shù) arrivalTime 表示列車正點到站的時間(單位:小時),另給你一個正整數(shù) delayedTime 表示列車延誤的小時數(shù)。 返回列車實際到站的時間。 注意,該問題中的時間采用 24 小時制。 示例 1: 示例 2: 提示: 1 = arrivaltime 24 1 = delayedTime = 24 (1) 運用

    2024年02月09日
    瀏覽(20)
  • 【LeetCode - 每日一題】449. 序列化和反序列化二叉搜索樹(23.09.04)

    給定一棵二叉搜索樹,實現(xiàn)序列化和反序列化; 注意 val 范圍,因此 在序列化時需要插入分隔符分割每個節(jié)點的 val ; 要善于利用 二叉搜索樹的特性(中序遍歷 = 遞增排序) ; 前序遍歷 + 中序遍歷 可以重構(gòu)一棵樹,又由于二叉搜索樹自帶中序遍歷,因此在序列化時保存前

    2024年02月10日
    瀏覽(17)
  • 2023-09-07力扣每日一題

    鏈接: [2594. 修車的最少時間](https://leetcode.cn/problems/form-smallest-number-from-two-digit-arrays/) 題意: 一個能力R的人R*N*N分鐘修N輛車,求最快多久修完(多人多車) 解: 二分很好想,主要是怎么檢查(數(shù)學(xué)廢物潤去看題解了) 實際代碼: 限制: 1 = ranks.length = 105 1 = ranks[i] = 100 1 = ca

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

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

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

    2024年02月09日
    瀏覽(22)
  • 每日一題leetcode--使循環(huán)數(shù)組所有元素相等的最少秒數(shù)

    每日一題leetcode--使循環(huán)數(shù)組所有元素相等的最少秒數(shù)

    相當(dāng)于擴散,每個數(shù)可以一次可以擴散到左右讓其一樣,問最少多少次可以讓整個數(shù)組都變成一樣的數(shù) 使用枚舉,先將所有信息存到hash表中,然后逐一進行枚舉,計算時間長短用看下圖 ?考慮到環(huán)形數(shù)組,可以把首項+n放到最后,這樣for循環(huán)就相當(dāng)于前后可以聯(lián)通 貼一張別

    2024年02月12日
    瀏覽(22)
  • 2023-06-17 LeetCode每日一題(分割圓的最少切割次數(shù))

    2023-06-17 LeetCode每日一題(分割圓的最少切割次數(shù))

    點擊跳轉(zhuǎn)到題目位置 圓內(nèi)一個 有效切割 ,符合以下二者之一: 該切割是兩個端點在圓上的線段,且該線段經(jīng)過圓心。 該切割是一端在圓心另一端在圓上的線段。 一些有效和無效的切割如下圖所示。 給你一個整數(shù) n ,請你返回將圓切割成相等的 n 等分的 最少 切割次數(shù)。

    2024年02月09日
    瀏覽(25)
  • 【LeetCode每日一題合集】2023.8.28-2023.9.3(到家的最少跳躍次數(shù))

    【LeetCode每日一題合集】2023.8.28-2023.9.3(到家的最少跳躍次數(shù))

    https://leetcode.cn/problems/insert-interval/ 提示: 0 = intervals.length = 10^4 intervals[i].length == 2 0 = intervals[i][0] = intervals[i][1] = 10^5 intervals 根據(jù) intervals[i][0] 按 升序 排列 newInterval.length == 2 0 = newInterval[0] = newInterval[1] = 10^5 當(dāng)前區(qū)間與要加入的新區(qū)間之間的關(guān)系只有兩種可能:相交或者不相

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

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

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

    2024年02月09日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包