当前位置: 首页 > news >正文

java数据结构与算法刷题-----LeetCode167:两数之和 II - 输入有序数组

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路
  1. 题目要求我们找到两个数相加的和,等于target指定的值。而且数组中元素是递增的(非递减且顺序排列就是递增)。
  2. 那么,我们可以很方便的找到最大值和最小值,它们分别位于数组左面和右面。可以尝试先将它们加起来。
  3. 如果相加的值正好等于target那么返回结果即可。如果这个值大于了target,就说明太大了,我们需要缩小这个数。
  4. 左面是小的数,右面是大的数,既然太大了,那么理所当然,应该让右面的数小一点。反之,若这个值比target小,说明左面的值太小了,可以扩大一点。
  5. 因此:用两个指针left和right 分别指向数组左右两端,实现上述步骤。
  1. 代码
    在这里插入图片描述
class Solution {public int[] twoSum(int[] numbers, int target) {int left = 0;//左指针int right = numbers.length-1;//右指针int sum = 0;//左右两个值的和while(left!=right){//如果双指针相遇,说明没有合适的数sum = numbers[left]+numbers[right];//左右相加if(sum == target) return new int[]{left+1,right+1};//找到目标数,返回两个数下标else if(sum<target) left++;//若比目标是小,左面大一点else right--;//比目标大,右面小一点}return new int[]{-1,-1};}
}

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

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。

相关文章:

java数据结构与算法刷题-----LeetCode167:两数之和 II - 输入有序数组

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 思路 题目要求我们找到两个数相加的和&#xff0c;等于target指定的值。而…...

Linux:jumpserver V3的安装与升级(在线离线)(2)

官方文档写的非常详细&#xff0c;我这篇文章时间长了&#xff0c;会随着官方版本更新而落后 JumpServer - 开源堡垒机 - 官网https://www.jumpserver.org/安装和升级在官网也有详细的信息&#xff0c;我写本章是为了记录一下实验 我的系统是centos7.9 在线安装 在确定我们可…...

【GoLang】Go语言几种标准库介绍(一)

你见过哪些令你膛目结舌的代码技巧&#xff1f; 文章目录 你见过哪些令你膛目结舌的代码技巧&#xff1f;前言几种库bufio&#xff08;带缓冲的 I/O 操作&#xff09;特性示例 bytes (实现字节操作)特性示例 总结专栏集锦写在最后 前言 随着计算机科学的迅猛发展&#xff0c;编…...

短剧分销系统:月入百w的新模式

随着我国短剧的高速发展&#xff0c;越来越多的人进入到了短剧影视行业。本文旨在介绍短剧市场的发展前景以及短剧分销系统的设计和开发。 一、短剧发展背景 短剧具有时长短、剧情紧凑、节奏快、剧情新颖等特点&#xff0c;满足了国内观众的碎片化时间&#xff0c;在当下短视频…...

鞋服用户运营策略如何实现有效闭环?

实现长期价值和业务闭环是企业经营的关键。对于鞋服行业来说&#xff0c;如何基于客户旅程编排&#xff08;Customer Journey Orchestration&#xff0c;简称 CJO&#xff09;实现用户运营策略的有效闭环&#xff0c;提升长期价值呢&#xff1f; 本文围绕该主题&#xff0c;从鞋…...

简单工厂、工厂方法、抽象工厂和策略模式

摘要 本文简单介绍软件开发过程中面临的痛点和几个总体原则。详细介绍了简单工厂、工厂方法、抽象工厂和策略模式的实现&#xff0c;以及各种模式之间的相似、区别。 背景 开发面临哪些问题&#xff08;痛点&#xff09;&#xff1f; 相信做过大型软件开发的tx都遇到过以下类似…...

junit mocktio request打桩

Controller下request组装参数 HttpServletRequest request new MockHttpServletRequest(); ((MockHttpServletRequest) request).addHeader("router","login"); ((MockHttpServletRequest) request).addParameter("test","wwww"); …...

第十四节TypeScript 联合类型

1、简介 联合类型可以通过管道&#xff08;|&#xff09;将变量设置多种类型&#xff0c;赋值时可以根据设置的类型来赋值。 注意&#xff1a;只能赋值指定的类型&#xff0c;如果赋值其它类型就会报错的。 2、创建联合类型的语法格式&#xff1a; Type1|Type2|Type3 实例&a…...

[x86汇编语言]从实模式到保护模式第二版

下载汇编器&#xff1a;https://www.nasm.us/pub/nasm/releasebuilds/2.16.02rc6/win64/ mov ax, 0x3f add bx,ax add cx,ax 编译&#xff1a; C:\Users\HP>cd D:\BaiduNetdiskDownload\01b站\lizhong\myasm C:\Users\HP>D: D:\BaiduNetdiskDownload\01b站\lizhong…...

基本的逻辑门

前言 本篇文章介绍基本的逻辑门&#xff0c;然后给出C语言描述 逻辑门是在集成电路上的基本组件。简单的逻辑门可由晶体管组成。这些晶体管的组合可以使代表两种信号的高低电平在通过它们之后产生高电平或者低电平的信号。高、低电平可以分别代表逻辑上的“真”与“假”或二进…...

云原生系列3-Kubernetes

1、Kubernetes概述 k8s缩写是因为k和s之间有八个字符。k8s是基于容器技术的分布式架构方案。官网&#xff1a;https://kubernetes.io/zh-cn/ Google在 2014年开源了Kubernetes项目&#xff0c;Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。同样类似的…...

R-列表、矩阵、数组转化为向量

目录 一、c()函数 二、unlist()函数 一、c()函数 c()&#xff1a;对应的英文是combine. 当你使用c()函数时&#xff0c;它会将输入的对象连接成一个向量。因此&#xff0c;无论输入是矩阵、数组还是列表&#xff0c;c()函数都会将它们连接成一个简单的向量。因此&#xff…...

算法通关村-番外篇排序算法

大家好我是苏麟 , 今天带来番外篇 . 冒泡排序 BubbleSort 最基本的排序算法&#xff0c;最常用的排序算法 . 我们以关键字序列{26,53,48,11,13,48,32,15}看一下排序过程: 动画演示 : 代码如下 : (基础版) class Solution {public int[] sortArray(int[] nums) {for(int i …...

三种方式简单搭建http本地文件服务

有时候想写一个简单的html文件&#xff0c;然后加上一些image、js、css文件用于测试。希望有一个简单的http服务&#xff0c;总结了如下三种方式&#xff0c;欢迎讨论更多高效的方式。 &#xff08;一&#xff09;使用Web Server for Chrome浏览器扩展 之前写过一篇博文&#x…...

设计模式--适配器模式

实验8&#xff1a;适配器模式 本次实验属于模仿型实验&#xff0c;通过本次实验学生将掌握以下内容&#xff1a; 1、理解适配器模式的动机&#xff0c;掌握该模式的结构&#xff1b; 2、能够利用适配器模式解决实际问题。 [实验任务]&#xff1a;双向适配器 实现一个双向…...

Node.js教程-express框架

概述 Express是基于Node.js平台(建立在Node.js内置的http模块上)&#xff0c;快速、开放、极简的Web开发框架。 中文官网 http://www.expressjs.com.cn/。 Github地址&#xff1a;https://github.com/orgs/expressjs。 Express核心特性&#xff1a; 可设置中间件来响应 HTTP…...

location.origin兼容

if (!window.location.origin) {window.location.origin window.location.protocol "//" window.location.hostname (window.location.port ? : window.location.port: );}...

spring boot集成mybatis和springsecurity实现权限控制功能

上一篇已经实现了登录认证功能&#xff0c;这一篇继续实现权限控制功能&#xff0c;文中代码只贴出来和上一篇不一样的修改的地方&#xff0c;完整代码可结合上一篇一起整理spring boot集成mybatis和springsecurity实现登录认证功能-CSDN博客 数据库建表 权限控制的意思就是根…...

按键修饰符

在键盘监听事件时&#xff0c;我们经常需要判断详细的按键&#xff0c;此时&#xff0c;可以为键盘相关的事件添加按键修饰符&#xff0c;例如&#xff1a; 键盘修饰符案例&#xff1a;...

新版IDEA中Git的使用(一)

说明&#xff1a;本文介绍如何在新版IDEA中使用Git 创建项目 首先&#xff0c;在GitLab里面创建一个项目&#xff08;git_demo&#xff09;&#xff0c;克隆到桌面上。 然后在IDEA中创建一个项目&#xff0c;项目路径放在这个Git文件夹里面。 Git界面 当前分支&Commit …...

AI驱动的科研绘图革命:DeTikZify如何终结图表代码的手动时代

AI驱动的科研绘图革命&#xff1a;DeTikZify如何终结图表代码的手动时代 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 当deadline遇上绘图难题&a…...

TrackingNet评估实战:从注册到结果解析

1. TrackingNet评估平台入门指南 第一次接触TrackingNet这个目标跟踪领域的权威评估平台时&#xff0c;我和大多数研究者一样有点懵。这个平台不像GitHub那样有直观的界面&#xff0c;操作流程也相对复杂。不过别担心&#xff0c;跟着我的实战经验走&#xff0c;保证你能少踩8…...

从旅游Vlog到新闻视频:QVHIGHLIGHTS数据集在跨领域应用中的实战指南

QVHIGHLIGHTS数据集&#xff1a;跨领域视频内容智能解析的工程实践 当你在旅行Vlog中搜索"日落时分的海滩漫步"&#xff0c;或在新闻视频中寻找"抗议活动现场冲突画面"&#xff0c;传统视频平台只能返回整段视频——这就像给你一整本书而不是精确的页码。Q…...

深度学习驱动的光谱超分辨率:技术演进与应用前景

1. 光谱超分辨率技术的前世今生 我第一次接触光谱超分辨率技术是在2015年&#xff0c;当时还在用传统的线性插值方法处理遥感图像。记得有次为了获取一片农田的高光谱数据&#xff0c;团队不得不动用昂贵的机载传感器&#xff0c;结果因为天气原因导致数据质量极差。正是这次经…...

古基因组学:降解DNA的损伤模式、污染评估与群体历史推断

点击 “AladdinEdu&#xff0c;你的AI学习实践工作坊”&#xff0c;注册即送-H卡级别算力&#xff0c;沉浸式云原生集成开发环境&#xff0c;80G大显存多卡并行&#xff0c;按量弹性计费&#xff0c;教育用户更享超低价。 摘要&#xff1a;古基因组学通过对古代生物遗骸中高度降…...

英雄联盟自动化助手:提升游戏效率的全方位解决方案

英雄联盟自动化助手&#xff1a;提升游戏效率的全方位解决方案 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari作为一…...

YOLOv8鹰眼目标检测问题解决:常见部署错误与使用技巧汇总

YOLOv8鹰眼目标检测问题解决&#xff1a;常见部署错误与使用技巧汇总 1. 引言&#xff1a;为什么选择YOLOv8鹰眼目标检测 YOLOv8作为当前计算机视觉领域最先进的目标检测模型之一&#xff0c;以其卓越的实时性和准确性赢得了广泛认可。鹰眼目标检测镜像基于Ultralytics官方YO…...

Arcgis符号化实战:用矢量文件制作专业级统计地图(附最新配色方案)

ArcGIS符号化实战&#xff1a;用矢量文件制作专业级统计地图&#xff08;附最新配色方案&#xff09; 当你面对一叠枯燥的表格数据时&#xff0c;是否想过如何让这些数字"活"起来&#xff1f;统计地图正是将抽象数据转化为直观视觉表达的利器。作为地理信息系统领域的…...

共享图书借阅系统 Java 源码 + 数据库设计完整方案

以下是一个共享图书借阅系统的Java源码与数据库设计的完整方案&#xff0c;涵盖系统架构、核心功能实现、数据库设计以及安全防护措施等方面&#xff1a;一、系统架构技术栈&#xff1a;后端&#xff1a;Spring Boot 2.x MyBatis-Plus&#xff08;简化数据库操作&#xff09;前…...

Java学习——String 类的不可变性、底层实现(JDK1.8+)

目录 一、核心定义与设计思想 1. 核心定义 2. 核心设计思想 二、底层实现原理&#xff08;含 JDK 源码分析 / 反编译验证&#xff09; 1. JDK1.8 String 核心源码解析 2. 字符串常量池&#xff08;JDK1.8 底层&#xff09; 3. 反编译验证&#xff08;不可变性 编译器优…...