在3sums的基础上加了一层循环。

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(), nums.end());vector<vector<int>> ans;if (nums.size() < 4) return ans;for(unsigned int j = 0;j < nums.size() - 3; j++){if ((j>0) && (nums[j]==nums[j-1]))continue;for (unsigned int i = j+1; i < nums.size()-2; i++){int l = i+1;int r = nums.size() - 1;while(l < r){int sum = nums[i] + nums[l] + nums[r] + nums[j];if (sum > target) r--;else if (sum < target) l++;else if (sum == target){ans.push_back(vector<int>{nums[j], nums[i],nums[l],nums[r]});while(l<r && nums[l] == nums[l+1])l++;while(l<r && nums[r] == nums[r-1])r--;l++;r--;}}while(nums[i] == nums[i+1] && i<nums.size() -2) i++;}}return ans;}
};

转载于:https://www.cnblogs.com/txltxl22/p/10435167.html

leetcode个人题解——#18 4sums相关推荐

  1. LeetCode/LintCode 题解丨一周爆刷双指针:最小范围

    描述 有k个升序排列的数组,寻找一个最小范围,使每个数组中至少有一个元素被包含. 范围[a,b]比范围[c,d]小,当且仅当b-a < d-c,或是a < c且b-a == d-c. 给定 ...

  2. LeetCode/LintCode 题解丨一周爆刷字符串:URL 编码

    描述 给出一个代表网址 host 的字符串 base_url,和代表查询参数的列表 query_params_list,你需要返回带查询参数的完整 URL. 查询参数列表由一些包含两个元素的数组组成, ...

  3. LeetCode/LintCode 题解丨一周爆刷字符串:简化路径

    描述 给定一个文件的绝对路径(Unix-style),请进行路径简化. Unix中, . 表示当前目录, - 表示父目录. 结果必须以 / 开头,并且两个目录名之间有且只有一个 /.最后一个目录名(如 ...

  4. LeetCode/LintCode 题解丨一周爆刷字符串:神奇字符串

    描述 一个神奇字符串S仅包含'1'和'2',并遵守以下规则: 字符串S是神奇的,因为连接字符'1'和'2'的连续出现次数会产生字符串S本身. 字符串S的前几个元素如下:S = "122112 ...

  5. LeetCode/LintCode 题解丨一周爆刷双指针:神奇字符串

    描述 一个神奇字符串S仅包含'1'和'2',并遵守以下规则: 字符串S是神奇的,因为连接字符'1'和'2'的连续出现次数会产生字符串S本身. 字符串S的前几个元素如下:S = "122112 ...

  6. LeetCode/LintCode 题解丨一周爆刷字符串:乱序字符串

    描述 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram). 如果一个字符串是乱序字符串,那么他存在一个字母集合相同. 但顺序不同的字符串也在S中. 所有的字符串都只包含小写字母. 点击查 ...

  7. LeetCode/LintCode 题解丨一周爆刷字符串:旋转字符数组

    描述 给定一个字符数组 s 和一个偏移量,根据偏移量原地旋转字符数组(从左向右旋转). offset >= 0 s 的长度 >= 0 原地旋转意味着需要在函数中更改字符数组 s.你不需要返 ...

  8. LeetCode/LintCode 题解丨一周爆刷双指针: 两数之和

    描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...

  9. LeetCode/LintCode 题解丨一周爆刷分治法:合并两棵二叉树

    描述 给出两棵二叉树,当你用其中一棵覆盖另一棵时,两棵树的一些节点会发生重叠,而其他节点则不会重叠. 您需要将它们合并到一棵新的二叉树中. 合并的规则是如果两个节点重叠,则将节点值加起来作为合并节点的 ...

  10. LeetCode/LintCode 题解丨一周爆刷双指针:寻找重复的数

    描述 给出一个数组 nums 包含 n + 1 个整数,每个整数是从 1 到 n (包括边界). 保证至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 不能修改数组(假设数组只能读) ...

最新文章

  1. 介绍一篇关于session的好文章,写的很详细
  2. java 窗口开始_Java窗口(JFrame)从零开始(3)——绝对布局
  3. 机器学习入门书籍导读-工程高等代数
  4. 浅析HDFS的副本存放策略
  5. CNN 神经网络tricks 学习总结
  6. python基础十一之迭代器和生成器
  7. Linux编译程序时加-I指定头文件位置
  8. PHP文字转语音合成网源码 百度API开发
  9. leetcode - 437. 路径总和 III
  10. (9)vivado ila IP使用示例(学无止境)
  11. java 取上下文路径_取得上下文路径的方式(getContextPath)
  12. 10 年前的我 VS 10 年后的我
  13. php ext_skel,用ext_skel为php开发扩展|待更
  14. Android系统默认Home应用程序(Launcher)的启动过程源代码分析(2)
  15. 浅谈InnoDB存储引擎的MVCC机制
  16. java动图_马上学会!教你一个快速制作GIF动图的方法!
  17. 许鹏:从零开始学习,Apache Spark源码走读
  18. 安卓判断手机GPS是否打开,未打开时跳去手机设置开启GPS的方法
  19. mac os 配置hosts
  20. HMI-33-【运动模式】补上油量表和水温表

热门文章

  1. Java 调用gc语句_Java GC 、引用
  2. 游戏筑基开发之一级指针、二级指针的使用情形(C语言)
  3. 华为 “OSPF” 认证配置
  4. MySQL MHA详解(二)——实战配置
  5. MySQL主从同步(四)——M-M架构配置实战
  6. 在浏览器中进行深度学习:TensorFlow.js (二)第一个模型,线性回归
  7. STL—内存的配置与释放
  8. C# 文件读写系列二
  9. 第二周java基础学习内容
  10. 9--Rails数据交互1