每日leetcode--最大數

正題之前?

三玖yyds!!!

題目

給定一組非負整數?nums,重新排列每個數的順序(每個數不可拆分)使之組成一個最大的整數。

注意:輸出結果可能非常大,所以你需要返回一個字符串而不是整數。

示例 1:

輸入nums = [10,2]
輸出:"210"

示例?2:

輸入nums = [3,30,34,5,9]
輸出:"9534330"

題目鏈接:click here?

思路

此題求拼接起來的最大數字。設數組nums 中任意兩數字的字符串為 x 和 y,則規定 貪心策略:

若拼接字符串 x+y>y+x,則x“大于”y?。
反之,若 x+y<y+x,則 x“小于” y。
x “小于” y 代表:排序完成后,數組中 x 應在 y?左邊;“大于” 則反之。

根據以上規則,套用排序方法對 nums 執行排序即可。

詳細題解:. - 力扣(LeetCode)

python代碼

class Solution:def largestNumber(self, nums: List[int]) -> str:# 自定義比較函數def _myfunc(a,b):return int(str(a)+str(b))-int(str(b)+str(a))# nums按照自定義函數排序nums.sort(key=cmp_to_key(_myfunc), reverse=True)# 拼接為字符串ans=""for i in nums:ans+=str(i)# 防止ans中元素均為"0"if ans[0]=='0':return '0'return ans

這段代碼定義了一個Solution類,其中包含一個名為largestNumber的方法。該方法接受一個整數列表nums作為輸入,并返回一個字符串。在方法中,我們首先定義了自定義的比較函數_myfunc,然后使用該函數對nums進行排序。最后,我們將排序后的數字拼接成一個字符串,并檢查第一個字符是否為0,如果是,則返回"0",否則返回拼接后的字符串。

這種方法非常巧妙地利用了Python的內置排序函數和自定義比較函數,以及對字符串和整數的轉換操作,來解決了一個看似復雜的問題

注意事項

  • sort中用到的排序函數不可用lambda定義,因為lambda定義的函數只能接受一個參數,所以只能def定義一個比較函數,再用functools.cmp_to_key將def定義的比較函數轉為關鍵字函數,之后傳給sort中的key
  • 當ans中都是‘0’時,只能返回一個‘0’

結語

希望這篇博客能夠幫助你更好地理解Python中的排序和比較函數,并激發你對算法和數據結構的興趣。如果你有任何疑問或建議,歡迎在評論區留言,讓我們一起討論!

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

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

相關文章

籃球游戲中的挑戰精神與慪氣心理:扣籃被帽后的再度沖擊

在籃球比賽中&#xff0c;扣籃無疑是最具觀賞性和震撼力的動作之一&#xff0c;它展示了球員的爆發力、技巧和自信。而在籃球游戲中&#xff0c;玩家即便面臨連續扣籃被蓋帽的挫折&#xff0c;仍渴望繼續殺入內線嘗試扣籃的現象&#xff0c;實則是體育競技精神、挑戰意識與慪氣…

梵寧教育:警惕網絡詐騙,守護青春未來

隨著互聯網的普及和科技的飛速發展&#xff0c;網絡已經深入到了我們生活的方方面面&#xff0c;為大學生提供了前所未有的便利與機遇。然而&#xff0c;與此同時&#xff0c;網絡詐騙也悄然滋生&#xff0c;成為威脅大學生安全的一大隱患。梵寧教育在此鄭重提醒廣大大學生&…

LeetCode 熱題100 刷題筆記

一&#xff1a;哈希表 一般哈希表都是用來快速判斷一個元素是否出現集合里。 直白來講其實數組就是一張哈希表&#xff0c;哈希表中關鍵碼就是數組的索引下標&#xff0c;然后通過下標直接訪問數組中的元素。 1.兩數之和 題目鏈接&#xff1a;. - 力扣&#xff08;LeetCode…

Javaweb之SpringBootWeb案例之自動配置的原理分析的詳細解析

3.2.3 原理分析 3.2.3.1 源碼跟蹤 前面我們講解了在項目當中引入第三方依賴之后&#xff0c;如何加載第三方依賴中定義好的bean對象以及配置類&#xff0c;從而完成自動配置操作。那下面我們通過源碼跟蹤的形式來剖析下SpringBoot底層到底是如何完成自動配置的。 源碼跟蹤技巧…

[VSCode插件] 輕量級靜態博客 - MDBlog

MDBlog VSCode插件&#xff0c;基于Markdown的輕量級靜態博客系統&#xff0c;同時支持導出為可以部署的靜態博客。 倉庫 MDBlog 1. Features 博客基礎功能&#xff1a;分類管理、文章管理、自動生成索引快捷指令&#xff1a;快捷輸入表格、mermaid、wavedrom、代碼塊發布&a…

[electron雜項] 記錄學習electron碰到問題(持續更新)

無法生成 node_modules文件夾 如前面所說的&#xff0c;如果要用vscode的代碼補全&#xff0c;那么就要把 electron.d.ts文件拷貝到項目的 node_modules文件夾下。一般情況下是通過npm install生成 node_modules 文件夾。但是有時發現根本生成不了生成了一個 xxxxlock的文件。…

Redis--內存回收機制詳解

什么是內存回收機制? 眾所周知Redis之所以性能高是因為數據都存在內存中&#xff0c;內存是很寶貴的&#xff0c;Redis的內存回收機制本質就是處理達到過期時間的key-value&#xff0c;以及當內存到達最大使用值時候觸發的內存淘汰策略。 Redis數據刪除的策略有哪些&#xf…

軟考重點題解析-基礎知識

1.加密技術&#xff1a;分為對稱加密技術&#xff1a;文件的加密和解密使用相同的密鑰 和 非對稱加密技術&#xff1a;加密和解密不同的密鑰&#xff0c;分別是公開密鑰和私有密鑰。 例題&#xff1a;若A,B兩人分別在認證機構&#xff08;CA&#xff09;M,N處獲得證書&…

項目準備March

Nginx主要用來作為Http服務器&#xff0c;要實現Tomcat的負載均衡&#xff0c;就可以通過Nginx來實現。 正向代理代理的是客戶端&#xff0c;反向代理代理的是服務端。SpringBoot采用約定優于配置的思想&#xff0c;簡化Spring項目的配置開發。 前端請求其實并未直接發送到后…

php連接hdfs初步探索

一、phdfs拓展 結果&#xff1a;暫時舍棄 安裝此拓展時&#xff0c;無法make成功&#xff0c;因為缺少hdfs.n文件。 換了其他版本的拓展包&#xff0c;并編譯都沒有找到此文件。 后搜到官網的相關資料&#xff0c;此hdfs.h的文件路徑的地址是$HADOOP_HDFS_HOME/include/hdfs…

數據增加

目錄 增加數據 實現數據增加&#xff0c;保存新的內容 注意 Oracle從入門到總裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 增加數據 由于 emp 表中的數據對日后的開發依然有用處&#xff0c;所以在講解更新之前 建議將emp 表數據做一個復制。將…

linux如何查看磁盤占用情況

要查看Linux系統中磁盤的占用情況&#xff0c;可以使用一些命令來獲取相關信息。以下是一些常用的命令&#xff1a; df命令&#xff1a; df命令用于顯示文件系統的磁盤空間使用情況&#xff0c;包括磁盤分區的總空間、已用空間、可用空間等信息。 df -h使用 -h 參數可以以人類可…

Golang 簡介與基本語法學習

Go&#xff0c;也被稱為 Golang&#xff0c;是一門由 Google 設計的開源編程語言。它旨在提供高效的開發體驗&#xff0c;同時具備并發性、內存安全和簡潔性。本篇博客將介紹 Golang 的基本語法和一些示例&#xff0c;幫助讀者快速入門這門令人著迷的語言。 簡介 Go 語言的設…

一個腳本兩步計算材料Raman譜(附數據處理和繪圖腳本)

在以往推送中已經介紹了相當多的計算材料Raman的方法&#xff0c;使用的軟件主要為Phonopy-Spectroscopy&#xff0c;相關軟件還有vasp&#xff0c;phonopy&#xff0c;phono3py等。 Phonopy-Spectroscopy計算材料紅外和Raman光譜 Phonopy-Spectroscopy 計算紅外和拉曼光譜 也…

經典面試題從瀏覽器輸入URL到頁面加載的過程?

從輸入URL到頁面加載的過程涉及多個步驟&#xff0c;包括DNS解析、TCP連接、發送HTTP請求、服務器處理請求、瀏覽器解析渲染頁面以及斷開連接。具體如下&#xff1a; DNS解析&#xff1a;當你在瀏覽器中輸入一個URL時&#xff0c;瀏覽器首先需要將域名轉換為IP地址。這個過程稱…

QT中提升為自定義控件的方法

一&#xff0e;介紹 提升為自定義的控件用法&#xff1a;先要寫好自定義控件后&#xff0c;再添加&#xff0c;在頻繁使用同一控件時&#xff0c;的確非常的高效。 同時導入別人開發的控件操作方法也類似。 二&#xff0e;下面以自定義的QPushButton作一個很簡單的例子&#x…

MongoDB聚合運算符:$bottomN

$bottomN聚合運算符返回分組中指定順序的最后n個元素&#xff0c;如果分組中的元素數量小于n&#xff0c;則返回分組的全部元素。從MongoDB5.2開始支持。 語法 {$bottomN:{n: <expression>,sortBy: { <field1>: <sort order>, <field2>: <sort or…

精品SSM的教學管理系統課程作業成績

《[含文檔PPT源碼等]精品基于SSM的教學管理系統[包運行成功]》該項目含有源碼、文檔、PPT、配套開發軟件、軟件安裝教程、項目發布教程、包運行成功&#xff01; 軟件開發環境及開發工具&#xff1a; Java——涉及技術&#xff1a; 前端使用技術&#xff1a;HTML5,CSS3、Jav…

esp32 C3和S3 開發板電流對比

出去好奇用合宙家的 lot power 測了兩塊開發板的運行電流。 esp32 S3 (嘉立創開發板 8N8 版本) 模式 電流downloa模式49 毫安空代碼91 毫安light mode27 毫安deep mode25 毫安delay 40 毫安 esp32 C3 無串口芯片 &#xff08;合宙 9.9 元版本&#xff09; 模式 …

uniapp npx update-browserslist-db@lates 問題解決

在uniapp運行項目時&#xff0c;會有這種報錯&#xff0c;其實這是表明browserslistlatest版本低了&#xff0c;在催你升級版本&#xff0c;browserslistlatest是用來支持解析css用的&#xff0c;當然&#xff0c;你也可以直接忽略這個報錯提示&#xff0c;也可以正常運行項目。…