代码随想录---第六天:242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

手势识别器:实现手部动作识别器 在本篇文章中,我们将使用Python来实现一个简单的手部动作识别器。然后,我们通过循环从摄像头获取每一帧图像,并对每一帧图像进行处理。我们提取手部关键点并计算手势的特征向量,然后将其添加到特征列表和标签列表中。接下来,我们再次从摄像头获取每一帧图像,并进行手势识别。我们提取手部关键点并计算手势的特征向量,然后使用训练好的分类器来预测手势,并在图像上显示出来。在这个实现中,我们将使用MediaPipe库来检测和跟踪手部关键点,然后使用K最近邻(K-Nearest Neighbors)算法对手势进行分类。 阅读详情
242.有效的字母异位词 

字母异位词: 若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

思路:

因为是字母,我们都知道有26个字母,知道具体的大小就可以考虑用数组record,而且开的范围也不大。然后我们遍历字符串s,把出现的字母按照索引(s[i] - 'a')来保存在record里。然后我们遍历字符串t,把t中包含的字母按照索引(t[i] - 'a')找到,并且--。最后我们遍历数组record,如果有一个索引的值不为0,就说明不满足条件。

class Solution {
public:
    bool isAnagram(string s, string t)
    {
        //如果两个字符串长度相等,各个字母的个数相等,
        //只是顺序不同,那么这两个词是字母异位词
        int record[26] = {0};
        for(int i = 0; i < s.size(); i++)
        {
            record[s[i] - 'a'] ++;
        }

        for(int i = 0; i < t.size(); i++)
        {
            record[t[i] - 'a'] --;
        }

        for(int i = 0; i < 26; i++)
        {
            if(record[i] != 0)
            {
                return false;
            }
        }
        return true;
    }
};

349. 两个数组的交集 

注意题目特意说明:输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序

思路:因为结果是要去重的,而且我们也不知道开多大的数组,所以我们考虑哈希表,这次使用 std::unordered_set。我们开一个哈希表nums_set,用来保存nums1,然后建一个result_set,用来保存最后的结果。我们遍历nums2,如果nums_set里能找到对应的数值,就说明是满足条件的,我们就把他加入result_set,如果没有就继续遍历,直到遍历结束。

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> result_set; // 存放结果,之所以用set是为了给结果集去重
        unordered_set<int> nums_set(nums1.begin(), nums1.end());
        for (int num : nums2) {
            // 发现nums2的元素 在nums_set里又出现过
            if (nums_set.find(num) != nums_set.end()) {
                result_set.insert(num);
            }
        }
        return vector<int>(result_set.begin(), result_set.end());
    }
};

202. 快乐数

快乐数」 定义为:

  • 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
  • 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
  • 如果这个过程 结果为 1,那么这个数就是快乐数。

如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

思路:这道题说可能会无线循环,那我们可以这样想,用哈希表来保存sum,如果出现过,那也就算命不满足,就要return false。其次我们在判断sum == 1,如果满足了那就return true。判断sum是否重复出现可以用unordered_set。

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> set;
        while(1) {
            int sum = getSum(n);
            if (sum == 1) {
                return true;
            }
            // 如果这个sum曾经出现过,说明已经陷入了无限循环了,立刻return false
            if (set.find(sum) != set.end()) {
                return false;
            } else {
                set.insert(sum);
            }
            n = sum;
        }
    }
};

1. 两数之和 (刚接触算法就遇到了。。。)

 思路:

因为我们要找到满足和位target的值的下标,需要使用 key value结构来存放,key来存元素,value来存下标,那么使用map正合适。

接下来需要明确两点:

  • map用来做什么
  • map中key和value分别表示什么

map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(也就是相加等于target)。

接下来是map中key和value分别表示什么。

这道题 我们需要 给出一个元素,判断这个元素是否出现过,如果出现过,返回这个元素的下标。

那么判断元素是否出现,这个元素就要作为key,所以数组中的元素作为key,有key对应的就是value,value用来存下标。

所以 map中的存储结构为 {key:数据元素,value:数组元素对应的下标}。

在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        std::unordered_map <int,int> map;
        for(int i = 0; i < nums.size(); i++) {
            // 遍历当前元素,并在map中寻找是否有匹配的key
            auto iter = map.find(target - nums[i]); 
            if(iter != map.end()) {
                return {iter->second, i};
            }
            // 如果没找到匹配对,就把访问过的元素和下标加入到map中
            map.insert(pair<int, int>(nums[i], i)); 
        }
        return {};
    }
};

深度解析 Android 开发工程师岗位:技术栈、职责与面试全攻略 本文深度剖析Android开发工程师职位要求,从核心技术栈到面试准备进行全面解读。关键点包括:1)掌握Kotlin语言特性和Jetpack组件;2)具备UI开发、性能优化和逆向分析能力;3)理解MVVM架构和Room数据库;4)熟悉常用工具链和开发流程。文章提供了详细的面试题库及解析,涵盖基础概念、UI优化、架构设计等方向,并给出职业发展建议:夯实基础、拓展技术广度、培养工程素养。旨在帮助开发者系统性地准备Android岗位求职,把握移动开发领域的技术趋势。 阅读详情

相关推荐

ESP8266 进行HDLC解码,AX.25,APRS

/************************************************************** 函数名:aprs_wait_begin() 参 数:无 返回值:bool true=得到合法脉冲,false=未得到 说 明:等待第1个833us高脉冲,判断范围 730-930,其他忽略 ***************************************************************/ bool aprs_wait_begin(){ stati

蓝蓝的博客 1628

《代码随想录》——第六天:哈希表基础、242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和

本篇文章的所有内容仅基于C++撰写。

qq_43797172的博客 685

混合部署 操作系统混合部署

在openEuler Embedded 22.03中,已经集成了OpenAMP相关支持,并与openEuler的SIG Zephyr合作实现了openEuler Embedded与实时操作系统Zephyr在QEMU平台上的混合部署。具体的混合部署方式取决于设备的硬件和软件支持。例如,可以使用虚拟机软件(如VirtualBox)在Linux操作系统上运行Android虚拟机,从而实现Linux和Android的混合部署。需要注意的是,混合部署涉及到设备的硬件和软件兼容性,以及操作系统的配置和管理。

dianqicyuyan的博客 1763

代码随想录第六天:哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

继续加油!

weixin_45810959的博客 971

EEGLAB+ERPLAB实战:从.cnt文件到情绪ERP差异波,一份避坑指南

本文详细介绍了使用EEGLAB和ERPLAB处理Neuroscan的.cnt格式脑电数据的全流程,从数据导入、预处理到情绪ERP差异波生成。重点解决了采样率验证、事件标记检查、重参考选择、滤波策略与ICA组合等实操难题,并提供了情绪图片ERP研究中P1、EPN和LPP成分的分析技巧,帮助研究者避免常见错误,提升数据处理效率。

weixin_26795617的博客 264

大模型-高通平台性能测试示例-2

在QNN中,可以使用(genis-t2t-run)和这两个工具来进行推理的性能分析。支持在QNX操作系统或Android操作系统上进行性能分析。:提供基本的性能数据,如运行时间、资源消耗等。:提供更详细的性能数据,可能包括各个操作的执行时间、资源使用情况等。:是指在性能分析的同时进行代码质量检查,以发现潜在的问题。:是指跟踪和分析神经网络中各个操作的性能,以优化网络结构或参数。

点滴的岁月 1492

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

还有一种想法思路是,相加求值,最可能的是一个大的值和一个小的值,那么先将数据排序(这里可以删去大于数组中大于target的数进一步减少时间),然后头尾设置指针,让最小的数加最大的数,如果相加小于target,头指针向后移动一步;如果涉及的是unicode编码,那使用ord也是有效的,但是当unicode的编码太大的时候(到万这样),要么数组大到管够,要么数组长度不够大使得碰撞的发生不可避免,再进行线性寻址什么都就很复杂,那还是用python字典吧……好的,不用集合运算,用哈希表的思想写一次吧。

weixin_51367610的博客 780

计算机视觉三大顶会(ICCV/CVPR/ECCV)投稿指南与趋势解析

本文详细解析计算机视觉三大顶会(ICCV/CVPR/ECCV)的投稿指南与最新趋势。从基础认知到实战经验,涵盖时间线管理、选题策略、论文写作技巧及实验设计要点,帮助研究者提升投稿成功率。特别关注2024年技术融合、评估维度和伦理要求等前沿趋势,为计算机视觉领域的研究者提供实用建议。

weixin_29165725的博客 1836

代码随想录第六天:242.有效的字母异位词、​349:两个数组的交集​、​202:快乐数​、​1:两数之和​

考虑将数组的<元素,下标>依次放入HashMap中,之后再遍历数组,如果target减去数组当前遍历值所得的结果在HashMap中存在,需要检查一下找到的这个key对应的value是否和和当前数组下标一致,以满足“数组中同一个元素在答案里不能重复出现”的要求。把一个数组的每个元素依次添加到哈希表res1中,然后对另一个数组进行遍历,如果第二个数组中的元素已经存在哈希表中了,则把该元素添加到resSet中。这里哈希表转为数组是通过遍历哈希表元素,再依次传入数组,也可以采用流的方法。

weixin_42536406的博客 220

【WRF-Urban】使用 CGLC-MODIS-LCZ_100m 数据集运行 WRF 时的城市参数化问题

【WRF-Urban】使用 CGLC-MODIS-LCZ_100m 数据集运行 WRF 时的城市参数化问题

WW、forever的博客 710

openbmc 支持mctp over pcie(三)(支持作为endpoint)

本文介绍了在Intel BHS平台上支持MCTP over PCIe端点开发的调试方法。开发基于CodeConstruct和AspeedTech-BMC的开源项目,将内核驱动改为模块形式以便调试。内容包括DTS配置、驱动模块设置步骤,以及如何将BMC配置为端点设备。调试过程涉及内核模块加载、MCTPD启动、参数设置等关键命令,并展示了路由表、地址和邻居信息的测试结果。该方案仅为实验性工作,需注意停止其他使用/dev/aspeed-mctp0接口的应用。

wit_yuan的专栏 1554

Day6 :代码随想录算法训练营第六天| 哈希表基础 力扣242. 有效的字母异位词、力扣349.两个数组的交集、力扣202快乐数 、力扣1.两数之和

Day6 :代码随想录算法训练营第六天| 哈希表基础 力扣242. 有效的字母异位词、力扣349.两个数组的交集、力扣202快乐数 、力扣1.两数之和

love_computer123的博客 309

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

unordered_set在这里的作用就是发现重复的总和,如果出现了重复的总和这就意味着一个循环无法达到总和为一的结果。所以一旦出现了重复的总和就return false,如果没有出现重复的总和的总和也没有为1那么就讲这个总和插入到set里面,在进行新一轮的计算。寻找这两个数也很简单,就是从数组的第一个数开始,然后用target减去这个数,也就是在剩下的数组里面找他们的差值。这道题我是用map来做的,在遍历字符串s的时候将s的字符放入map里面,记录数值,同时将字符串t里的字符从map中拿出来,记录数值。

cheeyyy的博客 64

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

给定两个字符串s和t,编写一个函数判断t是否是s的字母异位词。用一个数组来记录字符串s中各字母出现的次数,然后再遍历字符串t,对出现的字母在数组中进行-1的操作,最后判断数组是否所有元素为0就行。小写字母的ASCII是26个连续的值,不需要记住字符的ASCII,只需要将所有字符的ASCII减去'a'的ASCII,求出一个相对的值来,就能将字符映射到0~25的索引下标上。

BEK647的博客 2003

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

代码随想录第五天|LeetCode242.有效的字母异位词 LeetCode349. 两个数组的交集 LeetCode202. 快乐数 LeetCode 1. 两数之和

2301_79647020的博客 2398

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

题目要求输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序!,用于记录在计算过程中出现过的数字。这是为了避免无限循环,因为如果某个数字在过程中重复出现,那么就会陷入无限循环,该数不是快乐数。遍历nums2数组,如果hashset1中有和 j 相同的元素,则添加进hashset2。中的每个元素映射成一个整数,并最终收集到一个新的整数数组中。的键是数组中的数字,值是该数字在数组中的索引。存储的是nums1数组中所有不重复的元素。,来存储已经遍历过的数字及其对应的索引。

weixin_74815669的博客 2098

训练营第六天| 哈希表理论基础、LeetCode242.有效的字母异位词、LeetCode349. 两个数组的交集、LeetCode202. 快乐数、LeetCode1. 两数之和。

哈希表理论基础、LeetCode242.有效的字母异位词、LeetCode349. 两个数组的交集、LeetCode202. 快乐数、LeetCode1. 两数之和。

qq_64036065的博客 1148

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

今天开始哈希表部分,以下默认各位了解哈希表。不了解的朋友请百度一下。对于这一块说的set没有弄明白,集合和字典基本忘光了。242的思路很棒,值得学习​。

m0_53503719的博客 1132

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

参考其他人方法,使用 “快慢指针” 思想,找出循环:“快指针” 每次走两步,“慢指针” 每次走一步,当二者相等时,即为一个循环周期。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。这道题目和上面基本一样,不考虑顺序,采用字典可以解决,字典索引为数组元素,索引值为元素下标。分别建立字典哈希表,索引为字符当前字符,索引值为出现次数,判断两个字典是否相等。题目中字符串只有小写字符所以字符唯一,简单思路,

weixin_43270226的博客 866

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

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true示例 2: 输入: s = "rat", t = "car" 输出: false你可以假设字符串只包含小写字母。也可以使用defaultlist,这样就不用把字符通过函数变成数字存储了(数字—>字典)

2401_87652382的博客 1478

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

然后判断是否为快乐数,新建一个unordered_set哈希结构存放每次正整数各个位置的平方和,如果sum=1就是快乐数,sum重复出现会陷入无限循环不是快乐数,sum为没有出现过的数新加入result中记录。步骤二:用nums2做查询操作,再用nums2遍历每一个元素去查询哈希表里,看有没有在哈希表中出现过,如果出现过放到result集合里(result集合是去重的)把遍历过的元素加到一个集合里,每次遍历一个新的位置之后,判断想要寻找的元素是否在集合里出现过。题目链接:​​​​​​​。

m0_50413530的博客 1146

代码随想录算法训练营第六天 | Leetcode242有效的字母异位词,Leetcode349两个数组的交集,Leetcode202快乐数,Leetcode1两数之和

训练营第6天

鸽鸽鸽 1034

代码随想录算法训练营第六天|Leetcode242 有效的字母异位词、Leetcode349 两个数组的交集、Leetcode202 快乐数、Leetcode1 两数之和

我们知道使用哈希法时是需要查询一个元素是否出现过,或者一个元素是否在集合里的时候。当我们使用hash解决本题的时候,因此会将数组中遍历过的元素插入到hashtable中,在之后遍历其他元素的时候,正是在hashtable中查询是否在集合中存在,因此可以使用hash。(2)为什么使用本题使用对于本题而言,我们需要知道在hashtable中是否存在某个元素,同时还需要直到这个元素在原数组中的位置才能在最后将其返回,因此必须使用map。而相对于multimap和map。

Demok123的博客 1072

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

当要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,如果需要集合是有序的,那么就用set,如果要求不仅有序还要有重复数据的话,那么就用multiset。map 是一个key value 的数据结构,map中,对key是有限制,对value没有限制的,因为key的存储方式使用红黑树实现的。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]

qq_43227131的博客 751

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

代码随想录Day06

m0_57160016的博客 661

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

链接: 242.有效的字母异位词 链接: 349. 两个数组的交集 链接: 202. 快乐数 链接: 1. 两数之和242.有效的字母异位词:首先判断s和t的字符串长度是否相同,然后再把s放入哈希表,遍历t来查找是否t里的字符是否都在s里出现。但是我目前对于相关的api记不起起来了。需要看一下解答。 349. 两个数组的交集:题目中对数组的元素中的数范围有了限定,在0到1000,所以可以和上面一题的思路一样,去创建一个1000位的数组,根据索引来遍历。但是看到说用set比较好,于是看答案。 350. 快乐

qq_45163431的博客 629
上一篇: 代码随想录第四天--24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
下一篇: 代码随想录训练营--454题.四数相加II、383. 赎金信、15题. 三数之和、18题. 四数之和
七人酒
博客等级 码龄4年 51粉丝 65原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值