给出一个数组,找出其中和为 n 的两个元素,本文就使用暴力嵌套循环和二分双指针的思路来实现这个算法。
一、问题描述
有一个 递增 的数组,找出和为 n 的 两个数,以数组的形式返回这两个数。
示例 1:
- 输入:
[1,2,3,5,7,11,17] , n=16 - 输出:
[5,11]
示例 2
- 输入:
[23,55,78,100] , n=120 - 输出:
[]
二、代码演示
- 查找两数之和 嵌套循环
1 | |
- 查找两数之和 双指针
1 | |
三、性能测试
在 0-1000 的 递增数组 中查找和为 15 的两个数,分别用 嵌套循环 和 双指针 方法来执行 100万次。
1 | |
findTwoNumbers1 run time: 0
findTwoNumbers2 run time: 0
通过运行得知 嵌套循环 的方法远不如 双指针 的方法的执行效率。
四、算法复杂度
| 方法 | 时间复杂度 |
|---|---|
| 嵌套循环 | O(n^2) |
| 双指针 | O(n) |
《数据结构与算法》系列
- 什么是算法复杂度
- 堆(heap)、栈(stack)、队列(queue)
- 把一个数组旋转k步
- 判断字符串是否括号匹配
- 数组、栈、链表、队列结构与对比
- 用两个栈实现一个队列
- 反转单向链表
- 用链表实现队列
- 二分查找
- 查找两数之和
- 求斐波那契数列的第n个值
欢迎访问:天问博客
本文作者: Tiven
发布时间: 2023-07-18
最后更新: 2023-07-21
本文标题: 【数据结构与算法】(10):查找两数之和
本文链接: https://www.tiven.cn/p/4d88c947/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
发布时间: 2023-07-18
最后更新: 2023-07-21
本文标题: 【数据结构与算法】(10):查找两数之和
本文链接: https://www.tiven.cn/p/4d88c947/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!



