首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >两数之和

两数之和

作者头像
忧愁的chafry
发布2022-10-30 15:37:40
发布2022-10-30 15:37:40
2610
举报
文章被收录于专栏:个人技术笔记个人技术笔记

题目:

思路:

      * 通过哈希map的key-value的方式来进行甄别,时间与空间复杂度都为O(N)

     * 将每次检验过的值的补数存于map中key为补数,value存数组的index坐标

     * 当新元素进入时,判断map的key中是否已经存在这个key了,如果存在,则将这个key对应的坐标拿出

     * 并且把当前数组的坐标也取出来,形成一组对应数据,本例中因为index是从1开始的,故两个数据都加上了1

代码示例:

import java.util.Arrays;

import java.util.HashMap;

import java.util.Map;

public class Solution {

    public static void main(String[] args) {

        int[] numbers = {3, 2, 4};

        int target = 6;

        int[] result = twoSum(numbers, target);

        System.out.println(Arrays.toString(result));

    }

    /**

     * 通过哈希map的key-value的方式来进行甄别,时间与空间复杂度都为O(N)

     * 将每次检验过的值的补数存于map中key为补数,value存数组的index坐标

     * 当新元素进入时,判断map的key中是否已经存在这个key了,如果存在,则将这个key对应的坐标拿出

     * 并且把当前数组的坐标也取出来,形成一组对应数据,本例中因为index是从1开始的,故两个数据都加上了1

     *

     * @param numbers int整型一维数组

     * @param target  int整型

     * @return int整型一维数组

     */

    public static int[] twoSum(int[] numbers, int target) {

        Map<Integer, Integer> map = new HashMap<>();

        int[] result = new int[2];

        for (int i = 0; i < numbers.length; i++) {

            if (map.containsKey(numbers[i])) {

                result[0] = map.get(numbers[i]) + 1;

                result[1] = i + 1;

            } else {

                map.put(target - numbers[i], i);

            }

        }

        return result;

    }

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
  • 思路:
  • 代码示例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档