1. 程式人生 > 實用技巧 >leetcode 探索 查詢表類演算法

leetcode 探索 查詢表類演算法

1、給定一個字串,請將字串裡的字元按照出現的頻率降序排列。

import collections
def frequencySort(s):
    dic = dict(collections.Counter(s))
    res = sorted(dic.items(),key = lambda item:item[1],reverse = True)
    temp = ""
    for i in res:
        temp +=i[0]*i[1]
    return temp

s = "tree"
print(frequencySort(s))

3: 三數之和。

def
threeSum(nums): res = [] nums.sort() n = len(nums) #如果陣列長度小於3,也就不存在三數之和,返回[] if n<3: return res #遍歷陣列: for i in range(n): #陣列已完成排序,i 之後的元素不存在三數之和=0的情況 if nums[i]>0: return res #跳過相鄰的重複元素。 if (i>0 and nums[i]==nums[i-1]):
continue #初始化指標:令 i<l<r,然後進入迴圈。 l = i+1 r = n-1 while l<r: sum = nums[i]+nums[l]+nums[r] if sum==0: res.append([nums[i],nums[l],nums[r]]) #去重 while (l<r and nums[l]==nums[l+1]): l
= l+1 while (l<r and nums[r]==nums[r-1]): r = r-1 l = l+1 r = r-1 elif sum>0: r = r-1 else: l = l+1 return res nums = [-1, 0, 1, 2, -1, -4] print(threeSum(nums))