经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
LeetCode算法题-Design HashSet(Java实现)
来源:cnblogs  作者:小川94  时间:2019/4/8 8:56:12  对本文有异议

这是悦乐书的第298次更新,第317篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第166题(顺位题号是705)。不使用任何内建的hash表库设计一个hash集合,应包含以下功能:

add(value):向哈希集合中插入一个值。

contains(value) :返回哈希集合中是否存在这个值。

remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。

例如:

MyHashSet hashSet = new MyHashSet();
hashSet.add(1);
hashSet.add(2);
hashSet.contains(1); // 返回 true
hashSet.contains(3); // 返回 false (未找到)
hashSet.add(2);
hashSet.contains(2); // 返回 true
hashSet.remove(2);
hashSet.contains(2); // 返回 false (已经被删除)


注意

  • 所有的值都在 [1, 1000000]的范围内。

  • 操作的总数目在[1, 10000]范围内。

  • 不要使用内建的哈希集合库。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

利用数组,哈希集合里所有值都在 [1, 1000000]的范围内,用key当作数组下标,如果存入数key就使arrs[key]为1,用于判断哈希集合是否有该值。

  1. int arrs[]=new int[1000001];
  2. public MyHashSet() {
  3. }
  4. public void add(int key) {
  5. arrs[key]=1;
  6. }
  7. public void remove(int key) {
  8. arrs[key]=0;
  9. }
  10. public boolean contains(int key) {
  11. return arrs[key]==1;
  12. }


03 第二种解法

同第一种解法思路。

  1. boolean arrs[]=new boolean[1000001];
  2. public MyHashSet() {
  3. }
  4. public void add(int key) {
  5. arrs[key]=true;
  6. }
  7. public void remove(int key) {
  8. arrs[key]=false;
  9. }
  10. public boolean contains(int key) {
  11. return arrs[key]==true;
  12. }


04 第三种解法

使用ArrayList集合处理,调用它提供的api。

  1. private List<Integer> list = null;
  2. public MyHashSet() {
  3. list=new ArrayList<>();
  4. }
  5. public void add(int key) {
  6. list.add(key);
  7. }
  8. public void remove(int key) {
  9. for (int i = list.size() - 1; i >= 0; i--) {
  10. if (list.get(i) == key) {
  11. list.remove(i);
  12. }
  13. }
  14. }
  15. public boolean contains(int key) {
  16. return list.contains(key);
  17. }


05 小结

算法专题目前已日更超过四个月,算法题文章166+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

原文链接:http://www.cnblogs.com/xiaochuan94/p/10659922.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号