Leetcode 之第一题 two sum
来源:互联网 发布:如何在淘宝推广产品 编辑:程序博客网 时间:2024/06/06 02:26
leetcode 第一题 two sum
这一题的大意是有一组数,给出一个和,然后从这组数找出两个数,它们相加等于和,返回这两个数的下标。
这一题据我所知共有三种解法:
1.就是最简单的双重循环,用和减去外层循环中的数,然后在内层循环中找到差。这样子时间复杂度为O(n2),空间复杂度为O(1)。
2.第二种解法就是把这组数进行快速排序,使得它们从小到大排序。然后两个指针分别从头和尾遍历,如果相加大于和,则将尾指针减一,如果小于和,则将头指针加一。如果等于和,那么就在原来的数组中找到目前数字的下标。这时的时间复杂度为O(log2n)+O(n),因为要保存原来的数字的排序,所以空间复杂度为O(n)。
3.第三种就是哈希了。使用map数据结构。此时又有两种略微不同的解法。
①.因为这组数可能会有相同的数字,所以使用multimap数据结构。第一种是先建立multimap结构,将目前元素的值作为multimap的关键字,元素的下标作为multimap的值。然后遍历multimap,搜索和减去其中一个数的差,返回搜索到的关键字的值。
此时需要遍历两边map,时间复杂度为O(n),空间复杂度为O(n)。
②.第二种是先遍历这组数,然后同时建立map结构,如果差在map中已经存在,则将此时map的值和在原来数组的下标返回。
此时只需遍历一遍map,时间复杂度为O(n),空间复杂度为O(n)。
0 0
- Leetcode 之第一题 two sum
- leetcode 第一题 two sum
- LeetCode 第一题,Two Sum
- leetcode第一题two sum
- Two Sum leetcode第一题
- two Sum leetCode第一题
- leetcode 第一题:two sum
- LeetCode第一题Two Sum
- Leetcode第一题--------- Two Sum
- Leetcode第一题<two sum>
- LeetCode第一题:Two Sum
- leetcode------第一题 Two Sum
- LeetCode 1.Two Sum ------------LeetCode 第一题
- Leetcode 第一题 Two Sum java代码
- Leetcode oj1 第一题 two sum
- leetcode之Two Sum
- LeetCode 之 Two Sum
- LeetCode之Two Sum
- Jenkins进阶系列之——13修改Jenkins权限控制
- 项目经验分享--SecureCRT后台启动易宝支付CFCA签名服务
- hdu1429 bfs+状态压缩
- Oracle 调整重做日志(redo)大小
- ionic添加自定义xxx.js控制器文件不生效的问题
- Leetcode 之第一题 two sum
- mongodb 数据库操作--备份 还原 导出 导入
- 安卓事件分发
- C# 委托跨窗口调用Button
- ios在真机调试中出现The executable was signed with invalid entitlements错误
- Objective-C Runtime 运行时之一:类与对象
- iOS开发之AFNetworking 3.0.4使用
- Android签名打包报错
- 第4周 C语言及程序设计提高例程-5 函数的参数