找出四倍数

时间:2019-11-23 13:23:26

标签: arrays algorithm logic dynamic-programming sub-array

在此问题中,您将获得N个正整数S [1],S [2],…,S [N]的序列。另外,给定整数T,目标是找到四倍数(i,j,k,l),这样1 <= i

我一直在努力寻找解决上述问题的有效方法,但我无法给出任何答案。高度赞赏能够解决此类问题以及伪代码(和必要的解释)的策略。

1 个答案:

答案 0 :(得分:1)

无论T是多少,都可以在O(N^2 log N)中解决:

  1. 首先创建由不同索引对组成的新数组,并存储所有索引对。
  2. 按总和值对新数组进行排序(即,对{1,2}的值为A[1]+A[2],其中A是原始数组)
  3. 现在问题已简化为2SUM问题的某种变体,可以通过here进行一些修改轻松解决:我们还需要检查所有4个索引是否唯一

如果T足够小,我们也可以做一些knapsack DP来解决O(NT)