本文共 645 字,大约阅读时间需要 2 分钟。
写在前面的话
最近在刷LeetCode的时候,遇到了KSum问题。这里就总结一下,以防自己以后忘记了。 首先,KSum涉及的问题大部分是2Sum、3Sum、4Sum,这里举例说一下2Sum和3Sum。 2Sum 1、先将拿到的数值排序 2、逐个取出小于等于0的数,然后在该数的右边查找,是否存在一个数,等于它的相反数。3Sum
1、先将拿到的数值排序 2、逐个取出小于等于0的数,然后在该数的右边设置两个指针,头指针指向右边第一个数,尾指针指向最后一个数。然后比较两个指针相加的和是否等于该数的相反数。KSum问题的总结
这里我觉得当问题遇到瓶颈的时候,递归会是一种不错的选择。
1、先将输入的数组进行排序 2、逐个取出一个个数x,这里是N。 3、然后要做的就是寻找(K-1)Sum问题,并且相加之和是-x; 4、递归下去,最后就是查找2Sum,记住这里2Sum是两个指针一前一后扫描,所以也是N。所以最后的时间复杂度是N^(k-1)