Hash表经典操作与实践

前言

Hash表在我们开发工作中的使用频率不言而喻,在算法领域Hash表也是一个比较常用的数据结构,由于Hash查找时间,通过Hash算法可以快速定位数据是否存在。

Hash定义与问题

Hash表是可以通过hash算法确定某个key在集合中元素位置的数据结构。

上方,通过hash算法,我们可以计算key在存储哪个位置。hash表可以使用数组来实现,hash算法可以使用取模算法。

hash经典的操作

  • 判断数据是否已经存在。
java 复制代码
Map map = new HashMap();

if(map.contains(key) {
   //key出现过了
}
  • 重复数据计数

Hash法实操

leetcode242. 有效的字母异位词

java 复制代码
class Solution {
    public boolean isAnagram(String s, String t) {

        if(s.length() != t.length()) {
            return false;
        }


       Map<Character, Integer> map = new HashMap<>();
      
       for(int i=0; i< s.length(); i++) {
           //元素是否出现过
            if(!map.containsKey(s.charAt(i))) {
                 map.put(s.charAt(i), 1);
            } else {
                 //重复元素计数
                map.put(s.charAt(i), map.get(s.charAt(i)) + 1);
            }
       }

       for(int i=0; i< t.length(); i++) {
           if(!map.containsKey(t.charAt(i))) {
               return false;
           } else {
               map.put(t.charAt(i), map.get(t.charAt(i)) - 1);
           }
       }

       for(Map.Entry<Character, Integer> entry : map.entrySet()) {
           Integer value = entry.getValue();
           if(value != 0) {
            return false;
           }
       }

       return true;
    }
}

这道题目解题的关键依据是通过hash可以实现判断数据是否出现过,重复数据计数

2024加油,深入理解算法,学习算法,一起学习。

相关推荐
实名上网宋凯宣1 小时前
Django
后端·python·django
利威尔xu3 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
ZhengEnCi3 小时前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考3 小时前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
逃逸线LOF4 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
慢云智慧空间4 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu4 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
薛定谔的猫-菜鸟程序员5 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
夜不会漫长6 小时前
C++:红黑树
数据结构·算法
AI备案指南-满满6 小时前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记