算法训练营day06--242.有效的字母异位词+349. 两个数组的交集+202. 快乐数+1. 两数之和

一、242.有效的字母异位词

题目链接:https://leetcode.cn/problems/valid-anagram/description/
文章讲解:https://programmercarl.com/0242.%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.html
视频讲解:https://www.bilibili.com/video/BV1YG411p7BA

1.1 初见思路

1.使用数组来实现,char-'a’的值作为下标,遍历第一个字符串出现就+1,遍历第二个字符串,出现的下标对应值-1
2.遍历完后,遍历一遍数组,看是否都为0,只要有一个不为0,则返回false

1.2 具体实现

class Solution {
    public boolean isAnagram(String s, String t) {
        int[] arr = new int[26];
        char[] sArr = s.toCharArray();
        char[] tArr = t.toCharArray();
        for(int i=0;i<sArr.length;i++){
            arr[sArr[i]-'a'] += 1;
        }
        for(int i=0;i<tArr.length;i++){
            arr[tArr[i]-'a'] -= 1;
        }
        for(int i=0;i<arr.length;i++){
            if(arr[i]!=0){
                return false;
            }
        }
        return true;
    }
}

1.3 重难点

找对思路,这题就好做。

二、 349. 两个数组的交集

题目链接:https://leetcode.cn/problems/intersection-of-two-arrays/description/
文章讲解:https://programmercarl.com/0349.%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
视频讲解:https://www.bilibili.com/video/BV1ba411S7wu

2.1 初见思路

2.2 具体实现

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {

        HashSet<Integer> set = new HashSet<>();
        HashSet<Integer> resultSet = new HashSet<>();
        
        for (int i : nums1) {
            set.add(i);
            
        }
        for(int i:nums2){
            if(set.contains(i)){
                resultSet.add(i);
            }
        }
        int[] res = new int[resultSet.size()];
        int k =0;
        for (Integer i : resultSet) {
            res[k++]=i;
        }
        return res;
    }
}

2.3 重难点

三、 202. 快乐数

题目链接:https://leetcode.cn/problems/happy-number/description/
文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html#%E6%80%9D%E8%B7%AF
视频讲解:

3.1 初见思路

1.乍看没啥规律,但是将示例2进行模拟就会发现,这个题就是在sum的值为1之前,判断sum的集合中是否出现重复元素。

3.2 具体实现

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

    public int getSum(int n){
        int sum=0;
        while(n!=0){
            int temp = n%10;
            sum+=temp*temp;
            n=n/10;
        }
        return sum;
    }
}

3.3 重难点

  • while循环条件要掌握

四、 1. 两数之和

题目链接:https://leetcode.cn/problems/two-sum/description/
文章讲解:https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html#%E6%80%9D%E8%B7%AF
视频讲解:

4.1 初见思路

4.2 具体实现

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int[] res = new int[2];
        HashMap<Integer,Integer> map = new HashMap<>();
        for(int i=0;i<nums.length;i++){
            if(!map.containsKey(target-nums[i])){
                map.put(nums[i],i);
            }
            else{
                res[0]=i;
                res[1]=map.get(target-nums[i]);
                return res;
            }
        }
        return res;
    }
}

4.3 重难点

  • 简单题想一次过也不容易
  • 要想清楚map的key和value都存的什么值
  • 判断条件是什么以及结果从哪里取

在这里插入图片描述

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 21:36:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 21:36:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 21:36:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 21:36:01       20 阅读

热门阅读

  1. Nginx GeoIP 使用指南-宝塔识别ip屏蔽地区

    2024-06-12 21:36:01       9 阅读
  2. Thinkphp5实现自定义路由和使用方法

    2024-06-12 21:36:01       5 阅读
  3. E. 日期计算

    2024-06-12 21:36:01       5 阅读
  4. 主机加固方案分享

    2024-06-12 21:36:01       7 阅读
  5. docker拉取镜像失败处理

    2024-06-12 21:36:01       5 阅读
  6. 边界值测试中的边界情况数据

    2024-06-12 21:36:01       6 阅读
  7. 记一次网络故障排查could not load plugin “ifcfg-rh“

    2024-06-12 21:36:01       5 阅读