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

Leetcode Java学习记录——代码随想录哈希表篇

文章目录

  • 哈希表
    • 几种哈希实现
  • Java
    • 数组
    • HashSet
    • map
    • 方法
      • charAt()
      • toCharArray()
      • for 遍历
      • 长度

哈希表

当需要快速判断一个元素是否出现在集合里的时候,就要用到哈希表。
无限循环就意味着重复出现。

几种哈希实现

  • 数组:大小固定
  • set:只存key
  • map:key:value

Java

数组

动态数组

List<Integer> resList = new ArrayList<>();
//这里必须是Integer,不能是int。

以上动态数组本质上是一个对象,Integer为对象类型,若返回值限定了int[],则需要转化为int[](固定数组)

		int index = 0;int res[] = new int[resList.size()];for(int i : resList)res[index++] = i;return res;

HashSet

使用HashSet需要import两个包

import java.util.HashSet;
import java.util.Set;

声明HashSet

 Set<Integer> set1 = new HashSet<>();

对应的方法包括add,contains,size【注意不是length】

for (int i : nums1) {set1.add(i);
}
for (int i : nums2) {if (set1.contains(i)) {resSet.add(i);}
}
int[] arr = new int[resSet.size()];

集合转化为数组可以使用

return resSet.stream().mapToInt(x -> x).toArray();

也可以使用上述动态数组中的转化方法,申请一个数组赋值。

int[] arr = new int[resSet.size()];
int j = 0;
for(int i : resSet){arr[j++] = i;
}

map

声明定义

Map<Integer, Integer> map = new HashMap<>();

包含方法containsKey,get,put

			if (map.containsKey(temp)){int []res = new int[2];res[1]= i;res[0] = map.get(temp);return res;}//若没有对应,则添加进mapmap.put(nums[i],i);

getOrDefault 用于从映射(map)中根据指定的键(key)获取相应的值(value)。
如果映射中不包含这个键,getOrDefault 方法将返回调用者提供的默认值。

方法

charAt()

获取ASCII码值

record[s.charAt(i) - 'a']++;

toCharArray()

获取ASCII码值

for 遍历

遍历数组里的值,声明一个变量,用: 数组。

for (int count: record) {if (count != 0) {               return false;}

长度

string用.length()
set用size()

相关文章:

  • C++ 线程池
  • 盘点:20个大幅提高效率的开源网络安全工具
  • MongoDB 索引
  • Springboot + Mybatis 实现sql打印
  • 鸿蒙正在跨越“生态繁荣阈值”
  • 大语言模型-Transformer
  • html做一个分组散点图图的软件
  • 韩顺平0基础学java——第28天
  • Elasticsearch-ES查询单字段去重
  • 34.构建核心注入代码
  • C++ 61 之 函数模版
  • 【八股系列】shouldComponentUpdate是为了解决什么问题?(React)
  • CentOS OpenVPN 客户端连接配置
  • 椭圆的几何要素
  • 计算机专业的发展前景与选择建议。
  • JavaScript-如何实现克隆(clone)函数
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • Debian下无root权限使用Python访问Oracle
  • Github访问慢解决办法
  • Git的一些常用操作
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java读取Properties文件的六种方法
  • jdbc就是这么简单
  • JS学习笔记——闭包
  • Nodejs和JavaWeb协助开发
  • Otto开发初探——微服务依赖管理新利器
  • php面试题 汇集2
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 仿天猫超市收藏抛物线动画工具库
  • 好的网址,关于.net 4.0 ,vs 2010
  • 批量截取pdf文件
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务框架lagom
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序开发之路(一)
  • 字符串匹配基础上
  • 7行Python代码的人脸识别
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #pragma pack(1)
  • (C++17) optional的使用
  • (Git) gitignore基础使用
  • (办公)springboot配置aop处理请求.
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (三) diretfbrc详解
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (译)2019年前端性能优化清单 — 下篇
  • (自用)gtest单元测试