首页 > 编程语言 >代码随想录算法训练营|Day06 LeetCode 242.有效的字母异位词,349.两个数组的交集,202.快乐之数,1.两数之和

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

时间:2024-09-03 23:47:32浏览次数:12  
标签:map vector return nums int sum 随想录 之数 两数

理论知识

  • 哈希表是根据关键码的值而直接进行访问的数据结构,一般用来快速判断一个元素是否出现在集合里
  • 映射——哈希函数
  • 哈希碰撞
    • 线性探测法
    • 拉链法
  • 常用的哈希结构
    • 数组
    • set(集合)
    • map(映射)

242.有效的字母异位词

242. 有效的字母异位词 - 力扣(LeetCode)

class Solution {
public:
    bool isAnagram(string s, string t) {
        int len1 = s.size();
        int len2 = t.size();
       
        int record[26] = { 0 };

        for (int i = 0; i < len1; i++)
        {
            record[s[i] - 'a']++;
        }
        for (int i = 0; i < len2; i++)
        {
            record[t[i] - 'a']--;
        }
        for (int i = 0; i < len1; i++)
        {
            if (record[i] != 0)
            {
                return false;
            }
        }
        return true;
            
    }
};

349.两个数组的交集

349. 两个数组的交集 - 力扣(LeetCode)

#include<iosrteam>
#include<unordered_set> 
using namespace std;
class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2)
    {

        /*set 数据不允许重复,可以去重*/
        unordered_set<int> result;
        unordered_set<int> nums(nums1.begin(), nums2.end());
        for (int i = 0; i < nums2.size(); i++)
        {
            if (nums.find(nums2[i]) != nums.end())
            {
                result.insert(nums2[i]);
            }
        }
        return vector<int>(result.begin(), result.end());



    }
};

202.快乐之数

202. 快乐数 - 力扣(LeetCode)

class Solution {
public:
    int getSum(int temp)
    {
        long int sum=0;
        while (temp > 0)
        {
            sum += (temp % 10) * (temp % 10);
            temp = temp / 10;
        }
        return sum;
    }
    bool isHappy(int n) 
    {
        unordered_set<int> count;
        
        while (1)
        {

            int sum = getSum(n);
            if (sum == 1)
            {
                return true;
            }
            if (count.find(sum) != count.end())
            {
                return false;
            }
            else
            {
                count.insert(sum);
            }
            n = sum;
        }
       
    }
};

1.两数之和

1. 两数之和 - 力扣(LeetCode)

#include<iosrteam>
#include<unordered_map> 
using namespace std;
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> map;
        for (int i = 0; i < nums.size(); i++)
        {
            if (map.find(target - nums[i])!=map.end())
            {
                return { (map.find(target - nums[i]))->second,i };
            }
            map.insert(pair<int, int>(nums[i], i));

      }
        return {};

    }
};

标签:map,vector,return,nums,int,sum,随想录,之数,两数
From: https://www.cnblogs.com/FreeDrama/p/18395660

相关文章

  • 代码随想录day16--图论
    题目描述:给定一个由1(陆地)和0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。输入描述:第一行包含两个整数N,M,表示矩阵的行数和列数。后续N行,每行包含M个数字,数字为1或者0。输出描......
  • 代码随想录算法训练营,9月3日 | 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和
    454.四数相加II题目链接:454.四数相加II文档讲解︰代码随想录(programmercarl.com)视频讲解︰四数相加II日期:2024-09-03想法:4个数组,两两分开遍历时间复杂度低点,用一个map,key是i+j的值,value是出现次数,对nums3、4只需要判断0-k-l在不在map里,最后依次加上出现次数就行了。Java代......
  • 代码随想录算法训练营第32天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
    目录509.斐波那契数1、题目描述2、思路3、code4、复杂度分析70.爬楼梯1、题目描述2、思路3、code746.使用最小花费爬楼梯1、题目描述2、思路3、code4、复杂度分析509.斐波那契数题目链接:link1、题目描述斐波那契数(通常用F(n)表示)形成的序列称为斐波那......
  • Java基础语法之数据类型
    概念位(bit):计算机内部存储的最小单位,11001100是一个八位二进制数字节(byte):计算机中数据处理的基本单位,习惯上用大写B来表示1B(byte,字节)=8bit(位)字符:是指计算机中使用的字母、数字、字和符号1bit表示1位1Byte表示一个字节1B=8b1024B=1KB1024KB=1M1024M=1G......
  • 代码随想录训练营完结总结
    在参加代码随想录的很久之前,我就听闻了卡哥的大名,也在B站上看到了相关的视频,但由于自制力一直不行,所有总是坚持不下去,当时好像就只看到了数组,甚至于链表都没开始看,就已经放弃了。想着这个暑假不能荒废了,就狠下心报名了训练营。并在这个暑假完成了代码随想录的一刷,自我感觉对于算法......
  • 代码随想录day49 || 42、接雨水 84、柱状图中最大的矩形
    42、接雨水functrap(height[]int)int{ //双指针思路,按照列计算雨水高度,分别计算每一列左右高于当前高度的最高柱子高度,然后通过min(left,right)-height[i]得出当前列的雨水体积 varresint varleft,rightint fori:=1;i<len(height)-1;i++{ left,right=......
  • 「代码随想录算法训练营」第五十二天 | 图论 part10
    目录Floyd算法题目:97.小明逛公园A*算法题目:126.骑士的攻击最短路算法总结Floyd算法Floyd算法用于求解多源最短路问题(求多个起点到多个终点的多条最短路径)。在前面学习的dijkstra算法、Bellman算法都是求解单源最短路的问题(即只能有一个起点)。注意:Floyd算法对边的权值正负没......
  • 代码随想录算法训练营|Day01 LeetCode 704.二分查找,27.移除元素,977.有序数组的平方
    数组理论基础数组是存放在连续空间上的相同类型数据的集合数组的元素是不能删的,只能覆盖704.二分查找LeetCode:704.有序数组的平方classSolution{public:intsearch(vector<int>&nums,inttarget){intlength=nums.size();inti=0......
  • 代码随想录算法训练营,9月2日 | 242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1
    哈希表理论基础1.根据关键码的值而直接进行访问的数据结构(直白来讲其实数组就是一张哈希表,哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素);2.哈希表都是用来快速判断一个元素是否出现集合里;3.哈希函数:把值对应到哈希表的函数;哈希碰撞:映射到哈希表同一个索引......
  • 【牛客网】JZ65:不用四则运算符实现两数相加
    文章目录问题来源思考例:使用位操作符进行int变量交换位操作符的使用代码实现问题来源牛客网数据结构题目......