目录
242. 有效的字母异位词
349. 两个数组的交集
202. 快乐数
1. 两数之和
242. 有效的字母异位词
242. 有效的字母异位词
难度:easy
类型:哈希表
思路:
代码:
class Solution {public boolean isAnagram(String s, String t) {if (s.length() != t.length()) {return false;}int len = s.length();int[] hash = new int[26];for (int i = 0; i < len; i++) {hash[s.charAt(i) - 'a']++;hash[t.charAt(i) - 'a']--;}for (int j: hash) {if (j != 0) {return false;}}return true;}
}
复杂度分析:
- 时间复杂度: O(n)
- 空间复杂度: O(1)
349. 两个数组的交集
349. 两个数组的交集
难度:easy
类型:哈希表
思路:
代码:
class Solution {public int[] intersection(int[] nums1, int[] nums2) {if (nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0) {return new int[0];}Set<Integer> set1 = new HashSet<>();for (int i: nums1) {set1.add(i);}Set<Integer> set2 = new HashSet<>();for(int i: nums2) {// set1中包含的元素才添加到set2if (set1.contains(i)) {set2.add(i);}}// set转数组int[] ans = new int[set2.size()];int j = 0;for (int i: set2) {ans[j++] = i;}return ans;}
}
202. 快乐数
202. 快乐数
难度:easy
类型:哈希表
思路:
代码:
class Solution {public boolean isHappy(int n) {Set<Integer> set = new HashSet<>();while (!set.contains(n)) {// 各位平方和中出现1,则为快乐数if (n == 1) {return true;}set.add(n);n = nextNum(n);}// 若set中元素重复出现,则不是快乐数return false;}public int nextNum(int n) {int num = 0;while(n != 0) {num += Math.pow(n % 10, 2);n /= 10;}return num;}
}
1. 两数之和
1. 两数之和
难度:easy
类型:哈希表
思路:
代码:
class Solution {public int[] twoSum(int[] nums, int target) {int[] ans = new int[2];if (nums == null || nums.length < 2) {return ans;} Map<Integer, Integer> map = new HashMap<>();for(int i = 0; i < nums.length; i++) {int gap = target - nums[i];if (map.containsKey(gap)) {ans[0] = i;ans[1] = map.get(gap);return ans;} else {map.put(nums[i], i);}}return ans;}
}