当前位置:网站首页>[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;
}
边栏推荐
- Feature of sklearn_ extraction. text. CountVectorizer / TfidVectorizer
- PT OSC deadlock analysis
- E-commerce data analysis -- salary prediction (linear regression)
- [Red Treasure Book Notes simplified version] Chapter 12 BOM
- 程序员老鸟都会搞错的问题 C语言基础 指针和数组
- Esp8266 uses Arduino to connect Alibaba cloud Internet of things
- (三)R语言的生物信息学入门——Function, data.frame, 简单DNA读取与分析
- How to add music playback function to Arduino project
- Detailed explanation of Union [C language]
- Symbolic representation of functions in deep learning papers
猜你喜欢
![[esp32 learning-2] esp32 address mapping](/img/ee/c4aa0f7aed7543bb6807d7fd852c88.png)
[esp32 learning-2] esp32 address mapping

JS variable types and common type conversions

Esp8266 connect onenet (old mqtt mode)

Arm pc=pc+8 is the most understandable explanation

ARM PC=PC+8 最便于理解的阐述

ES6 grammar summary -- Part 2 (advanced part es6~es11)

ESP learning problem record

Générateur d'identification distribué basé sur redis

VSCode基础配置

Kaggle competition two Sigma connect: rental listing inquiries
随机推荐
(五)R语言入门生物信息学——ORF和序列分析
Kconfig Kbuild
The first simple case of GNN: Cora classification
[Red Treasure Book Notes simplified version] Chapter 12 BOM
JS变量类型以及常用类型转换
A possible cause and solution of "stuck" main thread of RT thread
Keyword inline (inline function) usage analysis [C language]
Cannot change version of project facet Dynamic Web Module to 2.3.
AMBA、AHB、APB、AXI的理解
Redis cache update strategy, cache penetration, avalanche, breakdown problems
Page performance optimization of video scene
Imgcat usage experience
关于Gateway中使用@Controller的问题
[leetcode622]设计循环队列
Important methods of array and string
Whistle+switchyomega configure web proxy
Priority inversion and deadlock
Postman 中级使用教程【环境变量、测试脚本、断言、接口文档等】
Detailed explanation of Union [C language]
嵌入式启动流程