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

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


242.有效的字母异位词


● 今日学习的Leetcode链接

242.有效的字母异位词

● 自己看到题目的第一想法

先转换成char数组,分别将字母与个数存入到map中,然后再比较是否key相同,value相同,返回结果

● 看完代码随想录之后的想法

先存一个,另一个再减,如果为空或者负数,就返回alse
可以在for循环时,取出char

● 自己实现过程中遇到哪些困难

  1. char[] 数组要小写
  2. map<String,Integer> 泛型中写Integer不写int 应该写封装类
  3. String.toCharArray( )
  4. String.valueOf( )
  5. 数组长度 length( )
  6. Map的遍历keySet方法,得到Set类型的key
  7. 可以在for循环时,取出char,而不是直接转成char数组
  8. String.charAt(i)

● 今日收获,记录一下自己的学习时长

很多

public boolean isAnagram(String s, String t) {

        if(s.length() != t.length()){
            return false;
        }

        HashMap<Character,Integer> map = new HashMap<Character,Integer>();
        
        for(int i=0;i<s.length();i++){
            char ch = s.charAt(i);
            if(map.get(ch) == null){
                map.put(ch,1);
            }else{
                map.put(ch,map.get(ch)+1);
            }
        }

        for(int i=0;i<t.length();i++){
            char ch = t.charAt(i);
            if(map.get(ch) == null){
                return false;
            }
            map.put(ch,map.get(ch)-1);
            if(map.get(ch) == -1){
                return false;
            }
        }
        return true;
    }

349. 两个数组的交集


● 今日学习的Leetcode链接

两个数组的交集

● 自己看到题目的第一想法

都转化成set,然后将重复的再放到set里,最后将set中的元素赋值给数组

● 看完代码随想录之后的想法

一样

● 自己实现过程中遇到哪些困难

Collection的contains() 查看元素是否存在
怎样将交集元素,在数组创建时赋值
遍历set时,通过index++给数组赋值

● 今日收获,记录一下自己的学习时长

 public int[] intersection(int[] nums1, int[] nums2) {
        HashSet<Integer> set1 = getSet(nums1);
        HashSet<Integer> set2 = getSet(nums2);

        HashSet<Integer> set = new HashSet<Integer>();
        for(int s1: set1){
            if(set2.contains(s1)){
                set.add(s1);
            }
        }
        int[] inter = new int[set.size()];
        int index = 0;
        for(int s: set){
            inter[index++] = s;
        }
        return inter;
    }

    public HashSet<Integer> getSet(int[] nums){

        HashSet<Integer> set = new HashSet<Integer>();
        for(int i =0;i<nums.length;i++){
            set.add(nums[i]);
        }
        return set;
    }


202. 快乐数


● 今日学习的Leetcode链接

快乐数

● 自己看到题目的第一想法

将每次的平方和放到set中,如果set包含了,说明循环,返回false
直到是1,返回true

● 看完代码随想录之后的想法

easy

● 自己实现过程中遇到哪些困难

  1. 平方和怎么求来着
  2. 数组.length 没有括号

● 今日收获,记录一下自己的学习时长

 public boolean isHappy(int n) {
        HashSet<Integer> set = new HashSet<Integer>();

        while(n != 1){
            n = sum(n);
            if(set.contains(n)){
                return false;
            }
            set.add(n);
        }
        return true;
    }
    public int sum(int n){
        int sum = 0;
        while(n!=0){
            sum += (n%10)*(n%10);
            n = n / 10;
        }
        return sum;
    }

1. 两数之和


● 今日学习的Leetcode链接

两数之和

● 自己看到题目的第一想法

Map集合

● 看完代码随想录之后的想法

思路一样

● 自己实现过程中遇到哪些困难

  1. map是containsKey( )查看包含的key

● 今日收获,记录一下自己的学习时长

很好

public int[] twoSum(int[] nums, int target) {
        HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
        int[] sum = new int[2];

        for(int i=0;i<nums.length;i++){
            map.put(target - nums[i], i);
        }

        for(int i=0;i<nums.length;i++){
            if(map.containsKey(nums[i]) && (map.get(nums[i])!=i)){
                sum[0] = i;
                sum[1] = map.get(nums[i]);
                return sum;
            }
        }
        return null;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值