今天的题目总体为简单的利用了哈希表的方法进行解题
242题是哈希表的经典经典也是简单应用我想到了两种方法,一是用暴力法,一一对比。二就是用哈希表排版26个英文字母最后看这个数组是否为0;代码如下
if (s.length()!=t.length()){return false;}
int [] arr = new int[26];
for(int i=0;i<s.length();i++){
arr[s.charAt(i)-'a']++;
arr[t.charAt(i)-'a']--;
}
for(int i=0;i<26;i++){
if(arr[i]!=0){
return false;
}
}
return true;249题简单,一次过:
if (nums1==null||nums2==null){return null;}
HashSet<Integer> t1 = new HashSet<>();
HashSet<Integer> t2 = new HashSet<>();
for (int i=0;i<nums1.length;i++){
t1.add(nums1[i]);
}
for (int i=0;i<nums2.length;i++){
if (t1.contains(nums2[i])){
t2.add(nums2[i]);
}
}
Integer[] objects = t2.toArray(new Integer[t2.size()]);
int[] ints = Arrays.stream(objects).mapToInt(Integer::valueOf).toArray();
return ints;
}这里只有一个要注意的细节就是这个Integer数组转换到int数组的方法
Arrays.stream(objects).mapToInt(Integer::valueOf).toArray();
这个很实用
202题,快乐数字不快乐。我是真的很抑郁,最后只有三个数不是快乐数2,3,4很有难度
用递归做了
if (n == 2 || n == 3 || n == 4)return false;
int sum = 0;
while(n>0){
sum += (n%10) * (n%10);
n /= 10;
}
if (sum == 1)return true;
return isHappy(sum);第一题,不会吧,还有人第一题都没有做吗?
用暴力和哈希表都可以
这里得用map,键值随便设置
HashMap<Integer, Integer> t = new HashMap<>();
int temp;
int [] re = new int[2];
for(int i=0;i<nums.length;i++){
re[0] = i;
temp = target-nums[i];
if (t.containsValue(temp)){
for (Integer a:t.keySet()){
if (t.get(a).equals(temp)){
re[1]=a;
return re;
}
}
}
t.put(i,nums[i]);
}
return null;版权声明:本文为qq_44051051原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。