当前位置:网站首页>[leetcode15] sum of three numbers
[leetcode15] sum of three numbers
2022-07-06 12:24:00 【Vigorous waist Nuo dance】
Personally to , For record review only
Double pointer
problem
Give you one containing n Array of integers nums, Judge nums Are there three elements in a,b,c , bring a + b + c = 0 ? Please find out all and for 0 Triple without repetition .
Be careful : Answer cannot contain duplicate triples .
Example 1:
Input :nums = [-1,0,1,2,-1,-4]
Output :[[-1,-1,2],[-1,0,1]]
Example 2:
Input :nums = []
Output :[]
Example 3:
Input :nums = [0]
Output :[]
Tips :
0 <= nums.length <= 3000
-105 <= nums[i] <= 105
source : Power button (LeetCode)
link :https://leetcode.cn/problems/3sum
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
vector<vector<int>> threeSum(vector<int>& nums) {
/* * The title gives an array . Ask Mei to cite the combination of all three numbers that add up to zero . And the combination cannot be repeated . * If you use triple loop enumeration directly . Additional judgment is needed to determine whether the combinations are repeated . * If you're right first nums Sort . The three numbers required to be enumerated are a<=b<=c. Then you can avoid repetition . */
sort(nums.begin(), nums.end());
/* obtain nums size . About to start enumerating .*/
int size = nums.size();
// Store results
vector<vector<int>> ans;
for (int first = 0; first < size; first++) {
// stay first=n-1 When . Can't open the second one for loop .
/* In order to avoid the repetition of the combination of Meiju */
if (first > 0 && nums[first] == nums[first - 1])
continue;
/* The goal is that the sum of three numbers equals zero . Then, along with second This subscript is getting bigger .third It's getting smaller . * Start with two pointers . Initialize first third */
int third = size - 1;
for (int second = first + 1; second < size; second++) {
/* Or to avoid the repetition of the combination of Meiju */
if (second > first + 1 && nums[second] == nums[second - 1])
continue;
/* Or first avoid the repetition of the combination */
while (third > second && third < size - 1 && nums[third] == nums[third + 1])
third--;
/* If the conditions are not met , Continue to move left third*/
while (third > second && nums[third] + nums[second] > -nums[first])
third--;
/* When double pointers overlap .second If the pointer continues to move to the right . It won't satisfy the meaning of the topic anymore * however first You can also continue to move right . */
if (third == second)
break;
if (nums[third] + nums[second] == -nums[first])
/* initialization vector<int> An easy way to use {1,2,3}*/
ans.push_back({
nums[first],nums[second],nums[third] });
/* The case of less than does not need to be considered . Keep moving right second It can be solved */
}
}
return ans;
}
边栏推荐
- (5) Introduction to R language bioinformatics -- ORF and sequence analysis
- 1081 rational sum (20 points) points add up to total points
- Esp8266 uses Arduino to connect Alibaba cloud Internet of things
- . elf . map . list . Hex file
- vim命令行笔记
- ESP学习问题记录
- gcc 编译选项
- [Nodejs] 20. Koa2 onion ring model ----- code demonstration
- AMBA、AHB、APB、AXI的理解
- [esp32 learning-1] construction of Arduino esp32 development environment
猜你喜欢

Basic operations of databases and tables ----- modifying data tables
![Detailed explanation of Union [C language]](/img/d2/99f288b1705a3d072387cd2dde827c.jpg)
Detailed explanation of Union [C language]

Whistle+switchyomega configure web proxy

JS正则表达式基础知识学习

Walk into WPF's drawing Bing Dwen Dwen

数据库课程设计:高校教务管理系统(含代码)

ES6语法总结--上篇(基础篇)

JS regular expression basic knowledge learning

Basic operations of databases and tables ----- creating data tables

Learning notes of JS variable scope and function
随机推荐
Kconfig Kbuild
Minio文件下载问题——inputstream:closed
[esp32 learning-1] construction of Arduino esp32 development environment
MP3mini播放模块arduino<DFRobotDFPlayerMini.h>函数详解
ES6语法总结--下篇(进阶篇 ES6~ES11)
js 变量作用域和函数的学习笔记
Walk into WPF's drawing Bing Dwen Dwen
(3) Introduction to bioinformatics of R language - function, data Frame, simple DNA reading and analysis
Kaggle competition two Sigma connect: rental listing inquiries
Kconfig Kbuild
ES6 grammar summary -- Part 2 (advanced part es6~es11)
Gravure sans fil Bluetooth sur micro - ordinateur à puce unique
[Offer29] 排序的循环链表
Classification, understanding and application of common methods of JS array
By v$rman_ backup_ job_ Oracle "bug" caused by details
Who says that PT online schema change does not lock the table, or deadlock
Types de variables JS et transformations de type communes
MySQL takes up too much memory solution
C language callback function [C language]
(四)R语言的数据可视化——矩阵图、柱状图、饼图、散点图与线性回归、带状图