博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode——18.4Sum
阅读量:3528 次
发布时间:2019-05-20

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

1. 概述

1.1 题目

Given an array S of n integers, are there elements abc, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.

Note: The solution set must not contain duplicate quadruplets.

For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0.A solution set is:[  [-1,  0, 0, 1],  [-2, -1, 1, 2],  [-2,  0, 0, 2]]

1.2 解题思路

这道题中需要的是在一个数组中需找四个数字使得他们的和等于目标值。这道题相比于之前的问题其实是一样的,我们可以套用3Sum的思路来解题。这里可以将目标值减去第一个数,那么这样的情况就变成了3Sum问题了。

2.  编码

class Solution {public:    vector
> fourSum(vector
& nums, int target) { int len(nums.size()); vector
> value; sort(nums.begin(), nums.end()); if(len < 4) return value; if(nums[0]==nums[len-1] && 4==len && target==nums[0]*4) { value.push_back(nums); return value; } int left(0), right(0); for(int i=0; i
0 && nums[i]==nums[i-1]) continue; for(int k=i+1; k
i+1 && nums[k]==nums[k-1]) continue; int temp = target - nums[i] - nums[k]; int left = k+1; int right = len-1; while(left
n(4,0); n[0] = nums[i]; n[1] = nums[k]; n[2] = nums[left]; n[3] = nums[right]; value.push_back(n); while(left

转载地址:http://efkhj.baihongyu.com/

你可能感兴趣的文章
MySQL笔记
查看>>
计算机运算方法之(原码 补码 反码 移码)
查看>>
计算机组成原理之(二进制与十进制互相转换,数的定点表示与浮点数表示)例题:设浮点数字长16位,其中阶码5位(含有1位阶符),尾数11位(含有1位数符)
查看>>
冒泡排序及其优化
查看>>
选择排序(java代码实现)
查看>>
插入排序
查看>>
哈夫曼树java代码实现
查看>>
快速排序
查看>>
vue路由高亮的两种方式
查看>>
vue router 报错: Uncaught (in promise) NavigationDuplicated {_name:""NavigationDuplicated"... 的解决方法
查看>>
vue跳转页面的两种方式
查看>>
存储器题目解析(持续更新中....)
查看>>
存储器知识要点
查看>>
Cache模拟器的实现
查看>>
实验2:MIPS指令系统和MIPS体系结构
查看>>
设计模式七大原则
查看>>
手写 | spring事务
查看>>
AndroidStudio Gradle手动下载
查看>>
SpringBoot入门(二)场景启动器
查看>>
SpringBoot入门--自动配置
查看>>