博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 18. 4Sum
阅读量:6695 次
发布时间:2019-06-25

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

18. 4Sum

 
QuestionEditorial Solution
 
 
  • Total Accepted: 82006
  • Total Submissions: 333565
  • Difficulty: Medium

 

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]]

 

 to see which companies asked this question

Hide Tags
 
  
Show Similar Problems
 
 
题意以及题解转自:

【题意】

 

给定n个整数的数组S,是否在 数组S中有元素a,b,c,d,使得a + b + c + d = target?在数组中找出独一无二的四元素组,使得他们之和为target。

注意:

在四元素组(a,b,c,d)中,必须满足非递减排序。 (即a≤b≤c≤d)

该解决方案集中一定不能包含重复的四元素组。

【分析】

 

  1. 对数组排序
  2. 确定四元数中的前两个(a,b)
  3. 遍历剩余数组确定两外两个(c,d),确定cd时思路跟确定后两个数据一样,二分查找左右逼近。
  4. 在去重时采用set集合
 
1 class Solution { 2 public: 3     vector
> fourSum(vector
& nums, int target) { 4 vector
> ans; 5 int sz = nums.size(); 6 int i,j,sum2,te; 7 int left,right; 8 set
>s; 9 vector
tmp;10 sort(nums.begin(),nums.end() );11 for(i = 0;i < sz - 3;i++) {12 if(i != 0 && nums[i] == nums[i - 1]) continue;13 for(j = i + 1;j < sz - 2;j++) {14 if(j != i + 1 && nums[j] == nums[j - 1]) continue;15 sum2 = nums[i] + nums[j];16 left = j + 1;right = sz - 1;17 while(left < right) {18 te = sum2 + nums[left] + nums[right];19 if(te == target) {20 tmp.clear();21 tmp.push_back(nums[i]);tmp.push_back(nums[j]);tmp.push_back(nums[left]);tmp.push_back(nums[right]);22 s.insert(tmp);23 left++;right--;24 }25 else if(te < target) {26 left++;27 }28 else{29 right--;30 }31 }32 }33 }34 set< vector
>::iterator it;35 for(it = s.begin();it != s.end();it++) {36 ans.push_back(*it);37 }38 return ans;39 }40 };

 

转载于:https://www.cnblogs.com/njczy2010/p/5745562.html

你可能感兴趣的文章
mysql 安装使用过程中的问题与解决
查看>>
Java面试题之四 (转)
查看>>
并发编程之ThreadLocal、Volatile、synchronized、Atomic关键字扫盲
查看>>
yii2控制台执行
查看>>
Spring Boot Scheduler 定时任务 Quartz 集群 Culster 2种实现方式
查看>>
关于织梦自带的函数ShowMsg()函数的使用方法
查看>>
企业级框架 QUI 推荐
查看>>
窥探 Swift 之 函数与闭包的应用实例
查看>>
DOS 批处理命令笔记
查看>>
height()内容自适应,超出显示滚动条
查看>>
MySql模糊查询like通配符
查看>>
JDBC连接数据库步骤
查看>>
Shell脚本监控服务器pts登录情况记录为日志并邮件通知【CentOS 6.5】
查看>>
[leetcode] Jump Game II
查看>>
DATE_FORMAT()函数实战
查看>>
内核同步-锁机制
查看>>
iOS开发技巧(系列十四:iOS7导航栏和iOS6的区别)
查看>>
家用灯的亮度
查看>>
设计模式--FACADE
查看>>
wsdl
查看>>