LeetCode 167. 两数之和 II - 输入有序数组

2021-04-13 09:28

阅读:440

标签:problems   new   链接   后退   分析   else   java   ++   hash   

题目链接

167. 两数之和 II - 输入有序数组

题目分析

非常简单的一个题目,因为给定的是一个有序数组,我们可以直接使用双指针思想去寻找两个目标元素。如果num[left] + num[right]==target 就保存循环结果然后退出循环,否则就看大小移动left或者right指针。
其实这个题还可以做二分查找 ,我们外层循环使用一个i去遍历0~num.length-2这么多的元素,然后我们在内层使用二分查找,查找target-num[i]是否在数组i~num.length-1中,存在的话就保存结果然后退出循环。
这个题其实是1. 两数之和的变种,第一题的输入数据是无序的,但是如果我们预处理输入数组后,也会变成这题的做法。对于第一题,我们最好的方法就是使用一个hashmap作为缓存,只需要一个O(n)的时间复杂度就可以完成解题。

代码实现

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int[] res = new int[2];
        int left = 0;
        int right = numbers.length - 1;
        while(left  target){
                right--;
            }else if(numbers[left] + numbers[right] 

LeetCode 167. 两数之和 II - 输入有序数组

标签:problems   new   链接   后退   分析   else   java   ++   hash   

原文地址:https://www.cnblogs.com/ZJPaang/p/13343224.html

上一篇:KMP算法

下一篇:多线程并发详解


评论


亲,登录后才可以留言!