day06 打卡242.有效的字母异位词 349. 两个数组的交集 202. 快乐数
242.有效的字母异位词
1.思路:可以先记住s的每个字符,如果出现就+1;再次循环t的每一个字符,寻找相同的字符对于的数值,实现-1。最后所有的字符的数值等于0,则互为字母异位词。
对于Java中的一些必备方法:
class Solution {
public boolean isAnagram(String s, String t) {
int[] record = new int[26];
for(int i = 0 ; i<s.length() ; i++) {
record[s.charAt(i) - 'a']++;
}
for(int i = 0 ; i<t.length() ; i++) {
record[t.charAt(i) - 'a']--;
}
boolean reslut = true;
for(int i = 0; i<26 ; i++) {
if (record[i] != 0) {
reslut = false;
break;
}
}
return reslut;
}
}
349. 两个数组的交集
1.主要是通过set添加数值后,通过contains()判断是否存在,如果存在的话就加入set2。再把set转成数组。
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
for(int i = 0; i<nums1.length ; i++) {
set1.add(nums1[i]);
}
for(int i = 0; i<nums2.length ; i++) {
if (set1.contains(nums2[i])) {
set2.add(nums2[i]);
}
}
// 也可以直接 return set2.stream().mapToInt(x -> x).toArray();
int[] result = new int[set2.size()];
int i = 0;
for(Integer num: set2) {
result[i] = num;
i++;
}
return result;
}
}
202. 快乐数
1.没有思路,看代码随想录的。疑问点在于一直不等于1会陷入死循环。看来之后知道了,如果不是快乐数,就会重复。
class Solution {
public boolean isHappy(int n) {
boolean result = false;
Set<Integer> set = new HashSet<>();
while(n != 1 && !set.contains(n)) {
set.add(n);
n = getSum(n);
}
return n == 1;
}
public int getSum(int n) {
int sum = 0;
while (n>0) {
int num = n % 10;
sum += num * num;
n = n / 10;
}
return sum;
}
}
1. 两数之和
1.联想哈希表的使用,就会想到key为nums[index],value是index。因为返回值是要下标,所以存储到value里。为什么不用set是因为可能出现[3,3,4]的数组,index=0和1的都是要被记下来的。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
if (nums == null || nums.length == 0) {
return result;
}
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0 ; i<nums.length ; i++) {
Integer num = target - nums[i];
if (map.containsKey(num)) {
result[0] = map.get(num);
result[1] = i;
break;
}
map.put(nums[i], i);
}
return result;
}
}
参考资料
[代码随想录](
标签:202,int,day06,set,result,242,new,打卡,public From: https://www.cnblogs.com/zzzsl/p/17184676.html