Given an integer array A, and an integer target, return the number of tuples i, j, k such that i < j < k and A[i] + A[j] + A[k] == target.
As the answer can be very large, return it modulo 10^9 + 7.
Example 1:
Input: A= [1,1,2,2,3,3,4,4,5,5], target=8Output: 20Explanation: Enumeratingbythevalues (A[i], A[j], A[k]): (1, 2, 5) occurs8times; (1, 3, 4) occurs8times; (2, 2, 4) occurs2times; (2, 3, 3) occurs2times.
Example 2:
Input: A= [1,1,2,2,2,2], target=5Output: 12Explanation: A[i] =1, A[j] =A[k] =2occurs12times: Wechooseone1from [1,1] in2ways, andtwo2sfrom [2,2,2,2] in6ways.
Note:
- 3 <= A.length <= 3000
- 0 <= A[i] <= 100
- 0 <= target <= 300
这道题是第 15 题的升级版。给出一个数组,要求找到 3 个数相加的和等于 target 的解组合的个数,并且要求 i < j < k。解的组合个数不需要去重,相同数值不同下标算不同解(这里也是和第 15 题的区别)
这一题大体解法和第 15 题一样的,只不过算所有解组合的时候需要一点排列组合的知识,如果取 3 个一样的数,需要计算 C n 3,去 2 个相同的数字的时候,计算 C n 2,取一个数字就正常计算。最后所有解的个数都加起来就可以了。