March.21.2022
349. 两个数组的交集
力扣题目链接(opens new window)
题意:给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[9,4] 解释:[4,9] 也是可通过的
HashSet简介
HashSet这个类实现了Set集合,实际为一个HashMap的实例。
hashSet( ) 构造一个空的set 其底层是HashMap 实例的默认初试容量是16 加载因子是0.75;
HashSet 添加元素
hashset.add("abc");
hashset.add(1);
hashset.add('a');
int[] abc={10,11,12};
hashset.add(abc);
Cat cat1=new Cat("asd", 2);
hashset.add(cat1);
hashset.clear()
hashset.remove(Object o)
hashset.isEmpty()
hashset.contains(Object o)
hashset.size()
HashSet应用实例(笔试题)
对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。 测试样例: “qywyer23tdd”,11 返回:y
解体关键:
hashset.add(E e):返回boolean型,如果此 set 中尚未包含指定元素,则添加指定元素;如果此 set 已包含该元素,则该调用不更改 set 并返回 false。
代码:
import java.util.HashSet;
public class firstrepaet {
public static char findrepeat(String A,int n) {
char[] a = A.toCharArray();
HashSet hs = new HashSet<>();
for (int i = 0; i <n ; i++) {
if(!hs.add(a[i])){
return a[i];
}
}
return 0;
}
public static void main(String[] args) {
System.out.println(findrepeat("qjhjsdfjsdhfj",13));
}
}
解题思路
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
if(nums1 == null || nums1.length == 0||nums2 == null ||nums2.length ==0){
return new int[0];
}
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for(int i:nums1){
set1.add(i);
}
for(int j:nums2){
if(set1.contains(j)){
set2.add(j);
}
}
int[] arry = new int[set2.size()];
int index = 0;
for(int i:set2){
arry[index++] = i;
}
return arry;
}
}
|