当前位置:网站首页>[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;
}
边栏推荐
- ES6语法总结--下篇(进阶篇 ES6~ES11)
- [esp32 learning-1] construction of Arduino esp32 development environment
- MySQL時間、時區、自動填充0的問題
- Page performance optimization of video scene
- Selective sorting and bubble sorting [C language]
- [offer78]合并多个有序链表
- 单片机蓝牙无线烧录
- Use of lists
- 2022.2.12 resumption
- Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
猜你喜欢
Problèmes avec MySQL time, fuseau horaire, remplissage automatique 0
AMBA、AHB、APB、AXI的理解
JS数组常用方法的分类、理解和运用
Time slice polling scheduling of RT thread threads
Redis based distributed ID generator
ES6语法总结--下篇(进阶篇 ES6~ES11)
MySQL takes up too much memory solution
JS function promotion and declaration promotion of VaR variable
ES6 grammar summary -- Part 2 (advanced part es6~es11)
Priority inversion and deadlock
随机推荐
ES6语法总结--上篇(基础篇)
Gateway fails to route according to the service name, and reports an error service unavailable, status=503
ARM PC=PC+8 最便于理解的阐述
History object
MySQL replacement field part content
(四)R语言的数据可视化——矩阵图、柱状图、饼图、散点图与线性回归、带状图
【ESP32学习-2】esp32地址映射
Arduino gets the length of the array
记一次云服务器被密码爆破的经历——关小黑屋、改密码、改端口
Talking about the startup of Oracle Database
. elf . map . list . Hex file
JS变量类型以及常用类型转换
Esp8266 connects to onenet cloud platform (mqtt) through Arduino IDE
JS變量類型以及常用類型轉換
MySQL time, time zone, auto fill 0
Esp8266 connect onenet (old mqtt mode)
Detailed explanation of Union [C language]
E-commerce data analysis -- salary prediction (linear regression)
Problèmes avec MySQL time, fuseau horaire, remplissage automatique 0
[offer78]合并多个有序链表