代码随想录刷题训练营第六天|242.有效的字母异位词| 349. 两个数组的交集| 202. 快乐数| 1. 两数之和

242.有效的字母异位词

二刷,过

349. 两个数组的交集.两个数组求交集

看完题后的思路

将一个数组放入set集合,判断set中每一个元素是否包含在set中.

思路

看上文

代码

时间复杂度

时间复杂度 0(n)
空间复杂度0(n) 需要创建一个集合

快乐数

// day06 是否是快乐数
    public boolean isHappy(int n) {
        HashSet<Integer> set = new HashSet<>();
        set.add(n);
        Integer power=n;
        while (true){
            List<Integer> wei = getWei(power);
            power= getPower(wei);
           
            if (power==1){
                return true;
            }
             if (set.contains(power)){
                return false;
            }
            set.add(power);
        }
    }

    //
    public List<Integer> getWei(int n){
        ArrayList<Integer> list = new ArrayList<>();
        while (n>0){
            int i = n % 10;
            list.add(i);
            n/=10;
        }
        return list;
    }

    // 获取平方
    public Integer getPower(List<Integer> list){
        int res=0;
        for (Integer integer : list) {
            res+=(integer*integer);
        }
        return res;
    }

两数之和

看完题后的思路

将元素放入map中,key为值,value为下标,遍历数组,看targrt-num是否在map中

 // 两数之和
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        int i=0;
        for (int num : nums) {
         
                hashMap.put(num,i);
        
                i++;
        }
        i=0;
        for (int num : nums) {
            int i1 = target - num;
            if (hashMap.containsKey(i1)&&hashMap.get(i1)!=i){
                return new int[]{i,hashMap.get(i1)};
            }
            i++;
        }
        return new int[2];
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈师亦友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值