herrDeng網內搜尋

自訂搜尋

Ads

2024年7月24日 星期三

Python C++速解排序問題Leetcode 2191 Sort the Jumbled Numbers


今日Leetcode的排序問題2191. Sort the Jumbled Numbers,主要有兩個部份,一個是把數字轉成另一個數字,用int就行,採Least Significant Digit First。然後排序,不建議用自訂Lambda,跑能過但非常慢;更不建議自製車輪去排序。比較快的方式是sort ((mapping(x), index),然後再從排序後的資料中取得 x
[Python code請進]
--------------------
Define the function convert(x) to map x to the corresponding number w.r.t. mapping
Sort the tuples (convert(x), i, x) or the pairs (convert(x), i) . Get x from the sorted data.

class Solution:
    def sortJumbled(self, mapping: List[int], nums: List[int]) -> List[int]:
        def convert(x):
            if x==0: return mapping[0]
            z=0
            pow10=1
            while x>0:
                q, r=divmod(x, 10)
                z+=mapping[r]*pow10
                x=q
                pow10*=10
            return z
        n=len(nums)
        mapNum=[]
        for i, x in enumerate(nums):
            mapNum.append([convert(x), i, x])
        mapNum.sort()
        for i in range(n):
            nums[i]=mapNum[i][2]
        return nums        

沒有留言:

Related Posts Plugin for WordPress, Blogger...

熱門文章