日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

剑指 Offer 面试题45:把数组排成最小的数——Python内置函数 map()、__lt__()、join()、sorted()

發(fā)布時(shí)間:2023/12/19 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指 Offer 面试题45:把数组排成最小的数——Python内置函数 map()、__lt__()、join()、sorted() 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述

  • 輸入一個(gè)正整數(shù)數(shù)組,把數(shù)組里所有數(shù)字拼接起來(lái)排成一個(gè)數(shù),打印能拼接出的所有數(shù)字中最小的一個(gè)。
  • 輸出結(jié)果可能非常大,所以需要返回一個(gè)字符串而不是整數(shù)。
  • 拼接起來(lái)的數(shù)字可能會(huì)有前導(dǎo) 0,最后結(jié)果不需要去掉前導(dǎo) 0。

示例1:

輸入: [10,2] 輸出: "102"

示例2:

輸入: [3,30,34,5,9] 輸出: "3033459"

解題代碼:

class Compare(str): # 重寫(xiě)比較規(guī)則,按照新的比較規(guī)則實(shí)現(xiàn)升序排列,類(lèi)似于C++中函數(shù)重載def __lt__(self, y): # 重寫(xiě)內(nèi)置函數(shù) __lt__() 用于比較return self+y < y+self # 條件成立,則 self 在結(jié)果中一定位于 y 前面class Solution:def minNumber(self, nums: List[int]) -> str:nums_l = sorted(map(str, nums), key=Compare) # 通過(guò)參數(shù) key 傳入比較函數(shù)return ''.join(nums_l) # 將排序結(jié)果列表 nums_l 連接成結(jié)果字符串

題目中用到的 Python 內(nèi)置函數(shù)解析

內(nèi)置函數(shù)__lt__():

__lt__(self, other) # 5個(gè)福比較函數(shù)之一,含義如下:gt(self, other) # 判斷 self 對(duì)象是否大于 other 對(duì)象; lt(self, other) # 判斷 self 對(duì)象是否小于 other 對(duì)象; ge(slef, other) # 判斷 self 對(duì)象是否大于或者等于 other 對(duì)象; le(self, other) # 判斷 self 對(duì)象是否小于或者等于 other 對(duì)象; eq(self, other) # 判斷 self 對(duì)象是否等于 other 對(duì)象; ne(self, other) # 判斷 self 對(duì)象是否不等于 other 對(duì)象;

這些函數(shù)用于替代已經(jīng)被取消的cmp()函數(shù),以上這些方法,object類(lèi)實(shí)現(xiàn)了__eq__和__ne__兩個(gè)方法。__lt__、__le__、__gt__、__ge__這些方法默認(rèn)返回值為 “NotImplemented”,需要自定義類(lèi)實(shí)現(xiàn)這些方法才能正確使用這些方法,當(dāng)然__eq__和__ne__這兩個(gè)方法也可以重寫(xiě)。

內(nèi)置函數(shù)map():

map(function, iterable) # 以參數(shù)序列 iterable 中的每一個(gè)元素調(diào)用 function 函數(shù),返回包含每次 function 函數(shù)返回值的新列表。

內(nèi)置函數(shù)join():
用于將序列中的元素以指定的字符連接生成一個(gè)新的字符串,如下:

str = "-"; seq = ("a", "b", "c"); # 字符串序列 print str.join( seq ); # a-b-c

內(nèi)置函數(shù)sorted():
函數(shù)原型:sorted(iterable[, key][, reverse]),從 iterable 中的項(xiàng)目返回新的排序列表,原迭代器中值不變。

有兩個(gè)可選參數(shù) key 和 reverse,必須指定為關(guān)鍵字參數(shù)。key 指定一個(gè)用于比較的函數(shù),用于從迭代器中提取比較鍵進(jìn)行比較,如:key=str.lower。默認(rèn)值為 None (直接比較元素)。

reverse 是一個(gè)布爾值。如果設(shè)置為 True,那么列表元素將按照每個(gè)比較反轉(zhuǎn)進(jìn)行排序。

參考博客:
https://blog.csdn.net/m0_38109046/article/details/86636511
https://blog.csdn.net/weixin_30932215/article/details/96449764

總結(jié)

以上是生活随笔為你收集整理的剑指 Offer 面试题45:把数组排成最小的数——Python内置函数 map()、__lt__()、join()、sorted()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。