一、242.有效的字母异位词
题目链接:https://leetcode.cn/problems/valid-anagram/description/
文章讲解:https://programmercarl.com/0242.%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.html
视频讲解:https://www.bilibili.com/video/BV1YG411p7BA
1.1 初见思路
1.使用数组来实现,char-'a’的值作为下标,遍历第一个字符串出现就+1,遍历第二个字符串,出现的下标对应值-1
2.遍历完后,遍历一遍数组,看是否都为0,只要有一个不为0,则返回false
1.2 具体实现
class Solution {public boolean isAnagram(String s, String t) {int[] arr = new int[26];char[] sArr = s.toCharArray();char[] tArr = t.toCharArray();for(int i=0;i<sArr.length;i++){arr[sArr[i]-'a'] += 1;}for(int i=0;i<tArr.length;i++){arr[tArr[i]-'a'] -= 1;}for(int i=0;i<arr.length;i++){if(arr[i]!=0){return false;}}return true;}
}
1.3 重难点
找对思路,这题就好做。
二、 349. 两个数组的交集
题目链接:https://leetcode.cn/problems/intersection-of-two-arrays/description/
文章讲解:https://programmercarl.com/0349.%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
视频讲解:https://www.bilibili.com/video/BV1ba411S7wu
2.1 初见思路
2.2 具体实现
class Solution {public int[] intersection(int[] nums1, int[] nums2) {HashSet<Integer> set = new HashSet<>();HashSet<Integer> resultSet = new HashSet<>();for (int i : nums1) {set.add(i);}for(int i:nums2){if(set.contains(i)){resultSet.add(i);}}int[] res = new int[resultSet.size()];int k =0;for (Integer i : resultSet) {res[k++]=i;}return res;}
}
2.3 重难点
三、 202. 快乐数
题目链接:https://leetcode.cn/problems/happy-number/description/
文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html#%E6%80%9D%E8%B7%AF
视频讲解:
3.1 初见思路
1.乍看没啥规律,但是将示例2进行模拟就会发现,这个题就是在sum的值为1之前,判断sum的集合中是否出现重复元素。
3.2 具体实现
class Solution {public boolean isHappy(int n) {HashSet set = new HashSet<Integer>();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 temp = n%10;sum+=temp*temp;n=n/10;}return sum;}
}
3.3 重难点
- while循环条件要掌握
四、 1. 两数之和
题目链接:https://leetcode.cn/problems/two-sum/description/
文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html#%E6%80%9D%E8%B7%AF
视频讲解:
4.1 初见思路
4.2 具体实现
class Solution {public int[] twoSum(int[] nums, int target) {int[] res = new int[2];HashMap<Integer,Integer> map = new HashMap<>();for(int i=0;i<nums.length;i++){if(!map.containsKey(target-nums[i])){map.put(nums[i],i);}else{res[0]=i;res[1]=map.get(target-nums[i]);return res;}}return res;}
}
4.3 重难点
- 简单题想一次过也不容易
- 要想清楚map的key和value都存的什么值
- 判断条件是什么以及结果从哪里取