1. Two Sum——LeetCode

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

题目大意

在数组中找到 2 个数之和等于给定值的数字,结果返回 2 个数字在数组中的下标。

解题思路

梦开始的地方~

这道题最优的做法时间复杂度是 O(n)。

方法一:双重for循环的暴力枚举

方法二:哈希表

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

没有满足条件时候的for循环做的事情,其实只是为了put进数据,键为nums[i](数组元素), 值为i(数组下标)。

直到有一次的if通过containKey方法找到了满足条件的键,然后就返回这个键对应的值(也就是数组下标)以及当前循环到的i

知识点

Java 类库为映射提供了两个通用的实现:HashMap 和 TreeMap。这两个类都实现了 Map 接口。

散列或比较函数 只能作用于键。与键关联的值不能进行散列或比较。
与集一样,散列稍微快一些,如果不需要按照排列顺序访问键,就最好选择散列。

每当往映射中添加对象时,必须同时提供一个键。
要想检索一个对象,必须使用(因而,必须记住)一个键。

键必须是唯一的。不能对同一个键存放两个值。

  • V get(Object key)
    获取与键对应的值;返回与键对应的对象, 如果在映射中没有这个对象则返回 null。
    键可以为 null。
  • boolean containsKey(Object key)
    如果在映射中已经有这个键, 返回 true。

Original: https://www.cnblogs.com/ancientlian/p/14294472.html
Author: Lian_tiam
Title: 1. Two Sum——LeetCode

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/615445/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • IntelliJ IDEA 快捷键

    参考资料 windows 和 Linux 下快捷键 功能 快捷键 智能代码补全 Ctrl + Shift + Space 全部查找 Double Shift Show intent…

    Java 2023年6月13日
    053
  • MySQL十六:36张图理解Buffer Pool

    转载~ 在应用系统中,我们为加速数据访问,会把高频的数据放在 「缓存」(Redis、MongoDB)里,减轻数据库的压力。 在操作系统中,为了减少磁盘IO,引入了 「缓冲池」(bu…

    Java 2023年6月8日
    092
  • nginx quic实验

    扫盲文档: https://http3-explained.haxx.se/zh 最终用 quiche+nginx-1.16 和 quiche+curl 完成了实验环境的搭建。 w…

    Java 2023年5月30日
    084
  • Markdowm基础语法的使用(typora)

    Mackdown学习 一级标题:一个#加空格 回车 二级标题:两个#加空格 回车 以此类推… 一级标题(Ctrl+1) 二级标题(Ctrl+2) 三级标题(Ctrl+3…

    Java 2023年6月16日
    0105
  • java中如何在ISO-8859-1和UTF-8之间相互转换呢?

    我们都知道在一些特殊的场景,我们需采用特殊的编码格式,如:UTF-8,但是系统默认的编码为ISO-8859-1 那么我们就需要将编码转换为我们所需的编码格式, 今天我就遇到这个问题…

    Java 2023年6月15日
    058
  • 设计模式之适配器模式

    本文通过老王使用纸质书籍阅读小王使用电子书籍的故事,详细说明设计模式中的结构型设计模式之适配器模式,分别对对象适配器和类适配器代码实现,最后为了加深理解,会列举适配器设计模式在JD…

    Java 2023年6月8日
    073
  • 在图片上指定区域写文字,超过长度自动换行

    public static void main(String[] args) throws IOException { BufferedImage bufferedImage = …

    Java 2023年6月5日
    074
  • 责任链模式总结

    定义 来自 GoF 的《设计模式》权威定义如下: Avoid coupling the sender of a request to its receiver by giving …

    Java 2023年6月14日
    074
  • 数据结构于算法

    package com.ws;​public class Queue8 { int max=8; public int getLenth(HeroNode heroNode) { …

    Java 2023年6月7日
    094
  • js判断登陆用户名及密码是否为空的简单实例

    // &#x9A8C;&#x8BC1;&#x8F93;&#x5165;&#x4E0D;&#x4E3A;&#x7A7A;&am…

    Java 2023年5月29日
    073
  • Spring Ioc源码分析系列–自动注入循环依赖的处理

    Spring Ioc源码分析系列–自动注入循环依赖的处理 前言 前面的文章Spring Ioc源码分析系列–Bean实例化过程(二)在讲解到Spring创建…

    Java 2023年6月8日
    076
  • 统治地球的冯·诺依曼

    以前计算机专业的同学都会学习一门叫《计算机组成原理》的课程,这门课程主要作用就是扫盲,因为在之前的那个年代,并不是很多人都买得起计算机的,这就导致很多学计算机的同学连计算机的电源开…

    Java 2023年6月7日
    092
  • Linux命令拾遗-我的进程消失了

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介 程序员但凡工作时间久一点,总会遇到一些诡异的事情,比如每当你下班时,服务就挂,然后业务同学就各…

    Java 2023年6月7日
    099
  • 使用yml多环境配置和创建多环境profile打包 springboot俩个@@ active: @profileActive@

    1、yml多环境配置在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识; appli…

    Java 2023年5月30日
    087
  • 邮件任务-springboot

    springboot可以很容易实现邮件的发送 具体实现步骤: org.springframework.boot spring-boot-starter-mail 2.5.2 spr…

    Java 2023年6月13日
    078
  • 索引下推,这个点你肯定不知道!

    索引下推(Index Condition Pushdown) ICP 是Mysql5.6之后新增的功能,主要的核心点就在于把数据筛选的过程放在了存储引擎层去处理,而不是像之前一样放…

    Java 2023年6月13日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球