
散列
文章平均质量分 59
枫流仁武
这个作者很懒,什么都没留下…
展开
-
LeetCode 706 设计哈希映射
不使用任何内建的哈希表库设计一个哈希映射(HashMap)。实现 MyHashMap 类:MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中,则更新其对应的值 value 。int get(int key) 返回特定的 key 所映射的 value ;如果映射中不包含 key 的映射,返回 -1 。void remove(key) 如果映射中存在 ke原创 2021-03-14 09:05:38 · 126 阅读 · 0 评论 -
LeetCode 621 任务调度器
给你一个用字符数组tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。输入:tasks = ["A","A","A","B","B","B"], .原创 2020-12-05 08:32:02 · 301 阅读 · 0 评论 -
LeetCode 454 四数相加
给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过231 - 1 。本题如果暴力解决,那么时间复杂度为O(n^4)。如果将按个数组元素的和保存在哈希表中,那么时间复杂度为O(n^3)。我们将两个数组元素的和...原创 2020-11-27 08:58:37 · 126 阅读 · 0 评论 -
LeetCode 242 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。class Solution: def isAnagram(self, s: str, t: str) -> bool: arr1, arr2 = [0] * 26, [.原创 2020-11-22 09:16:15 · 167 阅读 · 0 评论 -
LeetCode 1218 最长定差子序列
给你一个整数数组arr和一个整数difference,请你找出arr中所有相邻元素之间的差等于给定difference的等差子序列,并返回其中最长的等差子序列的长度。class Solution: def longestSubsequence(self, arr: List[int], difference: int) -> int: dic = {} max_val = 1 for val in arr: ...原创 2020-09-24 20:47:13 · 220 阅读 · 0 评论 -
LeetCode 718 最长重复子数组
给两个整数数组A和B,返回两个数组中公共的、长度最长的子数组的长度。A: [1,2,3,2,1]B: [3,2,1,4,7]数组+长度,这种问题看来很多都可以采用二分搜索算法,因为长度有一个范围。搜索可能的长度,针对某个长度的字符串,找到原字符串所有子串对应的哈希值。再去哈希另一个字符串。from typing import *class Solution: def findLength(self, A: List[int], B: List[int]) ->...原创 2020-09-13 18:15:31 · 97 阅读 · 0 评论 -
LeetCode 214 最短回文串
给定一个字符串s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。class Solution: def shortestPalindrome(self, s: str) -> str: ''' 回文串从首到尾和从尾部到首部字符串同,字符串表示的数字同样也相等。 子串问题的一个经典的解决方法为将其转化为一个数字,这里也可以采用同样的方法。 :param s: :re.原创 2020-09-12 09:17:59 · 184 阅读 · 0 评论 -
LeetCode 16.23 数对和
设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。利用字典实现from typing import *from collections import defaultdictclass Solution: def pairSums(self, nums: List[int], target: int) -> List[List[int]]: dic = defaultdict(int) res = []原创 2020-09-12 09:10:40 · 126 阅读 · 0 评论 -
LeetCode 432 全O(1)数据结构
请你实现一个数据结构支持以下操作:Inc(key) - 插入一个新的值为 1 的 key。或者使一个存在的 key 增加一,保证 key 不为空字符串。Dec(key) - 如果这个 key 的值是 1,那么把他从数据结构中移除掉。否则使一个存在的 key 值减一。如果这个 key 不存在,这个函数不做任何事情。key 保证不为空字符串。GetMaxKey() - 返回 key 中值最大的任意一个。如果没有元素存在,返回一个空字符串"" 。GetMinKey() - 返回 key 中值最小的任意一原创 2020-09-11 09:17:28 · 189 阅读 · 0 评论 -
LeetCode 128 最长连续序列
线性时间复杂度的算法。利用集合,每次找到每个区间的最小点,然后摸清该序列长度。from typing import *class Solution: def removeCoveredIntervals(self, intervals: List[List[int]]) -> int: intervals.sort(key=lambda x:(x[0],-x[1])) cnt=1 i=1 bound=intervals原创 2020-07-14 14:50:49 · 117 阅读 · 0 评论 -
LeetCode 718 最长重复子数组
子数组问题都可以采用这种哈希的办法解决。将子串映射到对应的数值上,可以方便比较是否相等。from typing import *class Solution: def findLength(self, A: List[int], B: List[int]) -> int: res=0 lo,hi=0,min(len(A),len(B)) while lo<=hi: mid=(lo+hi)//2原创 2020-07-01 15:37:07 · 80 阅读 · 0 评论 -
LeetCode 1248 统计优美子数组
给定一个数组和整数k如果某个子数组中恰好有k个奇数数字,认为该数组为优美子数组返回优美子数组的个数同样是利用哈希表解决from collections import defaultdictclass Solution: def numberOfSubarrays(self, nums: List[int], k: int) -> int: cnt=defaultdict(int) cnt[0]=1 odd_num,res=0,原创 2020-06-15 08:16:03 · 141 阅读 · 0 评论 -
LeetCode 560 和为K的子数组
很多子数组问题都采用哈希表解决。一遍遍历,字典中保留的是前缀和为键值的下标的个数from typing import *from collections import defaultdictclass Solution: ''' 记录和为某个值得下标个数 子数组的问题很多都考虑前序和 ''' def subarraySum(self, nums: List[int], k: int) -> int: dic1 = defaul原创 2020-06-14 20:25:42 · 111 阅读 · 0 评论 -
LeetCode 523 连续的子数组和
利用哈希表实现记录每个余数对应的第一个位置from typing import *class Solution: def checkSubarraySum(self, nums: List[int], k: int) -> bool: dic1={} dic1[0]=-1# 哨兵元素 sum=0 for i,val in enumerate(nums): sum+=val原创 2020-06-14 16:42:50 · 146 阅读 · 0 评论 -
PAT 1145 Hashing - Average Search Time
The task of this problem is simple: insert a sequence of distinct positive integers into a hash table first. Then try to find another sequence of integer keys from the table and output the average ...原创 2019-08-21 10:44:49 · 125 阅读 · 0 评论 -
PAT 1078 Hashing
记得当初第一次做这道题的时候什么是平方探测法都不知道...真不知道那时候怎么做的这道题.#include <iostream>#include <cmath>#include <vector>#include <cstring>#include <climits>using namespace std;int M;...原创 2019-07-22 15:12:08 · 103 阅读 · 0 评论