*算法訓練(leetcode)第二十五天 | 134. 加油站、135. 分發糖果、860. 檸檬水找零、406. 根據身高重建隊列

刷題記錄

  • 134. 加油站
  • 135. 分發糖果
  • 860. 檸檬水找零
  • 406. 根據身高重建隊列

134. 加油站

leetcode題目地址

記錄全局剩余油量和當前剩余油量,當前剩余小于0時,其實位置是當前位置的后一個位置。若全局剩余油量為負,則說明整體油量不足以走完全程。

小trick:可以加速c++程序運行。

// c++
cin.tie(nullptr) -> sync_with_stdio(false);

cin.tie(nullptr):避免調用cin時自動刷新cout。
sync_with_stdio(false):關閉 C++ 標準流與 C 標準流同步(例如cin和scanf同步)。

下面另一種寫法:

// c++
std::ios::sync_with_stdio(false); // 關閉 C 和 C++ 流的同步
std::cin.tie(nullptr); // 解開 cin 和 cout 的綁定

時間復雜度: O ( n ) O(n) O(n)
空間復雜度: O ( 1 ) O(1) O(1)

// c++
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {cin.tie(nullptr) -> sync_with_stdio(false);int start=0, rest=0, all=0;for(int i=0; i<gas.size(); i++){rest += gas[i]-cost[i];all += gas[i]-cost[i]; if(rest<0) {rest=0;start = i+1;}}if(all<0) return -1;return start;}
};

135. 分發糖果

leetcode題目地址

先初始化糖果列表均為1,因為每個人至少發一個。先從前向后檢查,若后一個大于前一個,則后一個糖果等于前一個糖果+1。
再從后向前檢查,若后一個小于前一個,將前一個糖果賦值為max(當前糖果,后一個糖果+1)。

時間復雜度: O ( n ) O(n) O(n)
空間復雜度: O ( 1 ) O(1) O(1)

// c++
class Solution {
public:int candy(vector<int>& ratings) {cin.tie(nullptr) -> sync_with_stdio(false);int all=0;vector<int> candies(ratings.size(), 1);for(int i=1; i<ratings.size(); i++){if(ratings[i-1]<ratings[i]){candies[i] = candies[i-1]+1;}}for(int i=ratings.size()-2; i>=0; i--){if(ratings[i+1]<ratings[i]){candies[i] = max(candies[i+1]+1, candies[i]);}}for(int i=0; i<candies.size(); i++){all += candies[i];}return all;}
};

860. 檸檬水找零

leetcode題目地址

記錄5元和10元的個數,當出現找不開就返回false。

時間復雜度: O ( n ) O(n) O(n)
空間復雜度: O ( 1 ) O(1) O(1)

// c++
class Solution {
public:bool lemonadeChange(vector<int>& bills) {int rest1=0, rest2=0;for(int i=0; i<bills.size(); i++){if(bills[i]==5) rest1++;else if(bills[i]==10){if(rest1 > 0) {rest1--;rest2++;}else{return false;}}else if(bills[i]==20){if(rest2>0 && rest1>0) {rest1--;rest2--;}else if(rest1>=3){rest1-=3;}else return false;}}return true;}
};

406. 根據身高重建隊列

leetcode題目地址

思路來源

時間復雜度: O ( n ) O(n) O(n)
空間復雜度: O ( n ) O(n) O(n)

// c++
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>> reconstructQueue(vector<vector<int>>& people) {sort(people.begin(), people.end(), cmp);vector<vector<int>> result;for(int i=0; i<people.size(); i++){int pos = people[i][1];result.insert(result.begin()+pos, people[i]);}return result;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42854.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

防爆手機終端安全管理平臺

防爆手機終端安全管理平臺能夠滿足國家能源、化工企業對安全生產信息化運行需求&#xff0c;能夠快速搭建起高效、快捷的移動終端管理平臺&#xff0c;提高企業安全生產管理水平&#xff0c;保證企業的安全運行和可持續發展。#防爆手機 #終端安全 #移動安全 能源、化工等生產單…

公有鏈、私有鏈與聯盟鏈:區塊鏈技術的多元化應用與比較

引言 區塊鏈技術自2008年比特幣白皮書發布以來&#xff0c;迅速發展成為一項具有顛覆性潛力的技術。區塊鏈通過去中心化、不可篡改和透明的方式&#xff0c;提供了一種全新的數據存儲和管理方式。起初&#xff0c;區塊鏈主要應用于加密貨幣&#xff0c;如比特幣和以太坊。然而&…

SQL Server 設置端口詳解

前言 在數據庫管理和開發過程中&#xff0c;SQL Server是一個廣泛使用的關系型數據庫管理系統。默認情況下&#xff0c;SQL Server使用1433端口進行通信。然而&#xff0c;出于安全性、端口沖突或網絡限制等原因&#xff0c;我們有時需要更改SQL Server的默認端口。本文將詳細…

VBA-計時器的數據進行整理

對計時器的數據進行整理 需求原始數據程序步驟VBA程序結果 需求 需要在txt文件中提取出分和秒分別在兩列 原始數據 數據結構 計次7 00:01.855 計次6 00:09.028 計次5 00:08.586 計次4 00:08.865 計次3 00:07.371 計次2 00:06.192 計次1 00:05.949 程序步驟 1、利用Trim()去…

易備數據備份軟件——低成本、高效能、全方位地守護您的數據安全

在數字化的時代&#xff0c;數據是企業和個人最寶貴的資產。然而&#xff0c;數據丟失、系統故障、惡意攻擊等威脅時刻存在。如何確保數據的安全與完整&#xff1f;易備數據備份軟件為您提供全方位無死角的解決方案&#xff0c;讓您高枕無憂&#xff01; 云備份&#xff1a;暢…

CV每日論文--2024.7.4

1、InternLM-XComposer-2.5: A Versatile Large Vision Language Model Supporting Long-Contextual Input and Output 中文標題&#xff1a;InternLM-XComposer-2.5&#xff1a;支持長上下文輸入和輸出的多功能大視覺語言模型 簡介&#xff1a;我們推出了InternLM-XComposer-…

079、類的繼承

繼承是對已有的類進行擴展創建出新的類&#xff0c;這個過程就叫做繼承。其中&#xff0c;提供繼承信息的類叫做父類&#xff08;超類、基類&#xff09;&#xff0c;得到繼承信息的類稱為子類&#xff08;派生類&#xff09;。 基本語法 繼承是通過在類定義語句中使用圓括號…

控制周期與控制頻率

控制周期是指控制系統中執行一次完整控制循環所需的時間間隔。它表示了控制系統對輸入信號進行處理、執行控制算法、生成輸出信號并更新系統狀態的頻率。在實時控制系統中&#xff0c;控制周期的選擇對系統的性能和穩定性具有重要影響。較短的控制周期可以提高系統的響應速度&a…

高級java每日一道面試題-2024年7月8日

文章目錄 面試官問: final 在java中有什么作用面試者回答:1. final修飾變量基本數據類型&#xff1a;示例&#xff1a; 對象引用&#xff1a;示例&#xff1a; 2. final修飾方法示例&#xff1a; 3. final修飾類示例&#xff1a; 4. final局部變量和參數示例&#xff1a; 總結 …

互聯網十萬個為什么之什么是CDN?

CDN&#xff08;Content Delivery Network&#xff0c;內容分發網絡&#xff09;是一組分布在不同地理位置的服務器&#xff0c;其目的是更有效地向用戶分發互聯網內容。通過緩存內容&#xff08;如網頁、圖片、視頻和其他類型的網絡數據&#xff09;在多個服務器上&#xff0c…

學生護眼臺燈哪個牌子實用?值得入手的學生護眼臺燈十大排名分析

在這個數碼時代&#xff0c;人們對屏幕的依賴程度越來越高&#xff0c;尤其是孩子們。他們不僅在學校里需要長時間盯著教科書&#xff0c;還會在學習和娛樂中使用各種數碼設備。然而&#xff0c;這也使得眼睛健康問題逐漸凸顯&#xff0c;尤其是兒童近視的問題。為了保護視力&a…

Flink 提交作業的方式

參考&#xff1a; Flink運行方式及對比-騰訊云開發者社區-騰訊云

IP地址設置的全面指南-okeyproxy

IP地址是每個連接到互聯網的設備的唯一識別字&#xff0c;無論是家庭網路還是企業網路&#xff0c;正確設置IP地址是確保網路穩定和安全的關鍵。IP地址由一系列數字組成&#xff0c;通常分為IPv4和IPv6兩種格式。IPv4是最常見的形式&#xff0c;由四組0到255之間的數字組成&…

濟南網站建設費用為什么差距如此之大

濟南網站建設費用的差距之所以如此之大&#xff0c;主要是由于以下幾個因素的影響。 首先&#xff0c;不同的網站建設公司所提供的服務內容和質量不盡相同&#xff0c;這直接導致了費用的差距。一些知名的大型網絡公司會提供全方位的網站建設服務&#xff0c;包括網站設計、頁面…

ELFK 8.12.2 部署 -- docker部署方式?

&#x1f468;?&#x1f393;博主簡介 &#x1f3c5;CSDN博客專家 ??&#x1f3c5;云計算領域優質創作者 ??&#x1f3c5;華為云開發者社區專家博主 ??&#x1f3c5;阿里云開發者社區專家博主 &#x1f48a;交流社區&#xff1a;運維交流社區 歡迎大家的加入&#xff01…

SpringBoot源碼閱讀(3)——監聽器

ApplicationListener類初始化位置 在類SpringApplication的構造方法&#xff0c;第267行 在META-INFO/spring.factories中配置的實現類 spring-boot # Application Listeners org.springframework.context.ApplicationListener\ org.springframework.boot.ClearCachesApplic…

Top級“水刊”!高達10.1分,發文量大,最快1個月左右錄用,幾乎沾邊可錄!

本周投稿推薦 SCI ? 能源科學類&#xff0c;1.5-2.0&#xff08;來稿即錄25天&#xff09; ? 計算機類&#xff0c;2.0-3.0&#xff08;純正刊29天錄用&#xff09; EI ? 各領域沾邊均可&#xff08;2天錄用&#xff09; 知網 ? 7天錄用-檢索&#xff08;急錄友好&…

【YOLOv5進階】——替換主干網絡(backbone)-MobileNet為例

聲明:筆記是做項目時根據B站博主視頻學習時自己編寫,請勿隨意轉載! 一、說在前面的一些話 1、torchvision 需要用到torchvision里的一些模塊,之前第一期配置環境的時候已經安裝過torchvision! torchvision是PyTorch生態系統中的一個關鍵庫,專門為計算機視覺任務設計和優…

個性化微課教學視頻推薦系統-計算機畢業設計源碼77648

個性化微課教學視頻推薦系統 摘 要 隨著信息技術的迅猛發展&#xff0c;教育領域正經歷著前所未有的變革。微課作為一種新興的教學資源形式&#xff0c;以其短小精悍、針對性強、易于傳播等特點&#xff0c;逐漸受到廣大師生的青睞。然而&#xff0c;在微課資源日益豐富的今天…

Python語法基礎

python語法 TIPS&#xff1a;本文適合有一定編程語言基礎的人快速復習python基本語法 python的IO&#xff1a; 基礎input ainput()&#xff1a;默認輸入 基礎output print():默認輸出 默認換行參數end""控制字母之間的距離,可以理解為默認為換行符&#xff0c;修改…