242.有效的字母异位词
代码示例
class Solution {
public boolean isAnagram(String s, String t) {
int[] record = new int[26];
for (char c : s.toCharArray()) {
record[c - 'a'] += 1;
}
for (char c : t.toCharArray()) {
record[c - 'a'] -= 1;
}
for (int i : record) {
if (i != 0) {
return false;
}
}
return true;
}
}
心得体会
首先创建一个大小为26的整数数组“record”,用于跟踪第一个字符串“s”中每个字符的频率。第一个“for”循环遍历“s”中的每个字符,并增加“record”中相应计数。第二个“for”循环遍历第二个字符串“t”中的每个字符,并减少“record”中相应计数。最后一个“for”循环检查“record”中是否有任何计数为非零,这将表明两个字符串不是彼此的字谜。如果所有计数都为零,则返回“true”,表示两个字符串是彼此的字谜。
349.两个数组的交集
代码示例
import java.util.HashSet;
import java.util.Set;
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> resSet = new HashSet<>();
for (int i : nums1) {
set1.add(i);
}
for (int i : nums2) {
if (set1.contains(i)) {
resSet.add(i);
}
}
int[] resArr = new int[resSet.size()];
int index = 0;
for (int i : resSet) {
resArr[index++] = i;
}
return resArr;
}
}
心得体会
首先检查两个输入数组是否为空,如果是,则返回一个空数组。然后,它创建一个HashSet来存储第一个数组中的元素。接下来,程序遍历第二个数组,并检查HashSet中是否存在该元素。如果存在,则将其添加到另一个HashSet中。最后,程序将结果HashSet转换为数组并返回。
202.快乐数
代码示例
class Solution {
public boolean isHappy(int n) {
Set<Integer> record = new HashSet<>();
while (n != 1 && !record.contains(n)) {
record.add(n);
n = getNextNumber(n);
}
return n == 1;
}
private int getNextNumber(int n) {
int res = 0;
while (n > 0) {
int temp = n % 10;
res += temp * temp;
n = n / 10;
}
return res;
}
}
心得体会
创立一个方法isHappy,它接受一个整数n并返回一个布尔值。它使用一个HashSet来记录已经出现过的数字,然后在n不等于1且记录中不包含n时,不断调用getNextNumber方法来计算下一个数字。getNextNumber方法将n分解为数字并计算它们的平方和,然后返回结果。如果最终n等于1,则isHappy返回true,否则返回false。
1.两数之和
代码示例
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2];
if(nums == null || nums.length == 0){
return res;
}
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
res[1] = i;
res[0] = map.get(temp);
}
map.put(nums[i], i);
}
return res;
}
心得体会
创建一个大小为2的空结果数组,并检查输入数组是否为null或为空。如果是,则返回结果数组。否则,创建一个HashMap来将数组元素存储为键,将它们的索引存储为值。
然后,遍历数组,并对于每个元素,计算目标值与该元素之间的差。如果HashMap包含该差作为键,则意味着当前元素和差的和等于目标值。在这种情况下,将两个元素的索引存储在结果数组中并返回。