18.leetcode题目讲解(Python):四数之和

题目如下:
题目

如果你是按题目顺序进行的练习,那么之前已经多次做个类似的题目了。这类型的题目主要需要注意的地方:

  1. 将给定输入的数据进行排序后可以更方便的寻找答案
  2. 避免无效计算(输入的数据长度过小,数据最大N个数总和小于目标或者数据最小N个数的总和大于目标)
  3. 避免生成重复的答案(跳过 ‘num[i] == num[i – 1]’ ),也可以利用Python的特性,将答案转换为 set 再转换为list来消除重复的答案
  4. 注意索引的范围

我初次编写的时候采用比较容易想到的解法方案,可以打败50.3%的其他代码,如下:

完成了这道题目后,发现网站上 [[zhuyinghua1203]] 利用了递归的思路给出了这类题目通用的解决算法,挺棒,他给出的参考代码如下: