哈希表是一种数据结构,它使用哈希函数组织数据,以支持快速插入和搜索
两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
说明:

输出结果中的每个元素一定是唯一的。
我们可以不考虑输出结果的顺序。
代码:

class Solution {public int[] intersection(int[] nums1, int[] nums2) {int len1 = nums1.length;int len2 = nums2.length;Set<Integer> list = new HashSet<>();for(Integer num :len1>len2?nums2:nums1){//把较长的数组添加到set中去除重复list.add(num);}Set<Integer> res = new HashSet<>();for(int num:len1>len2?nums1:nums2){if(list.contains(num)){res.add(num);}}//set类型转int数组int[] arr = new int[res.size()];int i=0;for(Integer r:res){arr[i++] = r;}return arr;}
}

两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

class Solution {public int[] twoSum(int[] nums, int target) {int[] res = new int[2];Map<Integer,Integer> hashMap = new HashMap<Integer,Integer>();for(int i=0;i<nums.length;i++){hashMap.put(nums[i],i);//key为值,value为下标}for(int i=0;i<nums.length;i++) {if(hashMap.containsKey(target-nums[i])&&hashMap.get(target-nums[i])!=i) {res[0] = i;res[1] = hashMap.get(target-nums[i]);break;}}return res;}
}

字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:

s = “leetcode”
返回 0.

s = “loveleetcode”,
返回 2.

class Solution {public int firstUniqChar(String s) {Map<Character, Integer> map = new HashMap<Character, Integer>();char[] arr = s.toCharArray();for(int i=0;i<arr.length;i++){if(map.containsKey(arr[i])){map.put(arr[i],map.get(arr[i])+1);}else{map.put(arr[i],1);}}for (int i = 0; i < s.length(); i++) {if (map.get(arr[i]) == 1){return i;}}return -1;}
}

leetcode探索哈希表(一)相关推荐

  1. LeetCode Cookbook 哈希表(collections.Counter()和collections.defaultdict())

    好久不更了,这次一鼓作气,学完它! 文章目录 LeetCode Cookbook 哈希表 30. 串联所有单词的子串 36. 有效的数独(很不错的循环题目) 49. 字母异位词分组 290. 单词规律 ...

  2. 趣味算法——探索哈希表的神秘世界

    文章目录 前言: 一.哈希表的魔力 二.哈希表的灵魂--哈希函数 1. 什么是哈希函数 2. 哈希函数的特性 3. 哈希冲突 三.解决冲突的艺术 1. 开放寻址法 2. 链地址法 3. 冲突解决策略的 ...

  3. 算法训练Day6 | LeetCode:242. 有效的字母异位词(数组作哈希表);349. 两个数组的交集(Set作哈希表);202.快乐数 (Set作哈希表);1. 两数之和(Map作哈希表)

    目录 LeetCode242. 有效的字母异位词 方法:数组作哈希表 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 Leetcode349. 两个数组的交集 方法一:用Set作HashMa ...

  4. 七十五、Python | Leetcode哈希表系列

    @Author:Runsen @Date:2020/7/3 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  5. python leetcode_七十五、Python | Leetcode哈希表系列

    @Author:Runsen @Date:2020/7/3 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  6. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之上——原理与设计

    哈希表(Hash table,也叫散列表),是根据键(Key)而直接访问数据在内存中的储存位置(又叫做存储桶,Buckets)的数据结构.也就是说,它通过计算一个关于键值的函数(哈希函数,Hash f ...

  7. LeetCode 890. 查找和替换模式(哈希表)

    1. 题目 你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配. 如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们 ...

  8. LeetCode 1171. 从链表中删去总和值为零的连续节点(哈希表)

    1. 题目 给你一个链表的头节点 head,请你编写代码,反复删去链表中由 总和 值为 0 的连续节点组成的序列,直到不存在这样的序列为止. 删除完毕后,请你返回最终结果链表的头节点. 你可以返回任何 ...

  9. 【LeetCode笔记】剑指 Offer 03. 数组中重复的数字(Java、哈希表、原地算法)

    文章目录 题目描述 思路 & 代码 二刷 题目描述 倒是和leetcode 287 寻找重复数很像..但是不能使用那道题的快慢指针法(也可能是我太菜了) 重点在于题干的描述[长度为 n 的数组 ...

  10. C#LeetCode刷题-哈希表

    哈希表篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 42.8% 简单 3 无重复字符的最长子串   24.2% 中等 18 四数之和   ...

最新文章

  1. 鸟哥的Linux私房菜10.16 vim程序编辑器
  2. max点缓存烘焙帧_深入理解浏览器的缓存机制
  3. EasyX实现推箱子游戏
  4. Mybatis实现多表关联多条件查询
  5. 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景
  6. 小米路由器4Q的设置
  7. 赞!15个来自 CodePen 的酷炫 CSS 动画效果
  8. leetcode338 比特位计数
  9. 在Windows和Azure中使用加密证书提高web.config的安全性
  10. 关联分析在企业风控策略中的应用
  11. model存数据_数据库内核杂谈 存储
  12. anaconda升级sklearn版本
  13. 基于电子商务网站开发的项目管理计划设计
  14. 分布式服务架构读书笔记-第六章 Java服务的线上应急和技术攻关
  15. PC-红警联机问题与下载
  16. Pandas:写了一个简易的销量异常检测器
  17. switch相关系列
  18. 前后端交互必备之js数组方法大全
  19. 易客多快排系统部署教程
  20. 世间安得双全法,不负如来不负卿

热门文章

  1. centos7.2 ftp连接问题
  2. 使用Gulp来加速你的开发
  3. vSphere 5.5 使用Web Client打开控制台窗口显示连接超时
  4. 多步骤查询的解决方案
  5. 七种场景下的软件作业量估计
  6. IPSEC 安全连接
  7. 8.业务架构·应用架构·数据架构实战 --- 技术方案书
  8. 9.微服务设计 --- 安全
  9. 32.Linux/Unix 系统编程手册(上) -- 线程:线程取消
  10. 2.第一个页面amp;amp;分辨率和rpx