算法----Hash
sunlanchang
北京邮电大学-计算机硕士,sunlanchang@bupt.edu.cn
展开
-
LeetCode448. 找到所有数组中消失的数字 (原地哈希)
Description给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fin原创 2020-09-04 10:56:56 · 158 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组(哈希或者双指针)
Description给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 ind原创 2020-07-20 13:29:16 · 243 阅读 · 0 评论 -
剑指Offer 03. 数组中重复的数字(原地哈希)
Description找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof著作权归领原创 2020-07-15 16:02:15 · 219 阅读 · 0 评论 -
LeetCode 41. 缺失的第一个正数(原地哈希)
Description给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1 提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positive著作权归领扣网络所有原创 2020-06-27 22:32:53 · 195 阅读 · 0 评论 -
面试金典 面试题 02.01. 移除重复节点(哈希表)
Description编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicate-node-lcci著作权归领扣网络原创 2020-06-26 16:04:45 · 253 阅读 · 0 评论 -
LeetCode 146. LRU缓存机制(双向链表+哈希表)
Description运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据...原创 2020-05-06 21:57:25 · 258 阅读 · 0 评论 -
LeetCode 350. 两个数组的交集 II(哈希表)
Description给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺...原创 2020-03-05 21:44:44 · 201 阅读 · 0 评论 -
Leetcode 1. 两数之和
description给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1...原创 2019-10-24 15:39:16 · 113 阅读 · 0 评论 -
剑指offer 扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张...原创 2019-10-21 16:40:54 · 99 阅读 · 0 评论 -
剑指offer 数组中只出现一次的数字 (位运算)
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。Solution1hashmap。# -*- coding:utf-8 -*-class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): hashmap = {}...原创 2019-09-19 16:25:29 · 164 阅读 · 0 评论 -
剑指offer 数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。Solutionhash表保存数字出现次数,对字典排序即可。import mathclass Solution: def MoreThanHalfNum_Solut...原创 2019-08-22 17:05:42 · 79 阅读 · 0 评论 -
Leetcode 1. 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]Solution利用...原创 2019-08-22 15:26:06 · 153 阅读 · 0 评论 -
剑指offer 第一个只出现一次的字符
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).Solution哈希表。class Solution: def FirstNotRepeatingChar(self, s): if len(s) == 0: return ...原创 2019-08-24 15:18:35 · 71 阅读 · 0 评论 -
牛客网 谁是你潜在的朋友 (hash)
描述把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。输入描述:每个案例第一行两个整数N,M,2 <= N ,M<= 200。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)输出描述...原创 2019-01-03 13:24:54 · 317 阅读 · 0 评论 -
牛客网 统计同成绩学生人数 (hash)
题目描述读入N名学生的成绩,将获得某一给定分数的学生人数输出。输入描述:测试输入包含若干测试用例,每个测试用例的格式为第1行:N第2行:N名学生的成绩,相邻两数字用一个空格间隔。第3行:给定分数当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。输出描述:对每个测试用例,将获得给定分数的学生人数输出。示例1输入380 60 9060...原创 2019-01-02 23:01:32 · 201 阅读 · 0 评论