• 【Leetcode刷题笔记05】242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和


    在这里插入图片描述

    242.有效的字母异位词

    题目描述

    给定两个字符串 *s**t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。

    **注意:**若 *s**t* 中每个字符出现的次数都相同,则称 *s**t* 互为字母异位词。

    做题思路

    本题可使用两个数组一个统计s的字母,一个统计t的字母。

    参考代码

    class Solution {
        public boolean isAnagram(String s, String t) {
            int[] record=new int[26];
            for(int i=0;i<s.length();i++)
                record[s.charAt(i)-'a']++;
            for(int i=0;i<t.length();i++)
                record[t.charAt(i)-'a']--;
            for(int count:record)if(count!=0)return false;
            return true;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    349. 两个数组的交集

    题目描述

    给定两个数组 nums1nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

    做题思路

    本题可以使用Hashset解决。

    参考代码

    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<>();
            //遍历数组1
            for (int i : nums1) {
                set1.add(i);
            }
            //遍历数组2的过程中判断哈希表中是否存在该元素
            for (int i : nums2) {
                if (set1.contains(i)) {
                    resSet.add(i);
                }
            }
            //将结果几何转为数组
            return resSet.stream().mapToInt(x -> x).toArray();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    202. 快乐数

    题目描述

    编写一个算法来判断一个数 n 是不是快乐数。

    「快乐数」 定义为:

    • 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
    • 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
    • 如果这个过程 结果为 1,那么这个数就是快乐数。

    如果 n快乐数 就返回 true ;不是,则返回 false

    做题思路

    本题可使用哈希法判断sum是否重复出现。

    参考代码

    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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    1.两数之和

    题目描述

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

    你可以按任意顺序返回答案

    参考代码

    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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    2022DASCTF MAY 出题人挑战赛 misc
    ThreadLocal原理、内存泄漏问题解析、HASH_INCREMENT = 0x61c88647相关
    图像超分经典网络 SRGAN精确解析
    使用Mongoose populate实现多表关联存储与查询,内附完整代码
    通过内网穿透技术实现USB设备共享(USB Redirector)逆向共享
    GBase 8s手动创建和初始化实例
    深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
    idea 中配置 maven
    Spring boot:解决@RequestBody失效问题:传入的实体类为NULL
    矩阵最值~~
  • 原文地址:https://blog.csdn.net/m0_50521311/article/details/127624156