博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 18. 四数之和
阅读量:4035 次
发布时间:2019-05-24

本文共 1073 字,大约阅读时间需要 3 分钟。

题目描述

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

注意:答案中不可以包含重复的四元组。

示例 1:

输入:nums = [1,0,-1,0,-2,2], target = 0

输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]
示例 2:

输入:nums = [], target = 0

输出:[]

提示:

0 <= nums.length <= 200

-109 <= nums[i] <= 109
-109 <= target <= 109

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/4sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

C++

class Solution {
/* 和15题相同思路,排序,循环遍历,双指针。 时间复杂度O(n^3) */public: vector
> fourSum(vector
& nums, int target) {
vector
> res; if(nums.size()<4) return res; sort(nums.begin(),nums.end()); int len=nums.size(); for(int i=0;i
0 && nums[i]==nums[i-1]) continue; //特殊情况 if(nums[i]+nums[i+1]+nums[i+2]+nums[i+3]>target) break; if(nums[i]+nums[len-1]+nums[len-2]+nums[len-3]
i+1 && nums[j]==nums[j-1]) continue; if(nums[i]+nums[j]+nums[j+1]+nums[j+2]>target) break; if(nums[i]+nums[j]+nums[len-1]+nums[len-2]
你可能感兴趣的文章
gstreamer插件之 videotestsrc
查看>>
autoupdate script
查看>>
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
电平触发方式和边沿触发的区别
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>
移植QT
查看>>
如此调用
查看>>
计算机的发展史
查看>>
带WiringPi库的交叉编译如何处理一
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Spring事务的七种传播行为
查看>>
ES写入找不到主节点问题排查
查看>>
Java8 HashMap集合解析
查看>>
ArrayList集合解析
查看>>