草庐IT

两数之和

全部标签

day6 哈希 有效的字母异位词 两个数组的交集 快乐数 两数之和

-day5周日休息---哈希表-什么时候用   -需要记录对比数据,判断数据是否在集合里面-哈希三种形式   1.数组      -记录一个数      -已知长度,belike26个字母      -已知最大长度,且长度较小,belike1   2.set      -记录一个数      -除了数组外的其它         -用数组的地方用set也可以,但是浪费   1.map      -记录一组数,需要用key->value,belike数组通过数值判断下标   -用不用unordered,看哈希表需不需要顺序记录 ----有效的字母异位词   -26个字母,用数组即可```cppcl

代码随想录算法训练营第7天|【哈希表02】454.四数相加II ,383. 赎金信 ,15. 三数之和 , 18. 四数之和

今日任务:454.四数相加II,383.赎金信,15.三数之和,18.四数之和+总结状态:1刷文章目录一、454.四数相加II二、383.赎金信三、15.三数之和四、18.四数之和总结一、454.四数相加II题目:给定四个包含整数的数组列表A,B,C,D,计算有多少个元组(i,j,k,l),使得A[i]+B[j]+C[k]+D[l]=0。思路:ThisisaC++implementationfortheproblemwhereweneedtocountthenumberofi,j,k,lsuchthatA[i]+B[j]+C[k]+D[l]equalstozero.Thesolutionuse

day7 代码训练营 主要是哈希表和双指针法和几数之和问题

第一题四数之和一开始还是只能想到说是四重循环但是我估计肯定不行另外这个题的主要思想就是用两个循环去解决4个循环的暴力解法 我一上来想的是去用四个multimap去存储ABCD但那样是不行的因为:使用四个multimap存储A、B、C和D的元素,然后进行四个循环,其实就是一种暴力解法。对于每一个a、b、c和d的组合,你都需要检查它们的和是否为0。这种方法的时间复杂度是O(n⁴),因为你需要遍历A、B、C和D中的所有元素四元组。虽然multimap可以按照键(key)进行排序并快速查找特定的键,但这并不能改变你需要遍历所有四元组的事实。只有当你需要查找或删除特定键的元素时,multimap的特性才

输入一个n×n的矩阵,分别计算该矩阵主对角线元素与副对角线元素之和。

输入格式:输入包含n+1行:第一行为一个正整数n(1第二行到第n+1行,每行有n个整数,邻近两数之间用一个空格隔开。输出格式:两数之间用一个空格隔开。输入样例:42341562171831611输出样例:175#include#defineN10intmain(){inta[N][N];inti,j,n;ints1=0,s2=0;intsum;scanf("%d",&n);for(i=0;i=0;i--){for(j=0;j

代码随想录算法训练营第六天 | 哈希表系列2(两数之和--四数相加II--三数之和--四数之和)

哈希表系列21两数之和本题思路代码随想录的代码力扣的示例代码454四数相加II本题思路代码随想录的代码力扣的示例代码15三数之和本题思路代码随想录的代码力扣的示例代码18四数之和代码随想录的代码力扣的示例代码1两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示

Day 6 哈希表part01:242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数, 1. 两数之和

哈希表理论基础 要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。  什么时候想到用哈希法,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。 这句话很重要,大家在做哈希表题目都要思考这句话。1.哈希表定义哈希表(英文名字为Hashtable,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hashtable就可以了)。哈希表是根据关键码的值而直接进行访问的数据结构。直白来讲其实数组就是一张哈希表。哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,如下图所示:那么哈希表能解决什么问题呢,一般哈希表都是

秋招算法备战第6天 | 哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

哈希表理论基础一般哈希表都是用来快速判断一个元素是否出现集合里。当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构:数组set(集合)map(映射)当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。242.有效的字母异位词-力扣(LeetCode)直接调库ACfromcollectionsimportCounterclassSolution:defisAnagram(self,s:str,t:str)->bool:returnCounter(s)==

代码随想录算法训练营第6天 | 哈希表理论基础, 242.有效字母异位词 anagram, 349. 两数组交集, 202. 快乐数, 1.两数之和

哈希知识一些记录:虽然std::set、std::multiset的底层实现是红黑树,不是哈希表,std::set、std::multiset使用红黑树来索引和存储,不过给我们的使用方式,还是哈希法的使用方式,即key和value。所以使用这些数据结构来解决映射问题的方法,我们依然称之为哈希法。map也是一样的道理。哈希法也是牺牲了空间换时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。做面试题目时遇到需判断一个元素是否出现过的场景也应该第一时间想到哈希法#242anagrammultiset和unordered_map都试了下,看代码随想录答案用的array,

C语言-求矩阵的对角线之和

其实这种题往往规律性很强,用笔画一画相信都能发现突破口,下面我就讲最简单的方法去求解。先画图 无非两种情况,n*n,n要么是双数,即对2求余等于0,要么是单数,对2求余不为0;单数和双数的区别在于,单数的情况下两条对角线会有一个交点,当我们计算了一条对角线的总和,另外一条对角线就不需要重复去计算。在此基础,单双数公用一个逻辑,只是单数比较特别一点,需要减两条对角线的交点,也就是这里的6。下面看整体代码。#includeintmain(){intn=0,i=0,j=0;intsum1=0,sum2=0,sum=0;printf("请输入数组的行列数,(n*n只需n)\n");scanf("%d"

算法刷题Day 17 平衡二叉树+二叉树的所有路径+左叶子之和

Day17二叉树计算左右两棵子树的高度,如果有一个高度是-1(有一棵子树不平衡),直接返回-1,否则计算高度差,判断是否不平衡110.平衡二叉树classSolution{inthelper(TreeNode*root){if(!root)return0;intleftDepth=helper(root->left);intrightDepth=helper(root->right);if(leftDepth==-1||rightDepth==-1)return-1;elseif(abs(leftDepth-rightDepth)>1){return-1;}else{returnmax(lef