当前位置:   article > 正文

代码随想录刷题思路与心得06|454. 383. 15. 18._代码随想录怎么刷题java

代码随想录怎么刷题java

454.四数相加Ⅱ

        本题希望求四个相加为0的全部组合,但是这个题目和四数之和是不一样的,这个给了四个不同的list,并且他们长度相同。这就使得题目变得更简单了。直接看四数之和可能有些无从下手,但是如果题目只有nums1,nums2两个list,大家肯定都会做,就是遍历一下nums1,看看0-nums1里面的数是不是在nums2里面。那么四数之和其实和这个思路一样。我们可以把两个数的和看成一个数,这样四数之和就变成两个两数之和之和。那么首先就要计算两数之和,这个两个循环就可以完成。当我们计算完两数之和之后,我们要将结果存下来,成为新的一个nums。此时要用到哈希!我们既可以存下来和的数值,也可以存下来得到这个和的组合数量。那么后续判断就和两数之和一样了。题解如下:

 383.赎金信

        这道题思路非常明确,只要ransomNote是magazine的子集即可。那么实现的话,如果ransomNote和magazine的交集是ransomNote本身的话,就说明是它子集。为了能使用逻辑运算符,这里可以直接用Counter类。题解如下:

 

15. 三数之和 

        这道题难点在于不重复,这个和之前两数之和就完全不一样了。想要不重复,就得保证每次判断的就不会在后面再出现了。如果是两数之和,会简单许多。那么假设这道题是全部不重复的两数之和。求和本身很简单,就是难在不重复,那么如何保证不重复呢。就需要数组本身有一定规律性,让我们知道哪些找了,哪些没找。而排序就是一个最直观的提供规律的方法,因此之后看到不重复字样可以首选排序(前提是索引值没意义)。那么排序后,如果一个小的值判断完了,后面全部等于它的就都不用考虑了,一直到下一个大于他的才值得考虑。并且排序后,我们不必再担心第二个数等于第一个数而第一个数等于第二个数发生的重复了,因为大小顺序固定,必定不会重复。此时两数之和就解决了,但是在三数之和中,多了一个数字。那么我们可以先定下来一个数字,把问题变成两数之和,就可以了。那么具体做法就是先排序,然后固定一个数(遍历它)然后在剩下的里面做两数之和即可。题解如下:

18. 四数之和

 

会了三数之和,四数之和就简单多了。我们现在已经会做三数之和问题了,那么四数之和只需要固定其中一个数(遍历它)然后在剩下的里面做三数之和就好了。具体题解如下:

 

其它:

学习时长:3h

学习心得:再次巩固一些边界问题

学习链接:四数相加Ⅱ, 赎金信, 三数之和, 四数之和

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/618852
推荐阅读
相关标签
  

闽ICP备14008679号