• [LeetCode] 1. 两数之和


    传送门:[LeetCode] 1. 两数之和

    题目描述

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    示例 :

    给定 nums = [2, 7, 11, 15], target = 9

    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]

    分析与代码

    题目描述的不能重复利用这个数组中的同样的元素,说的并不是相等的元素,而是下标相等的同一个数。

    解法一、暴力

    • 暴力法很简单,两重循环判断。

    代码:

    class Solution {       
        public int[] twoSum(int[] nums, int target) {
            for (int i = 0; i < nums.length; i++) {
                for (int j = i + 1; j < nums.length; j++) {
                    if (nums[i] + nums[j] == target) {
                        return new int[] { i, j };
                    }
                }
            }
            return new int[] {};
        }
    }
    

    解法二、哈希表

    • 想象一个场景,一个晚会,每个人进场时,都把自己登记到表中,但登记之前先判断所找的人是否已存在表中,若存在,直接找到;这样就能最快的找到所要找的人。
    • 在这个题目中就是使用 HashMap,遍历数组,以元素值为 key,索引为 value 存入 HashMap 中,存入之前,先求 target - 当前遍历元素得出需要的元素,在 HashMap 中查找存不存在该 key,若存在返回 value 值和当前下标的数组,若不存在,把当前元素的值和索引存到 HashMap 中。

    代码:

    class Solution {       
        public int[] twoSum(int[] nums, int target) {
            Map<Integer, Integer> map = new HashMap<Integer, Integer>();
            for (int i = 0; i < nums.length; i++) {
                int need = target - nums[i];
                if (map.containsKey(need)) {
                    return new int[] { map.get(need), i };
                }
                map.put(nums[i], i);
            }
            return new int[] {};
        }
    }
    

    小结

    "平生不识 Two Sum,刷尽 LeetCode 也枉然"。

    LeetCode 开篇之题,经典中的经典,开启刷题之旅。

    每天写一篇博客,每天坚持学习,天天向上。



    ┆ 然 ┆   ┆   ┆   ┆ 可 ┆   ┆   ┆ 等 ┆ 暖 ┆
    ┆ 而 ┆ 始 ┆   ┆   ┆ 是 ┆ 将 ┆   ┆ 你 ┆ 一 ┆
    ┆ 你 ┆ 终 ┆ 大 ┆   ┆ 我 ┆ 来 ┆   ┆ 如 ┆ 暖 ┆
    ┆ 没 ┆ 没 ┆ 雁 ┆   ┆ 在 ┆ 也 ┆   ┆ 试 ┆ 这 ┆
    ┆ 有 ┆ 有 ┆ 也 ┆   ┆ 这 ┆ 会 ┆   ┆ 探 ┆ 生 ┆
    ┆ 来 ┆ 来 ┆ 没 ┆   ┆ 里 ┆ 在 ┆   ┆ 般 ┆ 之 ┆
    ┆   ┆   ┆ 有 ┆   ┆   ┆ 这 ┆   ┆ 降 ┆ 凉 ┆
    ┆   ┆   ┆ 来 ┆   ┆   ┆ 里 ┆   ┆ 临 ┆ 薄 ┆
  • 相关阅读:
    windows上docker部署springboot多实例
    oracle 如何搜索当前用户下所有表里含某个值的字段?
    VS2010/OpenGL配置
    (译)Minimal Shader(最小的着色器)
    (译)Cg Programming/Unity(Cg编程/Unity)
    (转)在Unity3D中控制动画播放
    Unity3d中使用assetbundle
    C# 操作 sqlite
    Unity3d网格合并
    在Unity3d中解析Lua脚本的方法
  • 原文地址:https://www.cnblogs.com/qiu_jiaqi/p/LeetCode-1.html
Copyright © 2020-2023  润新知