LeetCode-15. 3Sum [C++]
2021/12/25 17:10:15
本文主要是介绍LeetCode-15. 3Sum [C++],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
LeetCode-15. 3Sumhttps://leetcode.com/problems/3sum/
题目描述
Given an array nums
of n integers, are there elements a, b, c in nums
such that a + b + c= 0? Find all unique triplets in the array which gives the sum of zero.
Note:
The solution set must not contain duplicate triplets.
Example:
Given array nums = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
[-1, 0, 1],
[-1, -1, 2]
]
解题思路
【C++解法】
class Solution { public: vector<vector<int>> threeSum(vector<int> &nums) { vector< vector<int>> res; if(nums.size()<3) return res; sort(nums.begin(),nums.end()); if(nums.front()>0 || nums.back()<0) return res; for(int i=0; i<nums.size()-2; ++i) { auto target = 0-nums[i]; if(nums[i]+nums[i+1]>target) break; if(nums[nums.size()-1]+nums[nums.size()-2]<target) continue; int front = i+1, back = nums.size()-1; while(front<back) { auto sum = nums[front]+nums[back]; if(sum<target) front++; else if(sum>target) back--; else { res.push_back(vector<int>{nums[i],nums[front++],nums[back--]}); while(front<back && nums[front-1]==nums[front]) front++; while(front<back && nums[back+1]==nums[back]) back--; } } while(i<nums.size()-2 && nums[i]==nums[i+1]) i++; } return res; } };
这篇关于LeetCode-15. 3Sum [C++]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain