2022.2.3
1.哈希表理论基础
首先我们需要理解的就是什么是哈希表,在这个过程当中,数组其实就是哈希表,我们一般是通过哈希函数来做出对应的索引,也就是相应的hashcode,可以将其数据转化为不同的数值,这样就把学生映射为哈希表上的索引了。
1.2.有效的字母异位词
1.1题目分分析
首先这道题目我们想到的就是用到ASCII码来解决问题,那么如何来进行解决呢,那就是通过两个数组,首先第一个数组中的进行加减,然后就是第二个数组
class Solution {
public boolean isAnagram(String s, String t) {
int[] record=new int[26];
for(char c:s.toCharArray()){
record[c-'a']+=1;
}
for(char c:t.toCharArray()){
record[c-'a']-=1;
}
for(int i:record){
if(i!=0){
return false;
}
}
return true;
}
}
2.两个数组的交集
首先我们需要做的就是看到这种求数组中重复的东西,首先想到的就是用到哈希表,
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
if(nums1null || nums2null || nums1.length0 || nums2.length0){
return new int[0];
}
//这里首先就是不能用到数组,而是用set,因为set是没有界限的,所以可以用到
Set hashset1=new HashSet<>();
Set hashset2=new HashSet<>();
//首先就是将nums1这个数组通过遍历来放入Set表中
for(int i:nums1){
hashset1.add(i);
}
//接下来就是
for(int i:nums2){
if(hashset1.contains(i)){
hashset2.add(i);//这个就是进行判断对应的nums2
}
}
//建立一个对应的数组
int[] RessAr=new int[hashset2.size()];
int index=0;
for(int i:hashset2){
RessAr[index++]=i;//这个就是将对应的数组进行一个添加
}
return RessAr;
}
}
3.快乐数
解题思路:
首先我们需要做的就是将这个快乐数进行判断,首先就是每一次进行的乘除代表的就是不同的数组,所以
这个时候很需要一个哈希表来进行数据的存储
class Solution {
public boolean isHappy(int n) {
//首先我们就是需要Set来进行存储
Set record=new HashSet<>();
while(n!=1 && !record.contains(n)){
record.add(n);
n=getNextNumber(n);
}
return n==1;
}
public int getNextNumber(int n){
int res=0;
while(n>0){
int temp=n%10;
res+=temp*temp;
n=n/10;
}
return res;
}
}