当前位置:网站首页>[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;
}
边栏推荐
- Symbolic representation of functions in deep learning papers
- 1081 rational sum (20 points) points add up to total points
- Arduino get random number
- Gateway fails to route according to the service name, and reports an error service unavailable, status=503
- level16
- Basic operations of databases and tables ----- view data tables
- ESP learning problem record
- Arduino gets the length of the array
- JS变量类型以及常用类型转换
- RT thread API reference manual
猜你喜欢
ESP学习问题记录
Kconfig Kbuild
Esp8266 connect onenet (old mqtt mode)
Expected value (EV)
Basic operations of databases and tables ----- modifying data tables
JS regular expression basic knowledge learning
[Red Treasure Book Notes simplified version] Chapter 12 BOM
Cannot change version of project facet Dynamic Web Module to 2.3.
A possible cause and solution of "stuck" main thread of RT thread
level16
随机推荐
Detailed explanation of truncate usage
Programmers can make mistakes. Basic pointers and arrays of C language
Mysqldump error1066 error solution
Basic operations of databases and tables ----- view data tables
(4) Data visualization of R language -- matrix chart, histogram, pie chart, scatter chart, linear regression and strip chart
HCIP Day 12
Intermediate use tutorial of postman [environment variables, test scripts, assertions, interface documents, etc.]
Priority inversion and deadlock
Arduino gets the length of the array
STM32 how to locate the code segment that causes hard fault
列表的使用
map文件粗略分析
Bubble sort [C language]
[offer9]用两个栈实现队列
Imgcat usage experience
[Leetcode15]三数之和
Variable parameter principle of C language function: VA_ start、va_ Arg and VA_ end
Important methods of array and string
Learning notes of JS variable scope and function
[Offer18]删除链表的节点