18. 四数之和
时间:2019-08-25
本文章向大家介绍18. 四数之和,主要包括18. 四数之和使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。
注意:
答案中不可以包含重复的四元组。
示例:
给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。
满足要求的四元组集合为:
[
[-1, 0, 0, 1],
[-2, -1, 1, 2],
[-2, 0, 0, 2]
]
/* 解题思路: 解法的思路跟 3Sum 基本没啥区别,就是多加了一层 for 循环 注意去重处理 */ #include<iostream> #include<vector> #include<algorithm> using namespace std; class Solution { public: vector<int> ns; vector<vector<int>> ans; bool isok(vector<vector<int>> ans, int i, int j, int k) { for (int u = 0; u < ans.size(); u++) { if (i == ans[u][0] && j == ans[u][1] && k == ans[u][2]) return false; } return true; } vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); int N = nums.size(); for (int i = 0; i < N - 3; i++) for (int j = i + 1; j<N - 2; j++) for (int k = j + 1; k <= N - 1; k++) for (int l = k + 1; l<N; l++) if (nums[i] + nums[j] + nums[k] + nums[l] == target) { if (isok(ans, nums[i], nums[j], nums[k])) { ns.push_back(nums[i]); ns.push_back(nums[j]); ns.push_back(nums[k]); ns.push_back(nums[l]); ans.push_back(ns); ns.clear(); } } return ans; } }; int main(){ vector<int>nums; int target; cin >> target; int a[1000]; int i = 0; int x; while (cin >> a[i]) { x = cin.get(); if (x == '\n') break; nums.push_back(a[i]); ++i; } vector<vector<int>>A = Solution().fourSum(nums, target); for (int i = 0; i < A.size(); i++) for (int j = 0; j < A[0].size(); j++) cout << A[i][j] << " "; cout << endl; system("pause"); return 0; }
原文地址:https://www.cnblogs.com/277223178dudu/p/11407139.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 常见6种WAF绕过和防护原理
- 2020-mac 安装jdk1.8
- AWVS acunetix_WVS13的基础使用
- 为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?
- docker安装伏羲扫描器fuxi-scanner
- 基于深度学习的文本分类应用!
- 表驱动法
- mysql将表结构导出excel
- 为什么会是Docker?
- 浅析http报文
- MySQL explain 中的 rows 究竟是如何计算的?
- SwiftUI: 使用 Touch ID 和 Face I
- Linux 系统中查找正在运行的进程的完整命令、当前工作目录等信息的方法
- Go by Example 中文:通道方向
- mycat数据库集群系列之mysql主从同步设置