DAY06 || 242.有效的字母异位词 349.两个数组的交集 202.快乐数 1.两数之和

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包含该差作为键,则意味着当前元素和差的和等于目标值。在这种情况下,将两个元素的索引存储在结果数组中并返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值