代碼隨想錄訓練營Day28:貪心算法06

1.738單調遞增的數字

貪心策略:如果strNum[i]<strNum[i-1]那么strNum[i] = '9',strNum[i-1]--;//比如87對應的最大的單調遞增的就是79.

具體實現:

  1. 對于遇到小于的情況:如果strNum[i]<strNum[i-1]那么strNum[i] = '9',strNum[i-1]--;
  2. 遍歷順序必須得是一個反向遍歷,這樣才能保證找到最高位數需要進行改變的地方。(如果從左往右進行便利的話,會出現一種這樣的情況,例如N = 999998前面的都相等,那么需要改變的是最右側那個位置,明顯不符合,所以要從右往左進行遍歷)
  3. 使用flag來確定需要變成9的最左側的位置
class Solution {
public:int monotoneIncreasingDigits(int N) {string strNum = to_string(N);// flag用來標記賦值9從哪里開始// 設置為這個默認值,為了防止第二個for循環在flag沒有被賦值的情況下執行int flag = strNum.size();for (int i = strNum.size() - 1; i > 0; i--) {if (strNum[i - 1] > strNum[i] ) {flag = i;strNum[i - 1]--;}}for (int i = flag; i < strNum.size(); i++) {strNum[i] = '9';}return stoi(strNum);}
};

2.968監控二叉樹

貪心策略:一個攝像頭能夠監控到更多的節點。

具體實現:

  • 首先要確定的就是遍歷順序,是自頂向下還是自底向上的遍歷順序如果是自頂向下的話,那么就是判斷父節點是否被覆蓋,此時需要設置的節點就是:2,3,8,9,10,11,12,13,14,15.如果是自底向上的情況那么就是判斷左右孩子節點是否被覆蓋,此時需要設置的節點就是:4,5,6,7,1.所以確定的遍歷順序就是自底向上的情況。
  • 再確定就是狀態:分為三種狀態:0:未被覆蓋,1:存放攝像頭,2:被覆蓋三種狀態。
  • 對于空節點的處理:如果空節點的狀態為0,那么葉子結點就需要設置為存放攝像頭的,明顯是不符合的,當空節點的狀態為2的時候,此時葉子結點就不需要設置攝像頭了,只需要在葉子結點的上方設置攝像頭即可,所以空節點設置為2.
  • 當前節點為2(被覆蓋):左右孩子中至少有一個是1(設置為節點),且左右孩子不能為0。
  • 當前節點為1(設置攝像頭):左右孩子中至少有一個為0(未被覆蓋)。
  • 當前節點為0(為被覆蓋):左右孩子全都是2(被覆蓋狀態)。
  • 對于最后根節點的處理:因為會出現一種情況就是如果23全都是被覆蓋,那么設置的1就是為未覆蓋狀態(0)退出,但是不符合實際,此時需要將其變成設置攝像頭(2),所以最后還需要在主函數里面判斷返回值是否為0。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public://節點分三種情況://0:沒覆蓋;1:該節點存放攝像頭;2:該節點被覆蓋//當節點為空的時候設置為被覆蓋int result;int traversal(TreeNode* cur){if(cur == nullptr) return 2;int left = traversal(cur->left);int right = traversal(cur->right);//該節點為設置為沒覆蓋:左右節點都被覆蓋if(left == 2&&right == 2)return 0;//該節點設置為監控if(left == 0||right == 0){result++;return 1;}//該節點設置為被覆蓋//1.left =1,right =1;if(left == 1||right ==1){return 2;}return -1;//代表的知識一個完整性}int minCameraCover(TreeNode* root) {result = 0;if(traversal(root) == 0){//對于最后一個根節點的處理,如果此時設置為0,代表未被覆蓋,需要重新設置為1,即result++;result++;}return result;}
};

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

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

相關文章

linux phpstudy 重啟命令

[rootLinuxWeb phpstudy]# ./system/phpstudyctl restart 查看命令 1) phpstudy -start 啟動小皮面板 2) phpstudy -stop 停止小皮面板 3) phpstudy -restart 重啟小皮面板 4) phpstudy -status 查詢面板狀態 5) phpstudy -in…

OFDM802.11a的FPGA實現(十五)短訓練序列:STS(含Matlab和verilog代碼)

原文鏈接&#xff08;相關文章合集&#xff09;&#xff1a;OFDM 802.11a的xilinx FPGA實現 1.前言 在之前已經完成了data域數據的處理&#xff0c;在構建整個802.11a OFDM數據幀的時候&#xff0c;還剩下前導碼和signal域的數據幀&#xff0c;這兩部分的內容。 PLCP的前導部分…

Nodejs筆記2

模塊化 模塊化初體驗 模塊暴露數據 導入模塊 fs 寫絕對路徑 require寫相對路徑不會受到影響 ./../不能省略 js 和json文件后綴可以省略 如果存在 命名相同的js和json文件&#xff0c;優先導入js文件 導入文件夾時的情況 require導入模塊的基本流程 commonJS模塊…

其它高階數據結構①_并查集(概念+代碼+兩道OJ)

目錄 1. 并查集的概念 2. 并查集的實現 3. 并查集的應用 3.1 力扣LCR 116. 省份數量 解析代碼1 解析代碼2 3.2 力扣990. 等式方程的可滿足性 解析代碼 本篇完。 寫在前面&#xff1a; 此高階數據結構系列&#xff0c;雖然放在⑤數據結構與算法專欄&#xff0c;但還是作…

【數據可視化01】matplotlib實例介紹4之六邊形分箱圖

目錄 一、引言二、實例介紹 一、引言 hexbin是一個二維直方圖&#xff0c;其中箱子是六邊形&#xff0c;顏色表示每個箱子內的數據點數。 二、實例介紹 import matplotlib.pyplot as plt import numpy as np# Fixing random state for reproducibility np.random.seed(19680…

服務器利用率的神器腳本

在服務器管理的過程中&#xff0c;了解服務器的各項性能指標是至關重要的。無論是CPU的負載情況&#xff0c;內存使用情況&#xff0c;還是硬盤的存儲空間以及TCP連接狀態&#xff0c;這些都是我們判斷服務器健康狀態和性能的重要依據。然而&#xff0c;手動一項項去檢查這些指…

【MySQL】Mysql——安裝指南(Linux)

MySQL8.0.26-Linux版安裝 1. 準備一臺Linux服務器 云服務器或者虛擬機都可以; Linux的版本為 CentOS7; 2. 下載Linux版MySQL安裝包 3. 上傳MySQL安裝包 4. 創建目錄,并解壓 mkdir mysqltar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql5. 安裝mysql的安裝包 …

pip鏡像源

1.1 清華大學 https://pypi.tuna.tsinghua.edu.cn/simple 1.2 阿里云 https://mirrors.aliyun.com/pypi/simple/ 1.3 網易 https://mirrors.163.com/pypi/simple/ 1.4 豆瓣 https://pypi.douban.com/simple/ 1.5 百度云 https://mirror.baidu.com/pypi/simple/ 1.6 中科大 ht…

uniapp vue 獲取天氣數據

獲取當前地址&#xff0c;通過高德天氣數據&#xff0c;來展示天氣溫度風度等數據 //獲取天氣 getWeather(){// 獲取天氣預報uni.request({url: https://restapi.amap.com/v3/weather/weatherInfo, data: {city: 長沙,// extensions:all,key: xxxxxxxxxx//自己的高德密鑰key},…

2024OD機試卷-轉盤壽司 (java\python\c++)

題目:轉盤壽司 題目描述 壽司店周年慶,正在舉辦 優惠活動 回饋新老客戶。 壽司轉盤上總共有 n 盤壽司,prices[i] 是第 i 盤壽司的價格, 如果客戶選擇了第 i 盤壽司,壽司店免費贈送客戶距離第 i 盤壽司最近的下一盤壽司 j,前提是 prices[j] < prices[i],如果沒有滿足…

RAG 面向 LLM: 基于檢索增強的大語言模型調研

摘要 作為 AI 領域最先進的技術之一,檢索增強生成(RAG)技術可以提供可靠和最新的外部知識,為眾多任務提供巨大的便利。特別是在 AI 生成內容(AIGC)時代,RAG 中檢索強大的提供額外知識的能力使得檢索增強生成能夠輔助現有生成式 AI 生產高質量輸出。最近,大語言模型(LLM)在語言…

Zoho CRM企業成長的智能引擎,智能化銷售自動化

數字化時代&#xff0c;客戶體驗已成為企業競爭的核心要素。卓豪Zoho CRM&#xff0c;作為全球領先的SaaS云端客戶關系管理平臺&#xff0c;正引領著一場企業運營模式的變革&#xff0c;助力超過25萬家企業跨越180多個國家&#xff0c;實現客戶互動與業務增長的無縫對接。讓我們…

廣汽原車控制系統CAN協議控制汽車基本信息獲取及數據應用

在現代汽車工業的迅速發展中&#xff0c;車輛控制系統的智能化和網絡化已成為提升汽車性能的關鍵。廣汽作為中國汽車行業的佼佼者&#xff0c;其在原車通信網絡方面也取得了顯著的成就。特別是廣汽原車CAN&#xff08;Controller Area Network&#xff09;協議的應用&#xff0…

2024OD機試卷-分割均衡字符串 (java\python\c++)

題目:分割均衡字符串 題目描述 均衡串定義: 字符串 中只包含兩種字符,且這兩種字符的個數相同。 給定一個均衡字符串,請給出可分割成新的均衡子串的最大個數。 約定:字符串中只包含大寫的 X 和 Y 兩種字符。 輸入描述 字符串的長度:[2, 10000]。 給定的字符串均為均…

添磚Java之路(其六)——通過集合制作的學生信息管理系統

目錄 前言&#xff1a; 源碼&#xff1a; 前言&#xff1a; 我對于集合的理解&#xff0c;感覺就類似于順序表這樣的數據結構&#xff0c;然后他存儲的數據不能是基本類型&#xff0c;如果要用也只能用對應基本數據的包裝類。 對于集合有很多方法&#xff0c;我的建議就是去…

【運維】nvidia-smi錯誤信息:Failed to initialize NVML: Driver/library version mismatch

【運維】錯誤信息&#xff1a;Failed to initialize NVML: Driver/library version mismatch 是因為Nvidia的驅動沖突的原因 本地部署&#xff1a;本地Docker容器部署&#xff0c;本地驗證后打包鏡像 遠程部署&#xff1a;鏡像部署阿里云PAI EAS 因為在容器中安裝了驅動版本&a…

短視頻最后的慢動作怎么做:成都鼎茂宏升文化傳媒公司

短視頻最后的慢動作怎么做&#xff1a;技巧與創意實踐指南 在短視頻創作的浩瀚宇宙中&#xff0c;慢動作特效如同一顆璀璨的星辰&#xff0c;為作品增添無限魅力與情感深度。它不僅能夠放大細節之美&#xff0c;還能延長關鍵瞬間&#xff0c;引發觀眾強烈的情感共鳴。短視頻最…

SpringBoot項目的項目部署全過程

一、前端 安裝nginx 1.將提前準備好的nginx的安裝包上傳到Linux中/opt目錄下(我用的是Xftp) 2.解壓 2.1:在xshell中解壓該文件: tar -zxvf nginx-1.20.1.tar.gz 2.2:進入解壓后的目錄 cd nginx-1.20.1/ 2.3:安裝需要的依賴 yum -y install zlib zlib-devel openssl openssl-de…

html特殊字符的html,js,css寫法匯總

? 箭頭類 符號UNICODE符號UNICODEHTMLJSCSSHTMLJSCSS?&#8672\u21E0\21E0?&#8674\u21E2\21E2?&#8673\u21E1\21E1?&#8675\u21E3\21E3?&#8606\u219E\219E?&#8608\u21A0\21A0?&#8607\u219F\219F?&#8609\u21A1\21A1←&#8592\u2190\2…

FreeRTOS【4】線程掛起和恢復

1.開發背景 基于上一篇指引&#xff0c;成功創建并啟動線程后&#xff0c;線程已經開始運行了&#xff0c;但是有時我們需要線程暫停運行&#xff0c;例如某個線程是控制 LED 閃燈的&#xff0c;如果現在需要讓 LED 停止工作&#xff0c;單純的關閉 LED 是沒用的&#xff0c;因…