Leetcode 1解题思路以及代码整理

2023-11-18

Two Sum

Description

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].

Tags: Array, Hash Table

 

翻译题意:简单来说,就是给定一个数组及一个目标数值,求数组中两元素相加为该目标数值对应的两个下标索引。且要求index1小于index2,答案结果稳定。

---------------------------------------------------------------------------------------------------------------------------- 思路:


一、遍历:最粗暴的方法,时间复杂度为O(n^2)。

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


二、HashSet:利用HashSet元素不能重复的原理,新建一个HashSet,然后可先检查target-nums[i]能否加入该HashSet,若能,则说明前面的数据没有与第i个符合的组合。在把该target-nums[i]删除,重新添加nums[i](避免有两个元素相等返回错误判断)。当添加不成功,则说明存在符合的组合,记录此时的i,并从i以前的数组寻找他的另一半。有点繁琐,但时间复杂度为O(n),空间复杂度为O(n)。


    public class Solution {
        public int[] twoSum(int[] nums, int target) {
            int index1,index2;
            int[] index=new int[]{0,1};
            Set nset = new HashSet();
            
            for(int i = 0; i< nums.length; i++)
            {
               if(nset.add(target-nums[i])) //检查是否有nums[i]配对的元素存在,无则添加成功
               {
                   nset.remove(target-nums[i]); //添加该元素只是为了判断是否存在,本来不应该添加的这里又删掉
                   nset.add(nums[i]);
               }else
               {
                   index[1] = i+1;
                   for(int j = 0; j< i; j++)
                   {
                       if(target==(nums[i]+nums[j]))
                   {
                       index[0] = j+1;
                       return index;
                   }
               }
               return index;
           }
           
        }
        return index;
    }  
}

 

三、HashMap:用HashMap来做,道理相同,不过跟二还是有点区别。1、HashMap要需要为每个元素创建key和value两个内存空间,辅助空间翻倍。本例子就是用value来放index;2、由于用value来放index,找到一个后,另外一个就马上可以得到其index。二跟三,一个省点空间、一个省点点时间,都差别不大。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode 1解题思路以及代码整理 的相关文章

随机推荐

  • [QT编程系列-2]:C++图形用户界面编程,QT框架快速入门培训 - 1- 预备知识

    目录 概述 1 前置条件 1 1 C 1 2 图形界面 1 3 图形程序集成开发环境 1 4 图形程序开发框架 1 5 跨平台特性 1 6 QT快速感知 1 6 1 QT的典型应用 1 6 2 QT的特点 1 6 3 QT跨平台集成开发环境
  • Qt QProcess

    目录 概述 实 现 一 函数接口 二 执行命令 三 管 道 概述 本文介绍 在Linux环境下 使用Qt中的QProcess类执行shell命令并获取输出 头文件 include
  • 区块链数字签名详解

    有一点比较难以理解的答案就是 私钥加密公钥可以解密 公钥加密私钥可以解密 RSA的原理 两个大质数 p q 乘积 n 难以逆向求解 所以pq是对等的 公钥和私钥也是对等的 区块链 从数字货币到信用社会 读书笔记 这张图来自于新生大学的周兵
  • 【Vue项目实战】Vue3动画神操作!教你如何实现PPT一样的动画效果!

    文章目录 前言 一 Animate css是什么 二 安装和使用 1 安装 2 基本用法 3 JavaScript用法 三 动画制作 1 弹入动画 总结 前言 最近写界面的时候 发现一个前端组件很好玩 他就是鼎鼎大名的 Animate cs
  • 海康工业摄像头调用(linux基于python和opencv)

    1 下载官网客户端 其中包含SDK 官方网站 海康机器人 机器视觉 下载中心 安装deb文件 sudo dpkg i deb文件名 2 运行客户端 cd opt MVS bin MVS sh 如果连不上 看看是不是usb3 0的接口 3 调
  • ThinkPHP 日志信息泄露漏洞复现

    ThinkPHP 日志信息泄露漏洞复现 漏洞简介 ThinkPHP在开启DEBUG的情况下会在Runtime目录下生成日志 而且debug很多网站都没有关 ThinkPHP默认安装后 也会在Runtime目录下生成日志 THINKPHP3
  • 基于SSM 和 layui 的增删查改

    开发工具 IDEA 2021 WebStorm 2021 Mysql 8 0 开发环境 JDK 8 TomCat 8 5 81 apache maven 3 6 1 技术点 Spring SpringMVC Mybatis Mysql Ht
  • express使用简介

    框架搭建 1 安装脚手架 npm install g express generator 2 创建项目 express myapp 查看项目目录 可以知道启动文件www作用是提供http服务 express是一个全栈环境 所以有views
  • 维普期刊 瑞数5

    郑重声明 本项目的所有代码和相关文章 仅用于经验技术交流分享 禁止将相关技术应用到不正当途径 因为滥用技术产生的风险与本人无关 加载流程 url aHR0cDovL2xpYi5jcXZpcC5jb20vUWlrYW4vU2VhcmNoL0l
  • TCP/IP详解 卷1:协议 学习笔记 第十六章 BOOTP:引导程序协议

    一个无盘系统在不知道自身IP地址情况下 进行系统引导时能通过RARP协议获取它的IP地址 使用RARP会有两个问题 1 IP地址是返回的唯一结果 2 RARP使用链路层广播 RARP请求不会被路由器转发 每个实际网络必须设置一个RARP服务
  • leetcode算法面试题:打家劫舍问题

    题目 你是一个专业的小偷 计划偷窃沿街的房屋 每间房内都藏有一定的现金 影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统 如果两间相邻的房屋在同一晚上被小偷闯入 系统会自动报警 给定一个代表每个房屋存放金额的非负整数数组 计算你
  • 50个c/c++源代码网站

    C C 是最主要的编程语言 这里列出了50名优秀网站和网页清单 这些网站提供c c 源代码 这份清单提供了源代码的链接以及它们的小说明 我已尽力包括最佳的C C 源代码的网站 这不是一个完整的清单 您有建议可以联系我 我将欢迎您的建 议 以
  • Maven下载、安装和配置教程(2023年6月10日)

    Maven下载 安装和配置教程 2023年6月10日 一 下载安装包 二 安装 三 配置环境变量 系统是win10 四 验证是否安装成功 五 配置文件 六 idea里配置 一 下载安装包 链接 https pan baidu com s 1
  • 西部数据出现“WD SES Device USB Device”怎么办,而且说明书全是英文。

    您好 wd ses device driver这个驱动程序可以在baidu中输入关键词找到 什么驱动之家 驱动人生之类的专业驱动网站也都是有的 western digital的移动硬盘驱动程序安装步骤请见下图 转载于 https www c
  • glob.glob in python

    reference glob glob in python 功能 返回一个某一种文件夹下面的某一类型文件路径列表
  • Golang网络编程

    互联网协议介绍引入 1 物理层 Physical Layer 功能 物理层负责定义物理介质传输数据的方式和规范 它传输的是原始数据比特流 协议 Ethernet Wi Fi USB 光纤等 例子 将数据通过网线传输的过程类似于我们通过电话线
  • pytorch 使用BART模型进行中文自动摘要

    系列文章 如何从大型模型 BART fine tune一个小模型及代码实现 文本自动摘要评价方法 金字塔方法 pytorch 使用BART模型进行中文自动摘要 目录 系列文章 摘要 实现 数据准备 装载数据 预览数据 抽取部分模型 fine
  • Hutool工具类excel导出详细教程

    Hutool工具类excel导出 1 导入依赖
  • wxpython 用calendarctrl制作日历以及显示当前日期在statictext上

    calendar的日期显示 def beginEvent self event dlgb wx Dialog None id 1 title Calendar size 300 200 self datepick wx adv Calend
  • Leetcode 1解题思路以及代码整理

    Two Sum Description Given an array of integers return indices of the two numbers such that they add up to a specific tar