博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode -- 1. two sum
阅读量:6705 次
发布时间:2019-06-25

本文共 1902 字,大约阅读时间需要 6 分钟。

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].

--------------------------------------------------------------------------------------------------------------------------------------------------

1. 暴力搜索,时间复杂度O(n^2),空间复杂度O(1)

class Solution {public:    vector
twoSum(vector
& nums, int target) { vector
res; //sort(nums.begin(), nums.end()); int start = 0, end = 0; for (int i = 0; i < nums.size(); i++){ for (int j = i + 1; j < nums.size(); j++){ if (nums[i] + nums[j] == target){ res.push_back(i); res.push_back(j); return res; } } } }};

 

2.   利用hashtable,其实是c++中的map(由于c++中不存在hash_table,所以没有基于hash_table实现 ),时间复杂度可降至O(nlogn), 但是增加了空间复杂度O(n)

注意的一点是,存入map中的Key 是nums中的值,存入的val是nums中对应的索引。

 

class Solution {public:    vector
twoSum(vector
& nums, int target) { vector
res; int tmp; map
hashtable; for (int i = 0; i < nums.size(); i++){ hashtable[nums[i]] = i; // 首先循环遍历一次将所有的值存入hashtable中 } for (int i = 0; i < nums.size(); i++){ tmp = target - nums[i]; if (hashtable.find(tmp)!= hashtable.end() && hashtable[tmp]!= i){ // 若是能查找到当前值相对于target的补集 res.push_back(i); res.push_back(hashtable[tmp]); return res; } } }};

 

 

转载于:https://www.cnblogs.com/simplepaul/p/7620257.html

你可能感兴趣的文章
HDU2010 水仙花数【进制+趣味程序】
查看>>
1593: [Usaco2008 Feb]Hotel 旅馆
查看>>
dubbo的本地存根(Stub)
查看>>
转://Linux下误删除/home目录的恢复方法
查看>>
HDFS详解
查看>>
2-Add Two Numbers
查看>>
ORACLE学习-3.多表查询
查看>>
app性能测试
查看>>
Oracle Parallel Execution(并行执行)
查看>>
生产者和消费者案例
查看>>
分辨率判断
查看>>
POJ - 1160 Post Office
查看>>
python和shell变量互相传递
查看>>
二叉搜索树转换为有序双向链表
查看>>
jQuery选择器大全
查看>>
在计算机 . 上没有找到服务 WAS
查看>>
JAVA-基础(三大特性)
查看>>
[BZOJ] 1563: [NOI2009]诗人小G
查看>>
26. Remove Duplicates from Sorted Array
查看>>
Android -- 实现RecyclerView可拖拽Item
查看>>