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

242.有效的字母异位词

题目链接:力扣题目链接

思路:到底是统计每个字母的数量,想到用HashMap<Character, Integer>,然后键值对对比就好。

参考了“代码随想录”中使用的方法会更简洁。

//26字母列表
int[] record = new int[26];
//对应点先增后减
record[s.charAt(i) - 'a']++;
//最后检查
for (int count: record) {
     if (count != 0) { 
        return false;
     }
}

349. 两个数组的交集

题目链接:力扣题目链接

思路:利用HashSet循环遍历两个列表,第一遍对nums1输出HashSet,输出一个结果与nums2对比相同的输入HashSet,之后根据HashSet长度写入int[ ]。

202. 快乐数

题目链接:力扣题目链接

思路:本想一个before和last检测平方之后是否和前一个值相同的,但是这个有可能循环,所以要使用HashSet,来确定之前有没有出现平方之后的值了。

import java.util.HashSet;

class Solution {
    public boolean isHappy(int n) {
        HashSet<Integer> seen = new HashSet<>();
        while (n != 1 && !seen.contains(n)) {
            seen.add(n);
            n = getSumOfSquares(n);
        }
        return n == 1;
    }

    // Helper method to calculate the sum of squares of digits
    private int getSumOfSquares(int n) {
        int sum = 0;
        while (n > 0) {
            int digit = n % 10;
            sum += digit * digit;
            n /= 10;
        }
        return sum;
    }
}

1. 两数之和

题目链接:力扣题目链接

思路:先循环存入到HashMap中(HashMap<Integer, List<Integer>>),然后从1开始提升到target,先检查当前值和target-当前值两个值是否够一致,再用include检查是否存在,最后写入int[ ]。

其他:代码随想录

//使用哈希表
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];   // 遍历当前元素,并在map中寻找是否有匹配的key
        if(map.containsKey(temp)){
            res[1] = i;
            res[0] = map.get(temp);
            break;
        }
        map.put(nums[i], i);    // 如果没找到匹配对,就把访问过的元素和下标加入到map中
    }
    return res;
}

时间1.5h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值