当前位置:网站首页>[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;
}
边栏推荐
猜你喜欢

Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports

(5) Introduction to R language bioinformatics -- ORF and sequence analysis

Redis cache update strategy, cache penetration, avalanche, breakdown problems

Amba, ahb, APB, Axi Understanding

VSCode基础配置

STM32 how to locate the code segment that causes hard fault

程序员老鸟都会搞错的问题 C语言基础 指针和数组

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

(4) Data visualization of R language -- matrix chart, histogram, pie chart, scatter chart, linear regression and strip chart

js题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
随机推荐
(1) Introduction Guide to R language - the first step of data analysis
Mp3mini playback module Arduino < dfrobotdfplayermini H> function explanation
基于Redis的分布式锁 以及 超详细的改进思路
Esp8266 connect onenet (old mqtt mode)
HCIP Day 12
Who says that PT online schema change does not lock the table, or deadlock
Basic operations of databases and tables ----- classification of data
Redis 缓存更新策略,缓存穿透、雪崩、击穿问题
数据库课程设计:高校教务管理系统(含代码)
Bubble sort [C language]
(五)R语言入门生物信息学——ORF和序列分析
Keyword inline (inline function) usage analysis [C language]
vim命令行笔记
如何给Arduino项目添加音乐播放功能
Conditional probability
Kconfig Kbuild
程序员老鸟都会搞错的问题 C语言基础 指针和数组
ORA-02030: can only select from fixed tables/views
VSCode基础配置
Missing value filling in data analysis (focus on multiple interpolation method, miseforest)