我应该以尽可能低的时间复杂度来解决这个问题,但让我更具体一些。
给您一个包含重复项的排序整数数组。
唯一四元组是四个索引的集合。这些索引下的数组中的元素之和必须为给定值 X。例如:
给定一个数组 [10, 20, 30, 40] 且 X = 100,则只有一个四元组:(0, 1, 2, 3)。
给定一个数组 [0, 0, 0, 0, 0] 且 X = 0,则有 5 个四元组: (0, 1, 2, 3), (0, 1, 2, 4), (0, 1, 3 , 4), (0, 2, 3, 4), (1, 2, 3, 4)。
互联网上有很多 N^3 解决方案,但这些解决方案是针对值而不是索引的唯一四元组。在这些解决方案中,示例 1 仍仅给出一个四元组:(10, 20, 30, 40),但示例 2 只给出一个四元组 (0, 0, 0, 0),而不是其中的五个。
我找不到一个 O(N^3) 解决方案来代替另一个解决我的问题。我可以轻松地编写一个在 O(N^3logN) 时间内解决该问题的程序。我还听说这个问题的复杂度下限据称是未知的。是否有已知的 O(N^3) 解决方案?
我所知道的解决方案:
明显朴素的方法 O(N^4):
int solution(int arr[], int arrSize, int X){ …Run Code Online (Sandbox Code Playgroud)