算法刷题之哈希表
杰明学编程
这个作者很懒,什么都没留下…
展开
-
138. 复制带随机指针的链表
题目: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。 我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示: val:一个表示 Node.val 的整数。 random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。 方法一:哈希表unordered_map class Solution { public:原创 2020-09-09 21:52:04 · 110 阅读 · 0 评论 -
287. 寻找重复数
题目: 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 题解思路: 方法一:双指针+快慢指针 函数代码: class Solution { public: int findDuplicate(vector<int>& nums) { int slow=0; int fast=0; slow=nums[slow原创 2020-09-07 11:41:24 · 89 阅读 · 0 评论 -
1.两数之和
方法一:两遍哈希表 函数代码一: class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> m; for(int i=0;i<nums.size();i++) { m[nums[i]]=i; } for(in原创 2020-09-03 00:52:42 · 88 阅读 · 0 评论 -
350. 两个数组的交集 II
题目: 给定两个数组,编写一个函数来计算它们的交集。 题解思路: 方法:map或unorder_map或哈希表 函数代码: class Solution { public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { map<int,int>record; for(int i=0;i<nums1.size();i+原创 2020-09-03 00:46:04 · 82 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
题解思路: 方法一:用hash法;hash有键和值,vectorhash(nums.size(),0); 或者用unordered_map<int ,int>m; 函数代码: class Solution { public: int findRepeatNumber(vector<int>& nums) { int len=nums.size(); vector<int>hash(len,0); int re原创 2020-08-17 18:36:47 · 83 阅读 · 0 评论