hot100之哈希
两数之和(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之哈希的更多相关文章
- [PHP内核探索]PHP中的哈希表
在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- Java 哈希表运用-LeetCode 1 Two Sum
Given an array of integers, find two numbers such that they add up to a specific target number. The ...
- 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希
据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...
- Oracle 哈希连接原理
<基于Oracle的sql优化>里关于哈希连接的原理介绍如下: 哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集的表连接方法. 在Oracle 7.3 ...
- SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)
今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...
- BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2046 Solved: 749[Submit][Statu ...
- [bzoj3207][花神的嘲讽计划Ⅰ] (字符串哈希+主席树)
Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天D ...
- minHash最小哈希原理
minHash最小哈希原理 收藏 初雪之音 发表于 9个月前 阅读 208 收藏 9 点赞 1 评论 0 摘要: 在数据挖掘中,一个最基本的问题就是比较两个集合的相似度.通常通过遍历这两个集合中的所有 ...
- .net的一致性哈希实现
最近在项目的微服务架构推进过程中,一个新的服务需要动态伸缩的弹性部署,所有容器化示例组成一个大的工作集群,以分布式处理的方式来完成一项工作,在集群中所有节点的任务分配过程中,由于集群工作节点需要动态增 ...
随机推荐
- Panabit 流控软件的使用教程
Flow control software-Panabit Howto Version 1.0.0 Date 2010-11-21 Author ipcpu Website http://www.ip ...
- Nginx 查看配置文件路径
通过测试信息来间接查看 #测试nginx.conf是否正确 nginx -t #输入此命令,通常会输出如下信息 nginx: the configuration file /etc/nginx/ngi ...
- DevExpress汉化
//ini 汉化文件的使用方法: var cxLocalizer1: TcxLocalizer; begin cxLocalizer1.FileName := '你的路径\DevChs.ini'; c ...
- 目前国内可用Docker镜像源汇总(截至2024年11月)
本文主要讲述了由于特殊原因国内的 Docker 镜像源出现问题,国内许多常见的镜像源如网易.百度等已不可用.文中介绍了中科大镜像源的暂时关闭情况,以及阿里镜像源包括私人阿里镜像加速器的使用方式,并提供 ...
- 如何开发 MCP 服务?保姆级教程!
最近这段时间有个 AI 相关的概念特别火,叫 MCP,全称模型上下文协议(Model Context Protocol).这是由 Anthropic 推出的一项开放标准,目标是为大型语言模型和 AI ...
- 《Deep Learning Inference on Embedded Devices: Fixed-Point vs Posit》(一)
After the success of performing deep learning inference by using an 8-bit precision representation o ...
- Java---实现文件拷贝
直接上代码: package com.zjw.file; import java.io.BufferedInputStream; import java.io.BufferedOutputStream ...
- 电脑ocr软件
天若ocr 体积小,可以隐藏任务栏,但有时候识别度不好,停止更新了,新项目为树洞ocr github: https://github.com/AnyListen/tianruoocr/releases ...
- AI 重塑测试,2025 年何去何从?
各位技术同仁,特别是奋斗在软件质量保障一线的朋友们,大家好! 2025 年的软件测试领域,AI 早已不是锦上添花的"时髦概念",而是决定效率.质量乃至生存空间的"核心引擎 ...
- Map延伸工具类之“根据value值得到map的key值”“根据value值得到map的keys值”
Map延伸工具类 /** * 集合类型转换 * */ public class CollectionUtil { /** * 根据value值得到map的key值 * @author wzw * * ...