做推广哪个网站好,360搜索引擎首页,国外设计网站,网站404页面编写2024.4.14 题目来源我的题解方法一 链表数组 题目来源
力扣每日一题#xff1b;题序#xff1a;705
我的题解
方法一 链表数组 由于给定限制次数为10000#xff0c;所以构造一个长度为10001的链表数组。对于add操作先看数组对应的位置是否为null或者为空#xff0c;若是… 2024.4.14 题目来源我的题解方法一 链表数组 题目来源
力扣每日一题题序705
我的题解
方法一 链表数组 由于给定限制次数为10000所以构造一个长度为10001的链表数组。对于add操作先看数组对应的位置是否为null或者为空若是则直接加入否则遍历整个链表看是否有与加入的值相同的元素。对于remove操作先看数组对应的位置是否为null或者为空若是则直接退出否则遍历整个链表看是否有与加入的值相同的元素若相同则删除对应的链表节点。对于contains操作先看数组对应的位置是否为null或者为空若是则直接返回false否则遍历整个链表看是否有与加入的值相同的元素若有直接返回true否则返回false。 对于哈希函数的设计取key对应的哈希值mod 10000 哈希冲突的解决使用链地址法解决 class MyHashSet {class LinkedList{int val;LinkedList next;public LinkedList(){}public LinkedList(int v){valv;}public int size(){LinkedList rootthis;int sz0;while(root!null){sz;rootroot.next;}return sz;}}private LinkedList[] keys;int n10001;public MyHashSet() {keysnew LinkedList[n];// Arrays.fill(keys,new LinkedList());}public void add(int key) {int indexmyHash(key);// 节点为空if(keys[index]null){keys[index]new LinkedList(key);// 还未有元素}else if(keys[index].size()0){keys[index].valkey;//已经有元素}else{LinkedList rootkeys[index];if (root.valkey)return ;while(root.next!nullroot.next.val!key){rootroot.next;}if(root.nextnull)root.nextnew LinkedList(key);}}public void remove(int key) {int indexmyHash(key);// 节点为空 || 还未有元素if(keys[index]null||keys[index].size()0)return ;//已经有元素else{LinkedList rootkeys[index];if(root.valkey){keys[index]root.next;}else{while(root.next!nullroot.next.val!key){rootroot.next;}if(root.next!null)root.nextroot.next.next;}}}public boolean contains(int key) {int indexmyHash(key);// 节点为空 || 还未有元素if(keys[index]null||keys[index].size()0)return false;//已经有元素else{LinkedList rootkeys[index];while(root!null){if(root.valkey)return true;rootroot.next;}return false;}}public int myHash(int key){int iHashInteger.hashCode(key);return iHash%(n-1);}Overridepublic String toString() {return Arrays.toString(keys);}
}有任何问题欢迎评论区交流欢迎评论区提供其它解题思路代码也可以点个赞支持一下作者哈~