这三个题是同类型,可惜我是憨憨。双指针没有完全掌握。mark一下
三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
最接近三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。
这些题的共同点,是需要多次遍历数组,就算采用双指针,最少起码也要近似于O n2 的复杂度。四数那个O n3
首先对原数组排序,再选定一个或者两个数,再采用双指针进行遍历,中间需要对重复元素进行跳过以及若和已经远大于或远小于target时,要及时break,尽可能的优化。