leetcode 探索 查找表类算法

Posted jerrygogo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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))

 

以上是关于leetcode 探索 查找表类算法的主要内容,如果未能解决你的问题,请参考以下文章

链表类算法题

Leetcode练习(Python):链表类:第23题:合并K个排序链表:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

链表类常见算法题总结

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)

iOS开发底层之方法的慢速查找流程探索+方法动态决议上 - 10

iOS开发底层之方法的慢速查找流程探索+方法动态决议上 - 10