两数之和(001)

先看代码

class Solution {
HashMap<Integer, Integer> map = new HashMap<>();
public int[] twoSum(int[] nums, int target) {
int n = nums.length;
for (int i = 0; i < n; i++){
if (map.containsKey(nums[i])){
return new int[]{ map.get(nums[i]), i};
}
map.put(target - nums[i], i);
}
return new int[]{0,0};
}
}
  • 分析

对枚举的每一个num进行target - num处理, 来服务后来的num

  • 感悟

充分利用每一次枚举, 对强相关性数据进行关联

字母异位词分组(049)

先看代码

class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String, List<String>> map = new HashMap<>();
for (String str : strs){
char[] temp = str.toCharArray();
Arrays.sort(temp);
String sortString = new String(temp);
List<String> list = map.getOrDefault(sortString, new ArrayList<>());
list.add(str);
map.put(sortString,list);
}
return new ArrayList<>(map.values());
}
}
  • 分析

根据分组依据(同组数据字符串包含相同的字符)对每个str进行字符排序得到temp

以temp作为分组依据

  • 感悟

在需要对所有值进行处理时 O(n)必定为最优时间复杂度, 此题不可避免的要对 无序str进行处理 排序(* k * log k) 如果对str进行枚举再组合(3a4b1c5m)的话有 (* k * 26)

log k < 26显然排序算法更优

最长连续序列(128)

先看代码

class Solution {
public int longestConsecutive(int[] nums) {
int res = 0;
HashSet<Integer> set = new HashSet<>();
for (int num : nums){
set.add(num);
}
for (int num : set){
if (set.contains(num-1)){
continue;
}
int numEnd = num +1;
while (set.contains(numEnd)){
numEnd++;
}
res = Math.max(res , numEnd - num);
}
return res;
}
}
  • 分析

将nums放入HashSet中,再通过找到连续序列的起始点,计算连续序列长度取最大值

  • 感悟

此题的时间复杂度为O(n + k),其中k = n - 重复数字,而二分排序的时间复杂度为O(n log n + n)

但二分排序的效率却高于哈希,可能是因为哈希需要进行哈希计算、解决哈希冲突, 及哈希扩容

这一系列琐事吧

hot100之哈希的更多相关文章

  1. [PHP内核探索]PHP中的哈希表

    在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...

  2. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  3. Java 哈希表运用-LeetCode 1 Two Sum

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  4. 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希

    据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...

  5. Oracle 哈希连接原理

    <基于Oracle的sql优化>里关于哈希连接的原理介绍如下: 哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集的表连接方法. 在Oracle 7.3 ...

  6. SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)

    今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...

  7. BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】

    3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2046  Solved: 749[Submit][Statu ...

  8. [bzoj3207][花神的嘲讽计划Ⅰ] (字符串哈希+主席树)

    Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天D ...

  9. minHash最小哈希原理

    minHash最小哈希原理 收藏 初雪之音 发表于 9个月前 阅读 208 收藏 9 点赞 1 评论 0 摘要: 在数据挖掘中,一个最基本的问题就是比较两个集合的相似度.通常通过遍历这两个集合中的所有 ...

  10. .net的一致性哈希实现

    最近在项目的微服务架构推进过程中,一个新的服务需要动态伸缩的弹性部署,所有容器化示例组成一个大的工作集群,以分布式处理的方式来完成一项工作,在集群中所有节点的任务分配过程中,由于集群工作节点需要动态增 ...

随机推荐

  1. 面试题-Java集合(新更新版本)

    前言 Java集合部分的题目,是我根据Java Guide的面试突击版本V3.0再整理出来的,其中,我选择了一些比较重要的问题,并重新做出相应回答,希望对大家起到一定的帮助. Java集合 Java集 ...

  2. Math类、System类--java进阶day05

    1.Math类 Math类里所有方法都被static修饰,说明它是一个工具类,不需要创建对象,直接类名调用 2.Math方法展示 . 3.System类 SYstem方法展示 1.currentTim ...

  3. Ubuntu24使用Wine运行Windows程序安装微信

    Ubuntu24使用Wine运行Windows程序安装微信 2024.11.8:好消息!微信发布Linux版本了,微信主站Linux版本客户端下载页面:https://linux.weixin.qq. ...

  4. FDMemtable如何增加一条自身复制的记录

    procedure TFrame_Bill.CopyARecord; var lAFDmemtable : TFDMemTable; begin {$REGION '增加一条复制的记录'} try l ...

  5. Readers and Writers JSON Framework(2)

    我们关心json的读写.特别在datasnap中,关于使用stream更是显得重要.其实轮子都帮你做好了,你不知道整经再研究就是一个悲哀.除非你要研究. 回正题: 处理json有二套框架. JSON ...

  6. 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明

    5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明 @ 目录 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明 1. Exchanges 交换机的 ...

  7. Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战

    Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战 一.概述 Browser-use 是一个旨在将 AI "智能体"(Agents)与真实浏览器进 ...

  8. Avalnoia跨平台实战记录(一),Avalonia初始化

    前言: 记录一下小菜鸟程序员从WPF一知半解转向Avalonia跨平台桌面端开发的一点记录和感想,我个人是比较喜欢用.NET来开发的,当然,这也和我的技术栈有很大关系,本人只是从大专出来的,在学校里学 ...

  9. MySQL 的 Change Buffer 是什么?它有什么作用?

    MySQL 的 Change Buffer 1. 什么是 Change Buffer? Change Buffer 是 MySQL InnoDB 存储引擎中的一个优化机制,用于减少磁盘 I/O 操作. ...

  10. DeepSeek+Coze实战:如何从0到1打造一个热点监控智能体

    大家好,我是汤师爷,专注AI智能体分享~ 短视频小白经常会遇到这样的困扰. 每天花大量时间刷视频,想要找到你所在赛道的爆款内容,却总是难以系统地整理和分析? 想要批量获取某个关键词的爆款视频数据,但是 ...