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

242. 有效的字母异位词

1、开局初始化数组写法

2、最后判断数组是否全0写法

 if(record==0) return true; 这样写是错误的,应该循环遍历?

代码

class Solution {
public:
    bool isAnagram(string s, string t) {
        int record[26]={0};
        for(char s1:s) {
            record[s1-'a']++;
        }
        for(char s2:t) {
            record[s2-'a']--;
        }
        for(int i=0;i<26;i++) {
            if(record[i]!=0) return false;
        }
        return true;
    }
};

349. 两个数组的交集

问题:怎么把set转成vector;vector<int>(result.begin(),result.end());

代码:

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> st;
        unordered_set<int> result;
        for(int i:nums1) {
            st.insert(i);
        }
        for(int i:nums2) {
            if(st.count(i)) {
                result.insert(i);
            }
        }
        return vector<int>(result.begin(),result.end());
    }
};

 第202题. 快乐数

1、怎么取数值各个位上的单数之和

2、要想到循环终止条件

class Solution {
public:
    int getSum(int n) {
        int sum=0;
        while(n){
            sum+=(n%10)*(n%10);
            n/=10;
        }
        return sum;
    }
    bool isHappy(int n) {
        unordered_set<int> record;
        
        while (1) {
            if(record.count(n)) {
                return false;
            }
            else {
                record.insert(n);
                n=getSum(n);
                if(n==1) return true;
            }
        }
        return true;
    }
};

1. 两数之和

问题;

对于map使用find函数找到的是一个迭代器,这时候需要判断迭代器是不是等于map.end

代码 

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> mp;
        for(int i=0;i<nums.size();i++) {
            auto iter=mp.find(target-nums[i]);
            if(iter!=mp.end())
                return {i,mp[target-nums[i]]};
            mp[nums[i]]=i;
        }
        return{-1,-1};
    }
};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值