【貪心算法】day10

📝前言說明:

  • 本專欄主要記錄本人的貪心算法學習以及LeetCode刷題記錄,按專題劃分
  • 每題主要記錄:(1)本人解法 + 本人屎山代碼;(2)優質解法 + 優質代碼;(3)精益求精,更好的解法和獨特的思想(如果有的話);(4)貪心策略正確性的 “證明”
  • 文章中的理解僅為個人理解。如有錯誤,感謝糾錯

🎬個人簡介:努力學習ing
📋本專欄:C++刷題專欄
📋其他專欄:C語言入門基礎,python入門基礎,C++學習筆記,Linux
🎀CSDN主頁 愚潤澤

你可以點擊下方鏈接,進行其他貪心算法題目的學習

點擊鏈接開始學習
貪心day1貪心day2
貪心day3貪心day4
貪心day5貪心day6
貪心day7貪心day8
貪心day9貪心day10

也可以點擊下面連接,學習其他算法

點擊鏈接開始學習
優選專題動態規劃
遞歸、搜索與回溯貪心算法

題目

  • 1262. 可被三整除的最大和
    • 優質解
  • 1054. 距離相等的條形碼
    • 優質解
  • 767. 重構字符串
    • 個人解


1262. 可被三整除的最大和

題目鏈接:https://leetcode.cn/problems/greatest-sum-divisible-by-three/description/
在這里插入圖片描述


優質解

思路:

  • 反向思考,先把所有數加起來再刪除小數字
  • 通過%3所得的結果,分類討論

代碼:

class Solution {
public:int maxSumDivThree(vector<int>& nums) {ranges::sort(nums);int s = std::accumulate(nums.begin(), nums.end(), 0);if(s % 3 == 0) return s;vector<int> a[3]; // 用來分別存儲 %3 == 1  和 %3 == 2 的數,多開一個方便下標對應for(int x: nums)a[x % 3].push_back(x);int ans = 0;if(s % 3 == 2) // 刪 一個%3==2 或者 兩個%3==1(和下面的個數是相對的)swap(a[1], a[2]);if(a[1].size()) ans =  s - a[1][0];if(a[2].size() >= 2) ans = max(ans, s - a[2][0] - a[2][1]);return ans;}
};

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


1054. 距離相等的條形碼

題目鏈接:https://leetcode.cn/problems/distant-barcodes/description/

在這里插入圖片描述


優質解

思路:

  • 貪心策略:從最多的數開始,擺放,每個一個位置擺放一個數

代碼:

class Solution {
public:vector<int> rearrangeBarcodes(vector<int>& barcodes) {int n = barcodes.size();unordered_map<int, int> count;for(int x: barcodes) // 統計每個數出現的次數count[x]++;// 排序priority_queue<pair<int, int>> heap;for(auto &[x, cx] : count)heap.push({cx, x}); // 默認按第一個元素的個數排序,這樣可以省的寫仿函數比較器// 填寫答案vector<int> ans(n, 0);int i = 0; // 從單數位置開始放while(heap.size()){auto [cx, x] = heap.top();heap.pop();for(int j = 0; j < cx; j++){if(i >= n) i = 1; // 放偶數位置ans[i] = x;i += 2;}}return ans;}
};

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


767. 重構字符串

題目鏈接:https://leetcode.cn/problems/reorganize-string/description/
在這里插入圖片描述

個人解

思路:

  • 和上一題方法一樣,不過多做了一些處理
    屎山代碼:
class Solution {
public:string reorganizeString(string s) {// 當個數最多的字母的個數,大于其他所有字母個數的和,那就無法重新排序int n = s.size();unordered_map <char, int> count;for(char c:s)count[c]++;priority_queue<pair<int, char>> q;int m = 0, sum = 0;for(auto [x,cx] : count){q.push({cx, x});sum += cx;m = max(m, cx);}if(sum + 1 < m * 2) return "";int i = 0;string ans(n, ' ');while(q.size()){auto [cx, x] = q.top();q.pop();for(int j = 0; j < cx; j++){if(i >= n) i = 1;ans[i] = x;i += 2;}}return ans;}
};

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


🌈我的分享也就到此結束啦🌈
要是我的分享也能對你的學習起到幫助,那簡直是太酷啦!
若有不足,還請大家多多指正,我們一起學習交流!
📢公主,王子:點贊👍→收藏?→關注🔍
感謝大家的觀看和支持!祝大家都能得償所愿,天天開心!!!

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

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

相關文章

LeetCode算法日記 - Day 42: 島嶼數量、島嶼的最大面積

目錄 1. 島嶼數量 1.1 題目解析 1.2 解法 1.3 代碼實現 2. 島嶼的最大面積 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 島嶼數量 https://leetcode.cn/problems/number-of-islands/ 給你一個由 1&#xff08;陸地&#xff09;和 0&#xff08;水&#xff09;組成的的二維…

短波紅外相機在機器視覺檢測方向的應用

短波紅外相機在機器視覺檢測方向的應用短波紅外相機&#xff1a;機器視覺的“低成本突破者”一、打破成本困局&#xff1a;短波紅外的“平民化”革新二、核心技術&#xff1a;有機材料的“硬核創新”1. 材料革命&#xff1a;有機感光層的優勢2. 工藝兼容&#xff1a;嫁接成熟CM…

【數據結構與算法】圖 Floyd算法

相關題目&#xff1a; 1334. 閾值距離內鄰居最少的城市 - 力扣&#xff08;LeetCode&#xff09; 資料 &#xff1a; Floyd算法原理及公式推導 - 知乎 Floyd 算法是一種經典的動態規劃算法&#xff0c;用與求解圖中所有頂點之間的最短短路路徑。它由Robert Floyd 于1962…

衛星通信天線的指向精度,含義、測量和計算

衛星通信天線的指向精度&#xff0c;含義、測量和計算我們在衛星通信天線的技術規格書中&#xff0c;都會看到天線指向精度這個指標。一般來說&#xff0c;技術規格書上的天線指向精度的參數是這么寫的&#xff1a;“天線指向精度≤1/10半功率波束帶寬”今天這個文章&#xff0…

基于LSTM與3秒級Tick數據的金融時間序列預測實現

數據加載模塊解析 def load_data(filepath):df pd.read_csv(filepath)return df該函數承擔基礎數據采集職責&#xff0c;通過Pandas庫讀取CSV格式的高頻交易數據&#xff08;典型如股票分筆成交明細&#xff09;。輸入參數為文件路徑字符串&#xff0c;輸出結構化DataFrame對象…

C# --- Field and Property

C# --- Field and Property字段 (Field) vs. 屬性 (Property)Property的聲明初始化方法單例類property錯誤初始化導致線程泄漏字段 (Field) vs. 屬性 (Property) 字段 (Field) - 數據的存儲容器 字段是直接在類或結構中聲明的變量。它是存儲數據的地方&#xff0c;是對象狀態的…

【Python】實現一個文件夾快照與比較工具

1. 工具簡介 在日常開發、項目管理或備份場景中&#xff0c;我們經常需要知道某個文件夾中的文件是否發生變化&#xff0c;例如&#xff1a; 項目源碼是否新增或修改文件&#xff1f;數據集是否被不小心刪除或篡改&#xff1f;備份文件夾是否和上次一致&#xff1f; 本教程將教…

LINUX913 shell:set ip [lindex $argv 0],\r,send_user,spawn ssh root@ip “cat “

問題 獲取公鑰 [codesamba ~]$ cat pub.sh #!/bin/usr/expect set ip "$1" set password 123456 set timeout 20 spawn ssh root192.168.235.100:cat ~/.ssh/id_rsa.pub expect { "yes/no" {send "yes/r";exp_continue} "password:" {…

Acwing算法基礎課--鏈表

一、單鏈表 AcWing 826. 單鏈表 代碼 N 100010 idx 0 e [0] * N ne [0] * N head -1def init():global idx,headidx 0head -1def add_head(x):global idx,heade[idx] xne[idx] headhead idxidx 1def delete(k):ne[k] ne[ne[k]]def add_k(k,x):global idxe[idx] …

AI表征了西方的有界,AI+體現了東方的無界

AI表征了西方的有界&#xff0c;AI體現了東方的無界&#xff0c;試圖通過文化差異的視角來對比傳統AI&#xff08;AI&#xff09;與增強型或融合型AI&#xff08;AI&#xff09;的特征。一、“AI表征了西方的有界”西方的“有界”可以理解為&#xff1a;1、邏輯清晰、結構嚴謹&…

LabVIEW泵輪檢測

?在現代制造業蓬勃發展的浪潮下&#xff0c;汽車行業也迎來了高速發展期。液力變矩器作為實現車輛自動變速的關鍵零件產品&#xff0c;在汽車動力系統中扮演著不可或缺的角色。泵輪作為液力變矩器的核心組成部分&#xff0c;其生產質量直接影響著液力變矩器的性能。因此&#…

RT-DETRv2 中的坐標回歸機制深度解析:為什么用 `sigmoid(inv_sigmoid(ref) + delta)` 而不是除以圖像尺寸?

引言&#xff1a;一個看似簡單的公式&#xff0c;背后藏著工業級設計智慧 在閱讀 RT-DETRv2&#xff08;Real-Time DETR v2&#xff09;源碼時&#xff0c;我曾被一行代碼深深震撼&#xff1a; inter_ref_bbox F.sigmoid(bbox_head[i](output) inverse_sigmoid(ref_points_de…

簡單了解一下GraphRAG

傳統RAG的缺點 當我們將一段文本信息以句子分割后&#xff0c;存入到向量數據庫中。用戶提問“老王喜歡吃什么”&#xff0c;這個問題會與向量數據庫中的許多句子關聯性比較強&#xff0c;能返回準確且具體的信息。 但是&#xff0c;若是問題換成“出現了幾次西瓜”&#xff0c…

HTTP 狀態碼背后的邏輯:從請求到響應的完整流程解析(含完整流程圖)

在日常的 Web 開發與 API 調試中&#xff0c;我們經常會遇到各種 HTTP 狀態碼 ——404 Not Found、401 Unauthorized、500 Internal Server Error... 這些數字背后并非隨機出現&#xff0c;而是服務器處理請求過程中不同階段的 "反饋信號"。理解這些狀態碼的觸發邏輯…

Vue:下拉框多選影響行高

目錄 一、 出現場景二、 解決方案 一、 出現場景 在使用el-select增加multiple屬性進行多選時&#xff0c;會出現高度塌陷的情況 二、 解決方案 首先需要在el-select中增加collapse-tags屬性&#xff0c;并在style中增加如下樣式 方案一 <style scoped> ::v-deep .e…

如何在高通躍龍QCS6490 Arm架構上使用Windows 11 IoT企業版?

1.簡介研華已將高通躍龍QCS6490 技術應用于嵌入式模塊、單板電腦和AI攝像頭等各種規格的嵌入式硬件中。QCS6490平臺支持全面的操作系統生態系統&#xff0c;包括Windows、Ubuntu、Yocto和 Android。Windows 11 IoT企業版是微軟新一代的物聯網操作系統&#xff0c;具有更強的安全…

阿里云國際代理:如何利用RDS構建高可用、可擴展的數據庫架構

講下云數據庫RDS案例解析&#xff0c;若在上云或用云過程中有不懂的&#xff0c;可尋云樞國際yunshuguoji助力免卡上云用云。1、RDS MySQL數據庫代理支持讀寫分離、連接保持、就近訪問、事務拆分、連接池、SSL加密等功能&#xff0c;能夠降低主實例負載&#xff0c;提高實例可用…

C++之特殊類設計

文章目錄前言一、 設計一個不能被拷貝的類1. C98 實現方式2. C11 實現方式二、設計一個只能在堆上創建對象的類1. 方法一&#xff1a;析構函數私有&#xff0c;提供destory接口釋放資源2. 方法二&#xff1a;構造函數私有三、 設計一個只能在棧上創建對象的類1. 實現方式四、設…

TupiTube,一款免費開源的 2D 動畫創作工具

TupiTube&#xff0c;一款免費開源的 2D 動畫創作工具 ** ** 功能 ** &#xff1a;開源、免費的 2D 動畫軟件&#xff0c;界面簡單&#xff0c;支持逐幀動畫、剪紙動畫、定格動畫&#xff0c;能導入素材并導出多種視頻和圖片格式&#xff0c;適合兒童、學生和動畫愛好者入門創作…

MoE架構訓練系統設計:專家并行與門控網絡優化策略

點擊 “AladdinEdu&#xff0c;同學們用得起的【H卡】算力平臺”&#xff0c;注冊即送-H卡級別算力&#xff0c;80G大顯存&#xff0c;按量計費&#xff0c;靈活彈性&#xff0c;頂級配置&#xff0c;學生更享專屬優惠。 摘要 混合專家&#xff08;Mixture of Experts&#xf…