当前位置:网站首页>LeetCode1_ Sum of two numbers
LeetCode1_ Sum of two numbers
2022-07-07 15:42:00 【WhiteTian】
Original article , Reprint please indicate the source .
Topic type : Simple type
C++ Explain Sum of two numbers
The title is as follows
Given an array of integers nums And an integer target value target, Please find... In the array And is the target value target the Two Integers , And return their array subscripts .
You can assume that each input corresponds to only one answer . however , The same element in the array cannot be repeated in the answer .
You can return the answers in any order .
Example 1:
Input :nums = [2,7,11,15], target = 9
Output :[0,1]
explain : because nums[0] + nums[1] == 9 , return [0, 1] .
Example 2:
Input :nums = [3,2,4], target = 6
Output :[1,2]
Example 3:
Input :nums = [3,3], target = 6
Output :[0,1]
Tips :
2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
There will only be one valid answer
Advanced : You can come up with a time complexity less than O(n2) The algorithm of ?
solution 1
The first is the easiest to think of , Ideas : Two layers of for loop , Enumerate all the situations , Find subscript .
But the time complexity is O(n^2), Spatial complexity O(1)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
for (int i = 0; i < nums.size() - 1; i++)
{
for (int j = i + 1; j < nums.size(); j++)
{
if (nums[i] + nums[j] == target)
{
return {
i, j };
}
}
}
return {
};
}
};
See the above Time complexity O(n^2), n= The length of the array , The space complexity is O(1)
leetcode Execution score of
Then I thought of trading space for time , So there is a second solution
solution 2
Ideas : Use one map/unordered_map, here unordered_map be better than map, Then it will traverse once vector, In the process of traversal, each value is 8 reduce ,
Then judge what is after subtraction , Then take the number after subtraction map Of key Inside looking for .
If you find , So we found , The first subscript is map This key Corresponding value(key save vector Value ,value Save subscript );
On the contrary, if it is not found , take vector[i] Add to map Of key On ,value yes i.
map Achieved Red and black trees
Time complex reading O(logn), because map Lookup 、 Delete 、 Increase the time complexity of a series of operations such as stable , All for logn
Complex reading space O(n)
unordered_map Achieved Hashtable
Time complex reading O(c-n), lookup 、 Delete 、 It's fast to add , The time complexity is constant O
Complex reading space O(n)
because unordered_map Internally based on hash table , With (key,value) Store in the form of pairs , So the occupancy rate is high Unordered_map Lookup 、 Delete 、 The added time complexity is unstable , Average is O, Depending on the hash function . In extreme cases it could be O(n)
Look at the diagram
Code implementation map Of
class Solution {
public:
// The second solution .key=value value=index
vector<int> twoSum(vector<int>& nums, int target) {
std::map<int, int> contentmap;
for (int i = 0; i < nums.size(); i++)
{
int less = target - nums[i];
map<int, int>::iterator iter;
iter = contentmap.find(less);
if (iter != contentmap.end())
{
return {
contentmap[less], i };
}
else
{
contentmap[nums[i]] = i;//.insert(pair(nums[i], i));
}
}
return {
};
}
};
Code implementation unordered_map Of , This solution is better than that based on map Solution
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int n = nums.size();
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
if (nums[i] + nums[j] == target) {
return {
i, j};
}
}
}
return {
};
}
};
leetcode Execution score of
I hope I can work out a better solution
thank you , It's not easy to create , Great Xia, please stay … Move your lovely hands , Give me a compliment before you go <( ̄︶ ̄)>
边栏推荐
- Gd32 F3 pin mapping problem SW interface cannot be burned
- Create lib Library in keil and use lib Library
- 写一篇万字长文《CAS自旋锁》送杰伦的新专辑登顶热榜
- Detailed explanation of Cocos creator 2.4.0 rendering process
- Getting started with webgl (3)
- A need to review all the knowledge, H5 form is blocked by the keyboard, event agent, event delegation
- Zhongang Mining: Fluorite continues to lead the growth of new energy market
- 【数字IC验证快速入门】24、SystemVerilog项目实践之AHB-SRAMC(4)(AHB继续深入)
- 知否|两大风控最重要指标与客群好坏的关系分析
- How to release NFT in batches in opensea (rinkeby test network)
猜你喜欢
Keil5 does not support online simulation of STM32 F0 series
【跟着江科大学Stm32】STM32F103C8T6_PWM控制直流电机_代码
[make a boat diary] [shapr3d STL format to gcode]
With 8 modules and 40 thinking models, you can break the shackles of thinking and meet the thinking needs of different stages and scenes of your work. Collect it quickly and learn it slowly
众昂矿业:萤石继续引领新能源市场增长
一大波开源小抄来袭
[quick start of Digital IC Verification] 24. AHB sramc of SystemVerilog project practice (4) (AHB continues to deepen)
[server data recovery] data recovery case of raid failure of a Dell server
【数字IC验证快速入门】29、SystemVerilog项目实践之AHB-SRAMC(9)(AHB-SRAMC SVTB Overview)
Implementation of crawling web pages and saving them to MySQL using the scrapy framework
随机推荐
【跟着江科大学Stm32】STM32F103C8T6_PWM控制直流电机_代码
[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper
Nacos conformance protocol cp/ap/jraft/distro protocol
摘抄的只言片语
MySQL bit类型解析
Nacos一致性协议 CP/AP/JRaft/Distro协议
从 1.5 开始搭建一个微服务框架链路追踪 traceId
Steps to create P8 certificate and warehousing account
Do not use memset to clear floating-point numbers
【原创】一切不谈考核的管理都是扯淡!
[机缘参悟-40]:方向、规则、选择、努力、公平、认知、能力、行动,读3GPP 6G白皮书的五层感悟
Unity之ASE实现全屏风沙效果
[server data recovery] data recovery case of raid failure of a Dell server
MySQL bit type resolution
Yunxiaoduo software internal test distribution test platform description document
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
避坑:Sql中 in 和not in中有null值的情况说明
Cocos makes Scrollview to realize the effect of zooming in the middle and zooming out on both sides
使用cpolar建立一个商业网站(2)
[target detection] yolov5 Runtong voc2007 data set