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查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)