• 有序数组两数之和


    题目:

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

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

    说明:

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

    示例:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    分析:

    看到这道题的时候,有一种明显的似曾相识的感觉,然而就是想不起来当初学到的那种思路,于是厚颜无耻地看了一眼自己以前的答案,瞬间秒懂,看来还是理解不深呐... ...

    依据题意而言,假设最终答案为i 和 j之和,那么 j 等于 目标数 - i。所以,基本的思路就是将所有的数值及下标插入到hashmap中,然后再遍历一次数组,找出符合目标数 - i的下标,则大功告成。再仔细想一下其实还可以优化一下,代码如下:

    代码:

    class Solution {
        public int[] twoSum(int[] numbers, int target) {
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < numbers.length; i++) {
                if (map.get(target - numbers[i]) != null) {
                    return new int[] {map.get(target - numbers[i]) + 1, i + 1};
                }
                map.put(numbers[i], i);
            }
            //throw new RuntimeException("无匹配结果");
            return new int[0];
        }
    }
  • 相关阅读:
    centos7 源码安装python3
    gitlab 迁移
    gitlab 搭建
    亚伦史沃茨 公开信
    误删了sudo包怎么办
    在中国历史上,我个人最喜欢的三个皇帝
    安装PHP7
    Mac OS上设置Django开发环境
    The Pragmatic Programmer Quick Reference Guide
    Nginx的第一个模块-HelloWorld
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13295162.html
Copyright © 2020-2023  润新知