738. Monotone Increasing Digits 968. Binary Tree Cameras

738. Monotone Increasing Digits

An integer has?monotone increasing digits單調遞增數字?if and only if each pair of adjacent digits?x?and?y?satisfy?x <= y.

Given an integer?n, return?the largest number that is less than or equal to?n?with?monotone increasing digits.

?violent solution:

Time complexity: O(n × m)? ? ? m is the length of the number n
Space complexity: O(1)

class Solution:def monotoneIncreasingDigits(self, n: int) -> int:for i in range(n, -1, -1):if self.check_num(i):return i#return 0def check_num(self, n):max = 10while n:t = n % 10if max >= t:max = telse:return Falsen = n//10return True

greedy:

1. A local optimum leads to a global

2. traversal from right to the left

class Solution:def monotoneIncreasingDigits(self, n: int) -> int:n_str = list(str(n))for i in range(len(n_str) - 1, 0, -1):if n_str[i] < n_str[i - 1]: #string can compare the value, but you can still use int()n_str[i - 1] = str(int(n_str[i - 1]) - 1)for j in range(i, len(n_str)):n_str[j] = '9'return int(''.join(n_str))

Time complexity: O(n),? ?n is the length of the number
Space complexity: O(n), need a string, it is more convenient to convert to string operation

968. Binary Tree Cameras

You are given the?root?of a binary tree. We install cameras on the tree nodes where each camera at a node can monitor監控 its parent, itself, and its immediate children.

Return?the minimum number of cameras needed to monitor all nodes of the tree.

Local optimization: let the parent of a leaf node plant a camera, the least number of cameras used.
Overall optimization: minimize the number of cameras used for all.?

Case 1: Both left and right nodes are covered

?Case 2: At least one of the left and right nodes is uncovered

?Case 3: At least one of the left and right nodes has a camera

?Case 4: Header node not covered

?

class Solution:# Greedy Algo:# 從下往上安裝攝像頭:跳過leaves這樣安裝數量最少,局部最優 -> 全局最優# 先給leaves的父節點安裝,然后每隔兩層節點安裝一個攝像頭,直到Head# 0: 該節點未覆蓋# 1: 該節點有攝像頭# 2: 該節點有覆蓋def minCameraCover(self, root: TreeNode) -> int:# 定義遞歸函數result = [0]  # 用于記錄攝像頭的安裝數量if self.traversal(root, result) == 0:result[0] += 1return result[0]def traversal(self, cur: TreeNode, result: List[int]) -> int:if not cur:return 2left = self.traversal(cur.left, result)right = self.traversal(cur.right, result)# 情況1: 左右節點都有覆蓋if left == 2 and right == 2:return 0# 情況2:# left == 0 && right == 0 左右節點無覆蓋# left == 1 && right == 0 左節點有攝像頭,右節點無覆蓋# left == 0 && right == 1 左節點無覆蓋,右節點有攝像頭# left == 0 && right == 2 左節點無覆蓋,右節點覆蓋# left == 2 && right == 0 左節點覆蓋,右節點無覆蓋if left == 0 or right == 0:result[0] += 1return 1# 情況3:# left == 1 && right == 2 左節點有攝像頭,右節點有覆蓋# left == 2 && right == 1 左節點有覆蓋,右節點有攝像頭# left == 1 && right == 1 左右節點都有攝像頭if left == 1 or right == 1:return 2

?

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

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

相關文章

TypeScript 學習筆記 第三部分 貪吃蛇游戲

尚硅谷TypeScript教程&#xff08;李立超老師TS新課&#xff09; 1. 創建開發環境 創建工程&#xff0c;使用學習筆記的第二部分安裝css部分 npm i -D less less-loader css-loader style-loader對css部分處理&#xff0c;能夠運行在低版本瀏覽器 npm i -D postcss postcss…

oracle rac 19c修改不同網段public ip

客戶需求將才搭建的oracle 19.19數據庫從192.168.168.0網段調整到192.168.213網段 1.停止兩個節點集群 停止之前最好ocrdump一下&#xff0c;防止有問題 crsctl stop crs 2.修改public ip地址和/etc/hosts 3. 啟動crs 這時集群可以啟動&#xff0c;但是上面的一些資源啟動會…

音色逼真、韻律自然的AI人聲克隆限時福利!

聲音&#xff0c;為數字人注入靈魂。 2023云棲大會上&#xff0c;阿里云視頻云接受了CCTV-2財經頻道的采訪&#xff0c;分享并演示了如何利用云端智能剪輯&#xff0c;一站式完成數字人渲染及視頻精編二創。 正如視頻開頭所呈現的AI重現演員“原聲”&#xff0c;近年來&#x…

基于SpringBoot的圖書管理系統

基于SpringBoot的圖書管理系統 圖書管理系統開發技術功能模塊代碼結構數據庫設計運行截圖源碼獲取 圖書管理系統 開發技術 技術&#xff1a;SpringBoot、MyBatis-Plus、MySQL、Beetl、Layui。 框架&#xff1a;基于開源框架Snowy-Layui開發。 工具&#xff1a;IDEA、Navicat等…

【Linux】進程間通信——進程間通信的介紹和分類、管道、匿名管道、命名管道、匿名管道與命名管道的區別

文章目錄 進程間通信1.進程間通信的介紹1.1目的和發展 2.進程間通信分類3.管道3.1匿名管道3.1.1匿名管道的原理&#xff08;文件角度&#xff09;3.1.2匿名管道的原理&#xff08;內核角度&#xff09;3.1.3管道讀寫規則3.1.4管道特點 3.2命名管道3.2.1創建命名管道3.2.2命名管…

PTA-列出所有祖先結點

對于給定的二叉樹&#xff0c;本題要求你按從上到下順序輸出指定結點的所有祖先結點。 輸入格式: 首先第一行給出一個正整數 N&#xff08;≤10&#xff09;&#xff0c;為樹中結點總數。樹中的結點從 0 到 N?1 編號。 隨后 N 行&#xff0c;每行給出一個對應結點左右孩子的…

談思生物醫療直播 | 利用類器官模型研究肺的發育與穩態

類器官是一種三維細胞培養物&#xff0c;其在細胞類型&#xff0c;空間結構及生理功能上能夠模擬對應器官&#xff0c;從而提供一個高度生理相關的系統。自2009年小腸類器官首次建立至今&#xff0c;類器官研究已經延伸到多個組織系統&#xff0c;并成為當下生命科學領域最熱門…

element plus 使用細節

菜鳥一直在糾結這個寫不寫&#xff0c;因為不難&#xff0c;但是菜鳥老是容易忘記&#xff0c;雖然想想或者搜搜就可以馬上寫出來&#xff0c;但是感覺每次那樣就太麻煩了&#xff0c;不如一股做氣寫了算了&#xff0c;后面遇見別的就再來補充&#xff01; 文章目錄 table 表格…

美創獲IDC數據庫安全市場代表廠商推薦,一路引領數據庫安全

近日&#xff0c;全球領先的IT市場研究和咨詢公司IDC發布《IDC Persepctive&#xff1a;中國數據庫安全市場洞察&#xff0c;2023》報告。 憑借多年的技術積累和豐富的產品體系與行業實踐&#xff0c;美創科技獲「代表廠商」推薦&#xff0c;再次彰顯專業領先能力&#xff01; …

Mybatis一級緩存和二級緩存原理剖析與源碼詳解

Mybatis一級緩存和二級緩存原理剖析與源碼詳解 在本篇文章中&#xff0c;將結合示例與源碼&#xff0c;對MyBatis中的一級緩存和二級緩存進行說明。 MyBatis版本&#xff1a;3.5.2 文章目錄 Mybatis一級緩存和二級緩存原理剖析與源碼詳解?級緩存場景一場景二?級緩存原理探究…

責任鏈模式 (Chain of Responsibility Pattern)

定義 責任鏈模式是一種行為型設計模式&#xff0c;用于在對象間建立一條處理請求的鏈。它允許多個對象有機會處理請求&#xff0c;從而減少請求的發送者和接收者之間的耦合。在責任鏈模式中&#xff0c;每個接收者包含對另一個接收者的引用&#xff0c;形成一條鏈。如果一個對…

tcp和 udp區別

相同點&#xff1a;都是傳輸層協議 不同點 是否面向連接 tcp:面向連接 三次握手&#xff0c;四次揮手端對端連接全雙工通信&#xff08;允許雙端同時收發數據&#xff09; udp:無連接 無三次握手&#xff0c;四次揮手支持一對一,一對多&#xff0c;多對多 數據傳輸方式 …

Linux平臺下使用.NET Core訪問Access數據庫

運行環境 操作系統&#xff1a;Ubuntu 22.04.3 LTS (Jammy)開發工具&#xff1a;Visual Studio 2022 (17.8.0)運行時版本&#xff1a;.NET Runtime 8.0依賴庫&#xff1a;unixodbc、mdbtools、odbc-mdbtools 依賴庫安裝 apt-get update sudo apt-get install unixodbc mdbto…

部署項目時常用的 Linux 命令

目錄 1 前言2 SSH登錄命令3 SCP傳輸命令4 CP拷貝命令5 MV移動命令6 TAR解壓命令7 DU查看文件夾/文件大小8 TAIL查看日志9 NOHUP后臺運行10 結語 1 前言 在應用部署過程中&#xff0c;Linux命令是必不可少的工具。它們能夠幫助我們管理文件、連接服務器、拷貝文件、查看日志以及…

vite項目配置vite.config.ts在打包過程中去除日志

在生產環境上&#xff0c;務必要將日志清除干凈&#xff0c;其因有二&#xff0c;在webgis系統中&#xff0c;有很多幾何數據&#xff0c;體積大、數量多&#xff0c;很容易引起系統卡頓&#xff1b;清除log后&#xff0c;系統看著舒服&#xff0c;協同開發有很多無聊的日志&am…

生日禮物——華為機考真題

題目描述 小牛的孩子生日快要到了&#xff0c;他打算給孩子買蛋糕和小禮物&#xff0c;蛋糕和小禮物各買一個&#xff0c; 他的預算不超過x元。蛋糕 Cake 和小禮物 gift 都有多種價位的可供選擇。 請返回小牛共有多少種購買方案。 輸入描述 第一行表示 Cake的單價, 以逗號分隔 …

字符串:leetcode1410. HTML 實體解析器

1410. HTML 實體解析器 「HTML 實體解析器」 是一種特殊的解析器&#xff0c;它將 HTML 代碼作為輸入&#xff0c;并用字符本身替換掉所有這些特殊的字符實體。 HTML 里這些特殊字符和它們對應的字符實體包括&#xff1a; 雙引號&#xff1a;字符實體為 &quot; &#xff…

一款非常優秀的項目管理工具:進度貓(推薦)

在項目管理中&#xff0c;一個好的工具可以極大地提高效率。 進度貓是一款非常優秀的項目管理工具。它具有非常強大的功能&#xff0c;可以幫助團隊更好地管理項目進度。 通過可視化的方式&#xff0c;將項目進度、任務分配、需求變更等全面呈現給團隊成員&#xff0c;讓團隊…

5.過濾敏感詞 + 發布帖子 + 帖子詳情

目錄 1.過濾敏感詞 1.1 定義前綴樹 1.2 根據敏感詞,初始化前綴樹 1.3 編寫過濾敏感詞方法

需求分析BSA法

&#x1f449;BSA法&#xff08;Basic–Satisfier–Attractor&#xff09;是對客戶需求進行優先級劃分的需求分析方法。該模型體現了需求滿足度和客戶滿意度之間的非線性關系。BSA法將客戶需求分為3種類型&#xff0c;分別是基本型需求、滿意型需求和興奮型需求。下面將對每種需…