leetcode刷题日记——167. 两数之和 II - 输入有序数组

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 题目要求求数值numbers中的和为 target 的两个数的下标
  • 最简单的思路就是暴力求解,两两挨个组合,但时间复杂度为O(n2),不一定能通过
  • 因为数组为非递减,那我们可以使用双指针,并从数组首尾出发
    • 如果 和 > target,则右指针向左移动,因为左边的数小于右边
    • 如果 和 < target,则左指针向右移动,因为右边的数大于左边
  • 运行如下
    在这里插入图片描述
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {int left=0,right=numbersSize-1;int* ans=(int*)malloc(sizeof(int)*2);*returnSize=2;while(left<right){if(numbers[left]+numbers[right]==target){ans[0]=left+1;ans[1]=right+1;break;}else if(numbers[left]+numbers[right]>target){right--;}else{left++;}   }return ans;
}
  • 时间复杂度O(n),空间复杂度O(1)

[ 官方题解 ]:

  • 一、二分查找,在数组中找到两个数,使得它们的和等于目标值,可以首先固定第一个数,然后寻找第二个数,第二个数等于目标值减去第一个数的差。利用数组的有序性质,可以通过二分查找的方法寻找第二个数。为了避免重复寻找,在寻找第二个数时,只在第一个数的右侧寻找。
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {int* ret = (int*)malloc(sizeof(int) * 2);*returnSize = 2;for (int i = 0; i < numbersSize; ++i) {int low = i + 1, high = numbersSize - 1;while (low <= high) {int mid = (high - low) / 2 + low;if (numbers[mid] == target - numbers[i]) {ret[0] = i + 1, ret[1] = mid + 1;return ret;} else if (numbers[mid] > target - numbers[i]) {high = mid - 1;} else {low = mid + 1;}}}ret[0] = -1, ret[1] = -1;return ret;
}
  • 二、双指针,如上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode-Hot100】盛最多水的容器

题目 解答 目的是求面积最大&#xff0c;面积是由两个下标和对应的最小值得到&#xff0c;因此唯一的问题就是如何遍历这两个下标。我采用begin和end两个变量&#xff0c;确保begin是小于end的&#xff0c;使用它们二者求面积&#xff0c;代码如下&#xff1a; 很不幸 出错了…

dify文本生成图片

安装Stability 授权 Stability AI - Developer Platform Stability AI - Developer Platform 创建智能体 模型要选好点的&#xff0c;要不可能会生成失败。

前端开发中的问题排查与定位:HTML、CSS、JavaScript(报错的解决方式)

目录 1.html 1. 结构错误调试&#xff1a;标签未正确嵌套 2. 语法问题调试&#xff1a;缺失引号 3. 断点调试&#xff1a;动态生成内容时的 JavaScript 错误 4. 网络调试&#xff1a;资源加载错误 5. 性能调试&#xff1a;页面加载性能 总结&#xff1a; 2.CSS 1. 定位…

Spring MVC 重定向(Redirect)详解

Spring MVC 重定向&#xff08;Redirect&#xff09;详解 1. 核心概念与作用 重定向&#xff08;Redirect&#xff09; 是 Spring MVC 中一种客户端重定向机制&#xff0c;通过 HTTP 302 状态码&#xff08;默认&#xff09;将用户浏览器重定向到指定 URL。 主要用途&#xf…

《深入探秘:分布式软总线自发现、自组网技术原理》

在当今数字化浪潮中&#xff0c;分布式系统的发展日新月异&#xff0c;而分布式软总线作为实现设备高效互联的关键技术&#xff0c;其自发现与自组网功能宛如打开智能世界大门的钥匙&#xff0c;为多设备协同工作奠定了坚实基础。 分布式软总线的重要地位 分布式软总线是构建…

eplan许可证的用户权限管理

在电气设计领域&#xff0c;EPLAN软件以其强大的功能和灵活性而备受用户青睐。然而&#xff0c;随着企业规模的扩大和团队人数的增加&#xff0c;如何确保软件使用的安全与效率成为了一个重要的问题。EPLAN许可证的用户权限管理功能为此提供了完美的解决方案。本文将详细介绍EP…

pytorch小记(十七):PyTorch 中的 `expand` 与 `repeat`:详解广播机制与复制行为(附详细示例)

pytorch小记&#xff08;十七&#xff09;&#xff1a;PyTorch 中的 expand 与 repeat&#xff1a;详解广播机制与复制行为&#xff08;附详细示例&#xff09; &#x1f680; PyTorch 中的 expand 与 repeat&#xff1a;详解广播机制与复制行为&#xff08;附详细示例&#xf…

Databricks: Why did your cluster disappear?

You may found that you created a cluster many days ago, and you didnt delete it, but it is disapear. Why did this happen? Who deleted the cluster? Actually, 30 days after a compute is terminated, it is permanently deleted automaticlly. If your workspac…

C语言【输出字符串中的大写字母】

题目 输出字符串中的大写字母 思路&#xff08;注意事项&#xff09; 纯代码 #include<stdio.h> #include<string.h>int main(){char str[20], ans[20];fgets(str, sizeof(str), stdin);str[strcspn(str, "\n")] \0;for (int i 0, j 0; i < strl…

基于队列构建优先级抢占机制的LED灯框架设计与实现

文章目录 前言一、LED 显示框架概述1. 框架结构图2. 基本机制 二、核心结构与接口设计1. 状态命令结构2. 状态项结构3. LED框架配置结构4. LED运行控制器 三、LED框架逻辑流程1. 初始化逻辑2. 优先级抢占判断与处理逻辑3. 执行队列命令并处理tick4. 队列为空时的默认状态回滚 四…

PyQt6实例_A股财报数据维护工具_解说并数据与完整代码分享

目录 1 20250403之前的财报数据 2 整个项目代码 3 工具使用方法 3.1 通过akshare下载 3.2 增量更新 3.3 查看当前数据情况 3.4 从数据库中下载数据 视频 1 20250403之前的财报数据 通过网盘分享的文件&#xff1a;财报三表数据20250403之前.7z 链接: https://pan.ba…

React 之 Redux 第三十一节 useDispatch() 和 useSelector()使用以及详细案例

使用 Redux 实现购物车案例 由于 redux 5.0 已经将 createStore 废弃&#xff0c;我们需要先将 reduxjs/toolkit 安装一下&#xff1b; yarn add reduxjs/toolkit// 或者 npm install reduxjs/toolkit使用 vite 创建 React 项目时候 配置路径别名 &#xff1a; // 第一种写法…

Spring Boot 中集成 Knife4j:解决文件上传不显示文件域的问题

Spring Boot 中集成 Knife4j&#xff1a;解决文件上传不显示文件域的问题 在使用 Knife4j 为 Spring Boot 项目生成 API 文档时&#xff0c;开发者可能会遇到文件上传功能不显示文件域的问题。本文将详细介绍如何解决这一问题&#xff0c;并提供完整的解决方案。 Knife4j官网…

OpenCV 图形API(17)计算输入矩阵 src 中每个元素的平方根函数sqrt()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 描述 计算数组元素的平方根。 cv::gapi::sqrt 函数计算每个输入数组元素的平方根。对于多通道数组&#xff0c;每个通道会独立处理。其精度大约与内置的 …

大学论文书写规范与格式说明

大学论文书写规范与格式说明 (适用于人文社科、理工科通用框架) 一、论文整体结构 1. 基本组成部分 封面 包含论文标题、作者姓名、学院/专业、学号、指导教师、提交日期等(按学校模板填写)。 中英文摘要 中文摘要:300~500字,概述研究背景、方法、结论与创新点,末尾附…

C# 串口通信

1. 导入 using System.IO.Ports;2. 初始化定义 SerialPort sp new SerialPort(); // 设置串口 sp.PortName "COM3"; // 串口 sp.BaudRate 9600; // 波特率 sp.Parity Parity.None; // 校验位 sp.DataBits 8; // 数据位 sp.StopBits StopBits.One; // 停…

android14 keycode 上报 0 解决办法

驱动改完后发现上报了keycode=0 04-07 13:02:33.201 2323 2662 D WindowManager: interceptKeyTq keycode=0 interactive=false keyguardActive=true policyFlags=2000000 04-07 13:02:33.458 2323 2662 D WindowManager: interceptKeyTq keycode=0 interactive=false key…

C++day9

思维导图 牛客练习 练习&#xff1a; 将我们写的 myList 迭代器里面 operator[] 和 operator 配合异常再写一遍 #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector>…

批量合并多张 jpg/png 图片为长图或者 PDF 文件,支持按文件夹合并图片

我们经常会碰到需要将多张图片拼成一张图片的场景&#xff0c;比如将多张图片拼成九宫格图片&#xff0c;或者将多张图片拼成一张长图。还有可能会碰到需要将多张图片合并成一个完整的 PDF 文件来方便我们进行打印或者传输等操作。那这些将图片合并成一张图片或者一个完整的文档…

程序化广告行业(73/89):买卖双方需求痛点及应对策略深度剖析

程序化广告行业&#xff08;73/89&#xff09;&#xff1a;买卖双方需求痛点及应对策略深度剖析 大家好&#xff01;一直以来&#xff0c;我都热衷于在技术领域探索学习&#xff0c;也深知知识的分享能让我们共同进步。写这篇博客的目的&#xff0c;就是希望能和大家一起深入了…