牛客题目链接:不重复打印排序数组中相加和为给定值的所有三元组
Leetcode题目链接:三数之和
牛客题目输入为有序数组,力扣未排序,要求输出结果无重复。
法一:DFS(复杂度为n^3, 超时)
# 牛客解法
inp = input().split()
n, k = int(inp[0]), int(inp[1])
arr = []
inp = input().split()
for i in range(n):
arr.append(int(inp[i]))
res = []
def dfs(tmp, idx):
if len(tmp) == 3:
if sum(tmp) == k:
res.append(tmp)
return
for i in range(idx, len(arr)):
if i > 0 and arr[i] == arr[i-1]:
continue
dfs(tmp+[arr[i]], i+1)
dfs([], 0)
for k in res:
print(k[0], k[1], k[2])
# 力扣解法
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
res = []
n