
leetcode刷题系列
文章平均质量分 87
阿白逆袭记
( ̄. ̄)
展开
-
力扣刷题:四数相加Ⅱ
在官方题解当中我们可以学到一个解法:我们可以将四个数组分成为两个一组的形式,将一组当中的两个数组进行相加合并,将两个数组当中的元素进行完全匹配相加,合并之后就可以将两组新的数据进行匹配,之后就可以将题目的要求修改为两个数组查找指定的值。所以我们需要重新进行优化,我们可以提前对数组当中的数据进行处理,使用哈希表进行映射,哈希表的键为数组当中数据的值,哈希表的值为数组当中该值出现的次数。我们会发现这种算法的时间复杂度为O(N^2),其主要需要进行的操作就是数组的合并,以及之后的数据查找操作。原创 2024-05-06 16:17:30 · 588 阅读 · 0 评论 -
常用算法——双指针算法
所谓的双指针算法看似十分的神秘,但是实质上就是两个标志查找元素的变量。双指针既可以是我们平常最常说的指针(类似int *类型的数据),也可以是数组的下标。因为对于一个数组数据的查找,通过下标我们照样可以找到相应的数据。而我们最经常说到的算法当中的指针并不是平常所说的指针,而是类似于数组下标之类的,方便于查找对应的数据的值。而双指针算法就是通过两个“指针”方便我们查找对应的数据以达到对应要求的算法。原创 2024-04-14 13:37:02 · 1147 阅读 · 0 评论 -
leetcode刷题系列(一)
为了优化我们的程序,我们在这里向大家介绍一个方法:对于有序的二维数组我们可以将右上角的元素作为标记元素,将我们目标元素和他作比较,如果右上角的元素小于我们的目标元素就可以删除一行的元素,(右上角的元素是本行最大的元素)。如果右上角的元素大于我们的目标元素就可以删除一列的元素,(右上角的元素是本列最小的元素)。但是我们会发现我们数据的总检查的次数为1+2+...+(n-1)+n我们的时间复杂度还是O(N^2),我们所进行的效果很小,算法的时间复杂度还是属于N^2级别的,所以我们还需要思考其他的方法。原创 2024-04-14 13:35:30 · 1072 阅读 · 0 评论