
哈希算法
文章平均质量分 59
哈希算法的笔记练习
YXXYX
精通CV编程
展开
-
哈希表(散列表)知识点概述
引言 在查找数据过程中,有很多种方法,但是大部分都是通过数据间的比较进行的,有没有一种方法可以直接通过关键字得到要查找的数据的位置的方法呢?这就需要用到一种新的查找方法,散列查找法; 基本思想 记录存储位置与关键字之间存在的对应关系f,使得每个关键字key对应一个存储位置f(key); 这里的对应关系f就是散列函数,也称为哈希函数; 所以哈希表定义也可以是 通过 关键字集合 由 哈希函数 推出 存储地址集合; 而这些集合的存储空间就是散列表(哈希表); 散列技术既是一种存储方法也是一种查找方法,它所记录的数原创 2021-08-12 23:01:18 · 1573 阅读 · 0 评论 -
560. 和为K的子数组 && 974. 和可被 K 整除的子数组 (哈希表)
引言 这两道题非常相似,也是对哈希表运用的考察,两道题合到一起总结一下 560. 和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。 这道题就是通过逐一统计数组前缀和再通过哈希表的查找原创 2021-08-09 17:20:41 · 207 阅读 · 0 评论 -
347. 前 K 个高频元素(哈希表)
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 1 <= nums.length <= 105 k 的取值范围是 [1, 数组中不相同的元素的个数] 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的 这道题开始我想的是用一个map原创 2021-08-08 18:34:38 · 245 阅读 · 0 评论 -
105从前序与中序遍历序列构造二叉树 && 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)
引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程; 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导一下) 1,先看前序的第一个元素first,这个元素值就是根节点的元素值 2,从中序遍历中找到该元素first,该元素左边的所有元素就是二叉树的左子树上的节点,右边的所有元素就是二叉树右子树的节点,即将中序遍历结果分为了两部分 3,单看中序遍历左边,左边所有元素谁在先序遍历前面谁就是左树的根节点,右树一样(其实原创 2021-08-08 12:31:36 · 161 阅读 · 0 评论 -
1365. 有多少小于当前数字的数字(哈希表)
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。 示例 1: 输入:nums = [8,1,2,2,3] 输出:[4,0,1,1,3] 解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。 对于 nums[1]=1 不存在比它小的数字。 对于 nums[2]=2 存原创 2021-08-07 17:18:36 · 203 阅读 · 0 评论 -
49字母异位词分组(哈希表)
给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。 字母异位词指字母相同,但排列不同的字符串。 示例 1: 输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]] 示例 2: 输入: strs = [""] 输出: [[""]] 示例 3: 输入: strs = [“a”] 输出: [[“a”]] 提示: 1 <= strs.len原创 2021-08-06 11:57:36 · 244 阅读 · 0 评论 -
01两数之和(哈希表)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6原创 2021-08-05 18:05:12 · 207 阅读 · 0 评论