博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode之旅】 数组 - 167.两数之和-输入有序数组
阅读量:2056 次
发布时间:2019-04-28

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

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。

函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2

说明:

  • 返回的下标值(index1 和 index2)不是从零开始的。
  • 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。

示例:

输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

解答:

/** * 双for循环:从左至右,循环判断(效率低) * @param numbers * @param target * @return */public static int[] twoSum1(int[] numbers, int target) {    for (int j = 0; j < numbers.length; j++) {        for (int i = j + 1; i < numbers.length; i++) {            if (target - numbers[j] == numbers[i]){                return new int[]{j + 1,i + 1};            }        }    }    return new int[]{0,0};}/** * 两边向中间搜:类似二分法查找(效率高) * @param numbers * @param target * @return */public static int[] twoSum2(int[] numbers,int target){    int left = 0;    int right = numbers.length - 1;    int results[] = new int[2];    while (left < right){        if (numbers[left] + numbers[right] == target){            results[0] = left + 1;            results[1] = right + 1;            return results;        }else if (numbers[left] + numbers[right] > target){            right--;        }else{            left++;        }    }    return results;}

 

 

 

 

转载地址:http://htslf.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-40》64.最小路径和
查看>>
Leetcode C++《热题 Hot 100-41》75.颜色分类
查看>>
Leetcode C++《热题 Hot 100-42》78.子集
查看>>
Leetcode C++《热题 Hot 100-43》94.二叉树的中序遍历
查看>>
Leetcode C++ 《第175场周赛-1 》5332.检查整数及其两倍数是否存在
查看>>
Leetcode C++ 《第175场周赛-2 》5333.制造字母异位词的最小步骤数
查看>>
Leetcode C++ 《第175场周赛-3》1348. 推文计数
查看>>
Leetcode C++《热题 Hot 100-44》102.二叉树的层次遍历
查看>>
Leetcode C++《热题 Hot 100-45》338.比特位计数
查看>>
读书摘要系列之《kubernetes权威指南·第四版》第一章:kubernetes入门
查看>>
Leetcode C++《热题 Hot 100-46》739.每日温度
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
[Kick Start 2020] Round A 1.Allocation
查看>>
[Kick Start 2020] Round A 2.Plates
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>