(day5休息调整->day6)day6 主要内容:哈希表哈希表是根据关键码的值而直接进行访问的数据结构。有数组、set(集合)、map(映射)三种数据结构哈希表用来快速判断一个元素是否出现在集合里。242、有效的字母异位词·数组哈希表用数组++--就完事题目链接:https://leetcode.cn/problems/valid-anagram/思路:数组哈希表存放26个字母的出现次数 数组下标为[字符串-‘a'] 第一串字符对应的数组值++ 第二串字符对应的数组值-- 若有数组值不为0则不是字母异位词代码实现:数组哈希表 时间复杂度O(n) 空间复杂度O
(day5休息调整->day6)day6 主要内容:哈希表哈希表是根据关键码的值而直接进行访问的数据结构。有数组、set(集合)、map(映射)三种数据结构哈希表用来快速判断一个元素是否出现在集合里。242、有效的字母异位词·数组哈希表用数组++--就完事题目链接:https://leetcode.cn/problems/valid-anagram/思路:数组哈希表存放26个字母的出现次数 数组下标为[字符串-‘a'] 第一串字符对应的数组值++ 第二串字符对应的数组值-- 若有数组值不为0则不是字母异位词代码实现:数组哈希表 时间复杂度O(n) 空间复杂度O
link 分别考虑原数组$a[]$中所有的正数,负数以及0的数量:设$a[]$中正数的数量为$cnt1$个,把$a[]$中所有正数保存在$bz[]$数组中,负数数量为$cnt2$个,保存在$bf[]$数组中,0的数量为$cnt0$个。----------------------------------设$x1$,$x0$,$x2$分别为两两相乘之后新生成的$b$序列中所有正数,0,负数的个数,则:$$x1=cnt1*(cnt1-1)/2+cnt2*(cnt2-1)/2$$$$x0=cnt0*(n-1)$$$$x2=cnt1*cnt2$$-----------------------------
link 分别考虑原数组$a[]$中所有的正数,负数以及0的数量:设$a[]$中正数的数量为$cnt1$个,把$a[]$中所有正数保存在$bz[]$数组中,负数数量为$cnt2$个,保存在$bf[]$数组中,0的数量为$cnt0$个。----------------------------------设$x1$,$x0$,$x2$分别为两两相乘之后新生成的$b$序列中所有正数,0,负数的个数,则:$$x1=cnt1*(cnt1-1)/2+cnt2*(cnt2-1)/2$$$$x0=cnt0*(n-1)$$$$x2=cnt1*cnt2$$-----------------------------
454、四数相加Ⅱ·map哈希表当初不知四数相加的好,做完四数之和发现~oh这题真简单题目链接:https://leetcode.cn/problems/4sum-ii/前提:计算四个数组中多少个元组满足条件(值可以重复)思路:四个数组分别两两相加|时间复杂度O(n^2) 前两个数组相加的值作为map的键 map中查找等于(0-后两个数组相加的值)的键 找到则+该键值(这个值可能大于一)代码实现:unordered_map哈希表 时间复杂度O(n^2) 空间复杂度O(n)classSolution{public:intfourSumCount(vector&nums
454、四数相加Ⅱ·map哈希表当初不知四数相加的好,做完四数之和发现~oh这题真简单题目链接:https://leetcode.cn/problems/4sum-ii/前提:计算四个数组中多少个元组满足条件(值可以重复)思路:四个数组分别两两相加|时间复杂度O(n^2) 前两个数组相加的值作为map的键 map中查找等于(0-后两个数组相加的值)的键 找到则+该键值(这个值可能大于一)代码实现:unordered_map哈希表 时间复杂度O(n^2) 空间复杂度O(n)classSolution{public:intfourSumCount(vector&nums
15.三数之和给你一个包含n个整数的数组 nums,判断 nums 中是否存在三个元素a,b,c,使得 a+b+c=0?请你找出所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2:输入:nums=[]输出:[]示例3:输入:nums=[0]输出:[]提示:0-105解题思路要求三元组不同,想到先给数组排序确定第一个值,想到后两个值相加为第一个值得相反数,一个增加,另一个必然减小采用双指针,第二次和第三次循环一同进行每次循环的值大于初始值,并且等于上一次的值,跳出循环来保证值
15.三数之和给你一个包含n个整数的数组 nums,判断 nums 中是否存在三个元素a,b,c,使得 a+b+c=0?请你找出所有和为0且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums=[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2:输入:nums=[]输出:[]示例3:输入:nums=[0]输出:[]提示:0-105解题思路要求三元组不同,想到先给数组排序确定第一个值,想到后两个值相加为第一个值得相反数,一个增加,另一个必然减小采用双指针,第二次和第三次循环一同进行每次循环的值大于初始值,并且等于上一次的值,跳出循环来保证值
力扣01求两数之和题目:给定一个整数数组,返回两个数字的索引,使它们加起来为一个特定的目标。您可以假设每个输入只有一个解决方案,并且您可能不会两次使用同一个元素。示例:Givennums=[2,7,11,15],target=9,Becausenums[0]+nums[1]=2+7=9,return[0,1]注:题目大意就是在给定的一个数组中找到两个数组元素之和为给定的target并且返回这两个数组元素在数组中的下标。解法一:暴力求解解题思路:依次固定数组的第一个元素,并开始遍历数组(从固定元素的下一个元素开始)看其他元素与固定元素加起来是否等于target若等于则返回这两个数组的下标若不等于
力扣01求两数之和题目:给定一个整数数组,返回两个数字的索引,使它们加起来为一个特定的目标。您可以假设每个输入只有一个解决方案,并且您可能不会两次使用同一个元素。示例:Givennums=[2,7,11,15],target=9,Becausenums[0]+nums[1]=2+7=9,return[0,1]注:题目大意就是在给定的一个数组中找到两个数组元素之和为给定的target并且返回这两个数组元素在数组中的下标。解法一:暴力求解解题思路:依次固定数组的第一个元素,并开始遍历数组(从固定元素的下一个元素开始)看其他元素与固定元素加起来是否等于target若等于则返回这两个数组的下标若不等于