草庐IT

秋招算法备战第17天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

110.平衡二叉树-力扣(Leetcode)明确后续遍历,借用昨天最后一题的参考思路,一次AC#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defisBalanced(self,root:Optional[TreeNode])->bool:self.bool_balanced=Truedefcompare_height(cur):ifcur==

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

题目:242.有效的字母异位词视频:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词_哔哩哔哩_bilibili题解:法一:qsort// int cmp(const void* _a, const void* _b) {//     char a = *(char*)_a, b = *(char*)_b;//     return a - b;// }// bool isAnagram(char* s, char* t) {//     int len_s = strlen(s), len_t = strlen(t);//     if (len_s != len_t)

输入一个整数矩阵,计算位于矩阵边缘的元素之和

 方法一(原始方法)intmain(){intm,n,a[110][110]={0};inti,j;cin>>m>>n;//构造数组for(i=0;i>a[i][j];}}//求和intsum=0;for(i=0;i此时会报错分析:这个做法是第一列和最后一列都要加到sum中去,如果只有一列或者只有一行就会加两次,导致结果不对。改进for(i=0;i 方法二思路在构造数组的时候直接加。因为构造时一个数只会输入一次,满足条件也只会加一次不会出现重复加的情况。intmain(){ intm,n; intsum=0; intnum[100][100]; cin>>m>>n; for(inti=0;i>

代码随想录算法训练营第七天 | 454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和

代码随想录算法训练营第七天|454.四数相加II,383.赎金信,15.三数之和,18.四数之和454.四数相加II:eyes:题目总结:eyes:383.赎金信暴力解法:computer:哈希解法:computer::eyes:题目总结:eyes:15.三数之和哈希解法双指针:eyes:题目总结:eyes:18.四数之和:eyes:题目总结:eyes::balloon:心得收获454.四数相加II题目链接视频讲解给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0nums1[i]+nums2[j]+nums3[k]+

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就可以了)。哈希表是根据关键码的值而直接进行访问的数据结构。直白来讲其实数组就是一张哈希表。哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,如下图所示:那么哈希表能解决什么问题呢,一般哈希表都是