zoukankan      html  css  js  c++  java
  • 有序数组两数之和

    题目:

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

    函数应该返回这两个下标值 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];
        }
    }
  • 相关阅读:
    Androidproject文件下assets目录与res目录的差别
    tomcat 实现域名crm.test.com訪问
    全文索引--自己定义chinese_lexer词典
    Elasticsearch 之 慘痛部署(分片移位)
    iOS开发核心语言Objective C —— 全部知识点总结
    [LeedCode OJ]#28 Implement strStr()
    【Django】 gunicorn部署纪要
    PKI(公钥基础设施)基础知识笔记
    Cocoapods Undefined symbols for architecture armv7sarm64
    Android开发Tips(3)
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13295162.html
Copyright © 2011-2022 走看看