leetcode two nums c++实现
来源:互联网 发布:mac用什么浏览器 编辑:程序博客网 时间:2024/06/06 20:00
先直接粘贴原题:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
翻译成中文意思是:从给定数列nums找两个数相加和为给定的另一个数target。
第一遍想到的当然是两个for循环,对每一个数与另一个数相加若得到答案返回。
这个算法的时间复杂度是o(n*n),显然,真是在面试时给面试官这答案,估计就可以直接联系下家了吧。
第二次想到了用map,因为map的匹配时间复杂度是o(1),所以呢,先已<.nums[i],i>的格式将nums所有数放在map中,再一个个遍历,所要的时间复杂度为o(n),当然空间要求更多了也为o(n)。
当然这个方法有个改进的版本,就是在第一遍塞map的过程中就可以先匹配,如果匹配不到再塞进map中,就更加快速了。
这里直接放改进后的代码:
class Solution {public: vector<int> twoSum(vector<int>& nums,int target){ vector<int> results; map<int,int> compiler ; int added = 0; for(int i=0;i<nums.size();i++){ added = target - nums[i]; if(compiler.count(added)&&compiler[added]!=i){ results.push_back(compiler[added]); results.push_back(i); return results; } compiler.insert(pair<int,int>(nums[i],i)); } return results; }};
最后说一下第一次做leetcode的感触,直接在上面敲代码发现没有IDE的帮助很容易不记得一些常用方法,比如我总是把nums.size()记成nums.length(),以及各种错字或者语法的错误比比皆是。感触颇深,觉得要加强这方面的训练。
- leetcode two nums c++实现
- LeetCode(2) Add Two Nums
- Add Two Nums
- Add Two Nums
- leetcode_add two nums
- LeetCode--Valiad Phone Nums
- 每天一道LeetCode-----对序列进行排序,要求nums[0] < nums[1] > nums[2] < nums[3] ....
- [LeetCode]1 Two Sum(C++,Python实现)
- C实现 LeetCode->Add Two Numbers
- 【Leetcode】【Python】【C++】1. Two Sum实现
- LeetCode-1-Two Sum(C语言实现)
- LeetCode 1. Two Sum(c语言实现)
- [LeetCode]2 Median of Two Sorted Arrays (C++,Python实现)
- [LeetCode]4 Add Two Numbers(C++,Python实现)
- LeetCode 2. Add Two Numbers (C++/python/js实现)
- LeetCode 之 Add Two Numbers — C 实现
- leetcode 2. Add Two Numbers C语言实现
- 【LeetCode】【Python】【C++】2. Add Two Numbers代码实现
- Spark的运行架构
- GitBook 安装配置 & 导出PDF
- 前端和后端交互的一些细节
- Redis启动后杂项基础知识讲解
- PAT (Advanced) 1011. World Cup Betting (20)
- leetcode two nums c++实现
- 算法时间复杂度中O(logN)的底数是多少
- HDU 6205 card card card
- c语言头文件stdlib.h的详细介绍
- 169. Majority Element 分治解法
- JavaScript 计时事件[setInterval(),setTimeout()]
- 376. Wiggle Subsequence
- hadoop集群配置无密码登陆 启动关闭namenode输入密码的解决方法
- 【MYSQL】基础SQL语句总结(三)筛选记录基本用法