java数据结构与算法刷题-----LeetCode1:两数之和

Hot100 Java之Acm模式 1-3(哈希) 找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。最长数字连续序列是 [1, 2, 3, 4]。是由重新排列源单词的所有字母得到的一个新单词。可以按任意顺序返回结果列表。整数,并返回它们的数组下标。给你一个字符串数组,请你将。你可以按任意顺序返回答案。给定一个未排序的整数数组。,请你在该数组中找出。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 双指针:left指针指向左边,left+right指向右边,如果left+right越界,让left回归0,right++。否则left++,直到数组遍历完成,或者找到目标值

为什么是left+right?:如果只是left左边,right右边,那么这只适用于有序的序列进行贪心算法,如果是无序的序列,需要更加细致的左右比较,那么这也成为了一个套路。也就是无序序列使用双指针进行贪心的套路。

  1. Map集合

target-当前元素 = 剩下还需要的元素(补数)。将补数,作为key存入map,value就是这个当前元素的下标。如果之后的元素遍历时,可以直接从map中获取到key,那么也就是说,它可以作为补数,补足前面某个元素,共同组成target。

代码,时间复杂度O(n),空间复杂度,使用双指针O(1). 使用map就是O(N)
  1. 双指针:
    在这里插入图片描述
class Solution {
    public int[] twoSum(int[] nums, int target) {
        int leftIndex = 0, rightIndex = 0;//答案要求返回两个复合条件的数的下标
        for (int left = 0, right = 1; right <= nums.length - 1; left++) {//初始左指针指向0,右指针指向1
            if (left + right >= nums.length) {//如果left+right超过数组下标界限,就让left回归初始位置,right后移
                left = -1;
                right++;
            } else if(target == nums[left] + nums[left + right]){//如果找到复合条件的两个数,就返回
                leftIndex = left;
                rightIndex = left + right;
                break;
            } 
            //左指针始终需要右移 
        }
        int[] a = { leftIndex, rightIndex };
        return a;//返回答案
    }
}
  1. map
    在这里插入图片描述
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map = new HashMap<>();//建立字典
        for(int i = 0;i<nums.length;i++){//O(n)
            if(map.get(nums[i])!=null){//用当前数作为补数,看看map中有没有。
                return new int[]{i,map.get(nums[i])};//如果有就返回
            }
            map.put(target-nums[i],i);//如果没有,进行补数为key,下标为value的存储。
        }
        return null;
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
LeetCode刷题经验分享:数据结构与算法核心 本文旨在为LeetCode刷题者提供系统化的知识框架与实战经验,覆盖数据结构(数组、链表、树、图等)和算法(排序、搜索、动态规划、贪心等)的核心内容。通过深度解析典型题目,阐述如何将理论知识转化为解题策略,重点提升代码实现能力与算法优化思维。本文采用“概念解析→算法原理→实战应用→工具资源”的逻辑结构,通过理论结合代码的方式,逐步拆解LeetCode高频题型的解题思路。核心章节包括数据结构底层原理、算法复杂度分析、典型题目代码实现、实战项目案例等,帮助读者建立从问题建模到代码优化的完整思维链路。数据结构。 阅读详情

相关推荐

用Seurat和ComplexHeatmap绘制单细胞marker基因热图:从数据处理到可视化全流程

本文详细介绍了使用Seurat和ComplexHeatmap绘制单细胞marker基因热图的全流程,涵盖从数据处理、基因筛选、平均表达矩阵计算到高级可视化与注释添加。重点解析了如何利用ComplexHeatmap生成发表级热图,并整合热词信息,解决单细胞数据可视化中的常见问题,提升科研图表质量。

weixin_29048775的博客 531

Java of ACM成长计划“暴力”思想02.LeetCode算法题01. 两数之和

public int[] twoSum (int[] nums, int target){//首先方法是数组类型的,因为要返回的是数组类型。于是我想到先将一个索引代入固定值,找另一个值。明白输入一个数组(但不知道数组长度),输入一个值。求将数组中的2个索引,这个2个索引求和等于输入值。即(1):nums[i]+nums[j]=target。等nums[j]循环完找不到值,让nums[i]进行一次循环。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。

Lanthamum的博客 188

Abaqus中使用Python提取裂缝数据并用matplotlib库绘图

ABAQUS后处理PYTHON二次开发代码:提取裂缝数据并用matplotlib库绘图

qq_42568527的博客 3472

leetcode hot 100 ACM模式——1.两数之和

这道题使用哈希表可以使得查找效率很高,基于题目需求,我们可以将实际需要比较的数值作为哈希数组的键,方便查找,将数据在原数组中的索引作为对应的值,巧妙的一点是可以边查找边插入,因为差两数之和是相互的。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。

pkaaa的博客 629

Yolov5自学笔记之一--从入门到入狱,功能强大不要乱用(实现yolov5的基本功能使用流程及训练自己的数据集)

零基础自学yolov5,学会简单使用和训练自己的数据集,在自己工作中使用

qq_41597915的博客 1万+

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 282

Leetcode ACM模式 216. 组合总和 III

Leetcode回溯题 216.组合总和

m0_52347246的博客 286

【大模型】百度千帆大模型对接LangChain使用详解

百度千帆大模型对接LangChain使用详解

congge 5065

Leetcode 1. 两数之和

文章目录1. 哈希表1.1 思路1.2 复杂度1.3 代码 1. 哈希表 1.1 思路 在无序数组中,根据索引查找目标值的时间复杂度 O(1),根据目标值查找索引的时间复杂度 O(n)。使用哈希表建立目标值与索引的映射关系,以空间换时间,将查找时间从 O(n) 降低到 O(1)。 可以采用两次遍历的方式,第一次建立哈希表,第二次查找整数对。注意,题目要求元素不能重复使用。由于输入数组中可能含有重复...

moonspiritacm 224

博途PLC如何建立与笔记本电脑端的连接?(新手必会)

对S7-1500PLC下载硬件组态或程序,需要建立PC与PLC的连接。 由于S7-1500CPU都具有PN端口,因此建立PC与S7-1500PLC的连接通常使用工业以太网来实现。 1.使用网线连接PC-PLC 使用网线,一端连接PC的以太网卡端口,另一端连接S7-1500CPU的PN端口。 2.设置本机IP地址 2.1 确认本机要设置的IP地址段 本机IP地址要和PLC程序组态IP地址段前三位保持一致,后一位使用组态中没有用到的IP地址段。如下图所示。 那么看了这个图片应该就知道了,地址应该设置成192.

weixin_42430971的博客 1万+

Codex 100个真实案例 - 用AI生成建筑平面图SVG(室内设计师的新武器)

本案例用 Codex 生成一套完整的 Python 脚本,自动绘制 SVG 格式的建筑平面图。我们会设计一个90平两室一厅的户型——客厅、主卧、次卧、厨房、卫生间一应俱全,还会自动摆放家具(沙发、床、餐桌、橱柜)、标注尺寸和面积、绘制水电路走向、生成多种配色方案。最终输出的 SVG 文件可以直接用浏览器打开展示,也可以转成 PNG 交给客户。室内设计师看了都说好!

yueyeguzhuo的专栏 768

力扣刷题之准备工作

在刷算法题的过程中进行总结是非常重要的,它可以帮助你梳理思路、加深理解、记录学习成果,并提升解题能力。每天回顾:在每天结束时,对当天解决的题目进行回顾。检查解决方案的正确性,并思考是否有更优化的方法。记录下遇到的难点和解决方法,以及学到的新知识点和技巧。整理这些笔记并归档到适当的分类中,以便今后参考。每周汇总:在每周末或开始新一周时进行总结。复习过去一周解决的题目,分析解题过程中使用的算法和数据结构。总结你学到的关键知识点、解题技巧和模式,并将其整理到博客中。

weixin_47040031的博客 9759

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

算法刷题路线总结与相关资料分享

算法刷题路线总结,算法题刷题步骤介绍,数据结构与算法相关资料分享~

小新要变强的博客 8491

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

刷完 900 多道算法题的首次总结:LeetCode 应该怎么刷?

LeetCode 算法题应该怎么刷?算法题学习路线?怎么组队刷题?有没有算法刷题群? 你是怎么入门 LeetCode 的?刷完 1000 道算法题是什么体验?大家都是怎么刷题的? 新手小白开始刷算法题应该怎么刷,注意什么?刷 LeetCode 总是觉得太难怎么办? 刷算法题有没有书籍推荐?该按照什么顺序刷算法题?LeetCode 怎么看别人的题解?有哪些好的算法题博主推荐?

负雪明烛 13万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java算法学习(力扣-两数之和)

java算法刷题学习,以练带学,力扣-两数之和

2301_80210302的博客 2738

Leetcode第一题:两数之和(3种语言)

@](这里写自定义目录标题) Leetcode第一题:两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums1 = 2 + 7 = 9 所以返回 ...

三年研究生能改变多少 4万+

力扣最热一百题——1.两数之和

力扣最热一百题——两数之和两种解法详解。哈希表的介绍。新手也能学会!!!

WenJGo的博客 2040

【算法入门】力扣题:1. 两数之和 经典算法题“两数之和”Java和JavaScript力扣经典题:两数之和新手入门全解析【新手入门】LeetCode两数之和:Java & JavaScript双语

在这篇博客中,我们讨论了力扣题目“两数之和”的解法。我们首先介绍了题目的基本要求,然后分析了两种解法:暴力解法和哈希表解法。最后,我们提供了 Java 和 JavaScript 的实现代码。通过使用哈希表,我们能够将时间复杂度从 (O(n^2)) 降低到 (O(n)),这使得我们的算法在处理大规模数据时更加高效。希望这篇博客能帮助你更好地理解这个问题及其解法!如果你有任何问题或想法,欢迎在评论区留言讨论。

南北极之间 984

力扣热门100题——两数之和(最全解法)

1、两数之和 1、问题描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 2、示例 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3

humor2020的博客 2万+

LeetCode(力扣)数组篇 JAVA刷题详解

是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的 1-500 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类,并推荐一个刷题的顺序。完全零基础可以刷题吗?不能,至少要基本掌握一门计算机语言的语法。但现在在网上随便搜一下就能搜到许多关于计算机语言的教程。当然,最好还是上一下正规的课程。刷题顺序很重要吗?重要。按照题目类别结构化地刷题的速度不仅更快,而且可以在刷完一类题之后进行总结。

weixin_61779644的博客 2538

力扣启蒙 - 开启算法的世界

点击上方 Java学习之道,选择 设为星标 每天18:30点,干货准时奉上! Part1力扣 刷力扣,刷力扣,力扣究竟是什么呢? 力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。 而刷力扣也就是在力扣的题库里刷算法题。 Part2力扣启蒙 下面来引入力扣的启蒙题来感受一下算法题的魅力吧。 1力扣第一题: 两数之和 给定一个整数数组 nums .

Java学习之道 5908

力扣刷题---第一题---两数之和

力扣刷题第一题两数之和题目要求解题方法一 题目要求 解题 方法一 遍历数组 当为第一个数的时候,从后面找有没有和他相加得结果的数 如果有就返回下标

代码哈士奇的博客 4497

LeetCode Java面试刷题笔记汇总

LeetCode Java刷题笔记汇总,按照类型刷题效率更高。

终生学习践行者 2948

【LeetCode】 LC10001 两数之和(Two Sum),力扣第一题。

本文介绍了解决"两数之和"问题的两种方法及核心知识点。暴力枚举法通过双重循环遍历数组,时间复杂度O(n²),空间复杂度O(1);哈希表法利用空间换时间,存储已遍历元素及其索引,时间复杂度O(n),空间复杂度O(n)。核心知识点包括:数组(随机访问快但大小固定)、哈希表(快速查找)、时间/空间复杂度分析及空间换时间策略。哈希表法更高效,适合数据量大的场景,体现了用额外空间换取时间优化的设计思想。

thinkgame的博客 1317

卷进大厂系列之LeetCode刷题笔记:两数之和(简单)

本文介绍了力扣中两数之和题目,包含了算法讲解。学算法,刷力扣,加油卷,进大厂!欢迎交流讨论!

一入大数据深似海?别怕!“数据极客圈”就是你的救生圈,走对圈子跟对人,趣析数据、畅聊趋势,快进圈子! 2474
上一篇: java数据结构与算法刷题-----LeetCode70:爬楼梯
下一篇: java数据结构与算法刷题-----LeetCode88:合并两个有序数组
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值