算法课程Leetcode作业第一周技术博客
来源:互联网 发布:知几是什么意思 编辑:程序博客网 时间:2024/06/17 00:24
算法课程Leetcode作业第一周技术博客
第一周的作业先尝试下easy难度试试水
题目:No.1 Two Sum
概述
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] + nums1 = 2 + 7 = 9,
return [0, 1].**
分析:
题目描述其实很简单,从给定的vector里面找出两个相加等于target的数的下标,将下标存放在整型vector中作为返回值。
最简单的方法就是用两层嵌套的方式遍历所有组合方式,将两个数和target做比较,直到找到正确的位置后结束嵌套循环,这种算法的时间复杂度是
代码:
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int i,j; vector<int> result; for (i = 0; i < nums.size() - 1; i++) { for (j = i + 1; j < nums.size(); j++) { if (nums[i] + nums[j] == target) { result.push_back(i); result.push_back(j); return result; } } } return result; }};
运行结果分析:
这样的算法虽然简单但是运行时间也是较长的,因此我们尝试以下优化算法
算法优化
分析之前的算法,其最耗时的部分就是需要通过两个循环来找到相加为target的数,通常要优化时间复杂度需要牺牲空间,如果我们能只遍历一遍vector,然后找出第二个的数的位置,就能将
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { map<int, int> hash_map; map<int, int>::iterator it; int second; vector<int> final; for (int i = 0; i < nums.size(); i++) { it = hash_map.find(target - nums[i]); //此时i不在map里面,不用担心重复?? if (it == hash_map.end()) { hash_map.insert(pair<int, int>(nums[i], i)); } else { final.push_back(it -> second); final.push_back(i); return final; } } return final; }};
运行结果
阅读全文
0 0
- 算法课程Leetcode作业第一周技术博客
- 算法课程Leetcode作业第四周技术博客
- 算法课程Leetcode作业第二周技术博客
- 算法课程Leetcode作业第三周技术博客
- 第一周博客作业
- 算法分析与设计课程作业第一周#1
- [leetcode] 第一周作业
- 算法第一周作业
- 算法第一周作业
- Leetcode ArrayNesting(第一周作业)
- 第一周作业-算法概论
- 《算法概论》第一周作业
- 算法 第一周课外作业
- 第一周算法概论作业
- 算法第一周作业01
- web技术概论第一周作业
- LeetCode 算法习题 第一周
- 作业——在线学习Android课程之第一周
- 构建私有CA
- 数据与内存中的存储方式
- POJ 1321 棋盘问题(dfs)
- 软件测试阶段
- 文章标题
- 算法课程Leetcode作业第一周技术博客
- [Project] Simulate HTTP Post Request to obtain data from Web Page by using Python Scrapy Framework
- 53.Maximum Subarray
- Linux的使用
- Hibernate的初步认识
- 数组/排序,插入,查找,平均值,最值
- 机器学习——决策树算法
- 对n个数字右移k位
- assertRegex的报错