167. 两数之和 II - 输入有序数组 + 哈希表 + 双指针
2024-08-24 00:46:09
167. 两数之和 II - 输入有序数组
LeetCode_167
题目描述
方法一:暴力法(使用哈希表)
class Solution {
public int[] twoSum(int[] numbers, int target) {
int len = numbers.length;
HashMap<Integer, Integer> map = new HashMap<>();
for(int i=0; i<len; i++){
int next = target - numbers[i];
if(map.containsKey(next)){
return new int[]{map.get(next)+1, i+1};
}
map.put(numbers[i], i);
}
return new int[]{-1,-1};
}
}
复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(n)
方法二:双指针法
class Solution {
public int[] twoSum(int[] numbers, int target) {
int len = numbers.length;
int low = 0, high = len-1;
while(low <= high){
int sum = numbers[low] + numbers[high];
if(sum == target)
return new int[]{low+1, high+1};
if(sum < target)
low++;
else high--;
}
return new int[]{-1, -1};
}
}
复杂度分析
- 时间复杂度:O(n),其中 n 是数组的长度。两个指针移动的总次数最多为 n 次。
- 空间复杂度:O(1)。
最新文章
- STM32 使用DMA+DAC+TIMER 输出正弦波
- ACM: POJ 3660 Cow Contest - Floyd算法
- [转] js == 与 === 的区别
- python的类变量与实例变量
- 【BZOJ】1503: [NOI2004]郁闷的出纳员(Splay)
- 必应(Bing)每日图片获取API
- Java 开发 gRPC 服务和客户端
- sychronized面试问题浅析
- Hibernate+DWR无刷新三级联动
- UITextField知多少
- Android应用开发学习笔记之绘图
- 【Web探索之旅】第三部分第二课:IP地址和域名
- GtkImageMenuItem
- [bzoj1067][SCOI2007]降雨量——线段树+乱搞
- php SeasLog使用以及liunx环境下安装
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示
- Unity之如何使用夜神模拟器logcat
- 微信x5内核很鸡贼啊
- 微信小程序性能优化技巧
- vue+窗格切换+田字+dicom显示_03
热门文章
- 分组背包 例题:hdu 1712 ACboy needs your help
- 树链剖分(附带LCA和换根)——基于dfs序的树上优化
- Educational Codeforces Round 89 (Rated for Div. 2) A Shovels and Swords B、Shuffle
- 用了很多年Dubbo,连Dubbo线程池监控都不知道,觉得自己很厉害?
- spring再学习之设计模式
- Dapr是如何简化微服务的开发和部署
- mybaits(十)mybatis常见面试
- TypeScript 1.7 &; TypeScript 1.8
- reStructuredText(.rst) &;&; read the docs
- JSON-LD 结构化数据