力扣242,349,202,1,打卡第6天

今天的题目总体为简单的利用了哈希表的方法进行解题

242题是哈希表的经典经典也是简单应用我想到了两种方法,一是用暴力法,一一对比。二就是用哈希表排版26个英文字母最后看这个数组是否为0;代码如下

if (s.length()!=t.length()){return false;}
        int [] arr = new int[26];
        for(int i=0;i<s.length();i++){
            arr[s.charAt(i)-'a']++;
            arr[t.charAt(i)-'a']--;
        }
        for(int i=0;i<26;i++){
            if(arr[i]!=0){
                return false;
            }
        }
        return true;

249题简单,一次过:

if (nums1==null||nums2==null){return null;}
        HashSet<Integer> t1 = new HashSet<>();
        HashSet<Integer> t2 = new HashSet<>();
        for (int i=0;i<nums1.length;i++){
            t1.add(nums1[i]);
        }
        for (int i=0;i<nums2.length;i++){
            if (t1.contains(nums2[i])){
                t2.add(nums2[i]);
            }
        }
        Integer[] objects = t2.toArray(new Integer[t2.size()]);
        int[] ints = Arrays.stream(objects).mapToInt(Integer::valueOf).toArray();
        return ints;
    }

这里只有一个要注意的细节就是这个Integer数组转换到int数组的方法

Arrays.stream(objects).mapToInt(Integer::valueOf).toArray();

这个很实用

202题,快乐数字不快乐。我是真的很抑郁,最后只有三个数不是快乐数2,3,4很有难度

用递归做了

if (n == 2 || n == 3 || n == 4)return false;
        int sum = 0;
        while(n>0){
            sum += (n%10) * (n%10);
            n /= 10;
        }
        if (sum == 1)return true;
        return isHappy(sum);

第一题,不会吧,还有人第一题都没有做吗?

用暴力和哈希表都可以

这里得用map,键值随便设置

HashMap<Integer, Integer> t = new HashMap<>();
        int temp;
        int [] re = new int[2];
        for(int i=0;i<nums.length;i++){
            re[0] = i;
            temp = target-nums[i];
            if (t.containsValue(temp)){
                for (Integer a:t.keySet()){
                    if (t.get(a).equals(temp)){
                        re[1]=a;
                        return re;
                    }
                }
            }
            t.put(i,nums[i]);
        }
        return null;


版权声明:本文为qq_44051051原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。