当前位置: 首页 > article >正文

力扣-Hot100-哈希【算法学习day.30】

前言

###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.两数之和

题目链接:1. 两数之和 - 力扣(LeetCode)

题面:

基本分析:每次遍历把该数存到map里,然后每次遍历时看target - nums[i]是否存在于map中,如果存在,则说明找到了

代码:

class Solution {
    public int[] twoSum(int[] nums, int target) {
     int[] ans = new int[2];
     Map<Integer,Integer> map = new HashMap<>();
     int n = nums.length;
     for(int i = 0;i<n;i++){
        int a = nums[i];
        int b = target-nums[i];
        if(map.getOrDefault(b,-1)!=-1){
            ans[0] = i;
            ans[1] = map.get(b);
            break;
        }
        map.put(a,i);
     }
     return ans;
    }
}

2.字母异位词分组

题目链接:49. 字母异位词分组 - 力扣(LeetCode)

题面:

基本分析:字母异位词们将各字符从小到大排序后是一样的单词

代码:

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> m = new HashMap<>();
        for (String str : strs) {
            char[] s = str.toCharArray();
            Arrays.sort(s);
            // s 相同的字符串分到同一组
            m.computeIfAbsent(new String(s), k -> new ArrayList<>()).add(str);
        }
        return new ArrayList<>(m.values());
    }
}


3.最长连续序列

题目链接:128. 最长连续序列 - 力扣(LeetCode)

题面:

基本分析:可以通过将每个数存到map里,然后找的时候看相邻的数在map里存不存在,但这样复杂度太高了,我采用指针遍历的线性做法

代码:

class Solution {
    public int longestConsecutive(int[] nums) {
        int n = nums.length;
        if(n==0)return 0;
        Arrays.sort(nums);
        int l = 1;
        int count = 1;
        int max = 1;
        Map<Integer,Integer> map = new HashMap<>();
        map.put(nums[0],1);
        while(l<n){
         map.put(nums[l],1);    
        while(l+1<n&&nums[l]==nums[l+1])l++;//防止出现这种类型的排序:0 1 1 2
        if(map.getOrDefault(nums[l]-1,0)!=0){
            count++;
        }else{
            max = Math.max(count,max);
            count = 1;    
        }
        l++;
        }
          max = Math.max(count,max);
        return max;
    }
}

后言

上面是力扣Hot100的哈希专题,下一篇会有专题,希望有所帮助,一同进步,共勉!


http://www.kler.cn/a/390741.html

相关文章:

  • 使用jmeter查询项目数据库信息,保存至本地txt或excel文件1108
  • 基于迭代重加权最小二乘法的算法及例程
  • 数据结构-集合
  • Android 配置默认输入法
  • ReactPress技术揭秘
  • vue3+vite 前端打包不缓存配置
  • HTMLCSS: 日落卡片
  • MySQL核心业务大表归档过程
  • Attention is all you need详细解读
  • STM32问题集
  • ES5 和 ES6 数组的操作方法
  • ISAAC SIM踩坑记录--ubuntu 22.04操作系统安装
  • 小水电远程集控运维系统简介及应用价值
  • Unity WebGL交互通信
  • 【数字静态时序分析】复杂时钟树的时序约束SDC写法
  • 视觉SLAM数学基础
  • 《重学Java设计模式》之 原型模式
  • K8资源之endpoint资源EP资源
  • 2024年计算机视觉与图像处理国际学术会议 (CVIP 2024)
  • (十)Python字典基本操作
  • Netty实现WebSocket Server是否开启压缩深度分析
  • 6. ARM_ARM指令寻址
  • 【MongoDB】MongoDB的存储引擎及Wiredtiger的读/写缓存、数据结构设计、Page生命周期等实现原理(超详细)
  • 数字化转型实践:金蝶云星空与钉钉集成提升企业运营效率
  • 刘艳兵-DBA028-您可以在 ORCL1 和 ORCL2 数据库都运行其实例的主机上安装“独立服务器的 Oracle 网格基础结构“。哪两个陈述是正确的?
  • Day106:代码审计-PHP原生开发篇文件安全上传监控功能定位关键搜索1day挖掘