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

力扣刷题(6)

两数之和 II - 输入有序数组

两数之和 II - 输入有序数组-力扣

在这里插入图片描述
思路:

  1. 因为该数组是非递减顺序排列,因此可以设两个左右下标
  2. 当左右下标的数相加大于target时,则表示右下标的数字过大,因此将右下标 - -
  3. 当左右下标的数相加小于target时,则表示左下标的数字过小,因此将左下标 + +
  4. 当相等时,则将左右下标赋值给动态开辟的数组,并返回(注意左右下标要+1)
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {int* ret=(int*)malloc(sizeof(int)*2);*returnSize=2;int left =0,right=numbersSize-1;while(left < right){if(numbers[left] + numbers[right] == target){ret[0]=left+1;ret[1]=right+1;return ret;}else if(numbers[left] + numbers[right] > target){right--;}else{left++;}}return ret;
}

在这里插入图片描述

三数之和

三数之和-力扣
在这里插入图片描述
思路来源:灵茶山艾府

  1. 将数组进行排序
  2. 将三个数分为两组,第一个数一组,第二三个数的和分为一组,这样思路就和上一题的两数相加相同了
  3. 当第一个数存在重复时,需要continue从而跳到最后一个重复的数
  4. 再对后两个数进行判断,思路同第一题

这题存在两个能够进行优化的地方:

  1. 当三个连续数字相加大于0时,则不存在和为0的数字,可以直接break退出循环(因为数组是有序的)
  2. 当一个数和最后两个最大的数字之和小于0,则该数字不可能存在为0的情况,直接continue进入下一个数字的判断即可
int cmp(const void* a, const void* b){return *(int*)a-*(int*)b;}int** threeSum(int* nums, int numsSize, int* returnSize, int** returnColumnSizes) {qsort(nums,numsSize,sizeof(int),cmp);int** ret=(int**)malloc(sizeof(int*)*numsSize*numsSize);*returnColumnSizes=(int*)malloc(sizeof(int)*numsSize*numsSize);int m=0;for(int i=0;i<numsSize-2;i++){//跳过重复数字if(i > 0 && nums[i] == nums[i-1])continue;if(nums[i] + nums[i+1] + nums[i+2] > 0)break;//优化一if(nums[i] + nums[numsSize-1] + nums[numsSize-2] < 0)continue;//优化二int j=i+1;int k=numsSize-1;while(j < k){if(nums[i] + nums[j] + nums[k] > 0)k--;else if(nums[i] + nums[j] + nums[k] < 0)j++;else{//添加三元组int* arr=(int*)malloc(sizeof(int)*3);arr[0]=nums[i];arr[1]=nums[j];arr[2]=nums[k];ret[m]=arr;(*returnColumnSizes)[m++]=3;//跳过重复数字for(j++;j < k && nums[j] == nums[j-1];j++);for(k--;k > j && nums[k] == nums[k+1];k--);}}}*returnSize=m;return ret;
}

在这里插入图片描述

最接近的三数之和

最接近的三数之和-力扣
在这里插入图片描述
思路同第二题类似

int cmp(const void* a,const void* b) 
{return *(int*)a-*(int*)b;
}int threeSumClosest(int* nums, int numsSize, int target) {qsort(nums,numsSize,sizeof(int),cmp);int sum=nums[0]+nums[1]+nums[2];for(int i=0;i<numsSize-2;i++){int j=i+1;int k=numsSize-1;while(j < k){int tmp=nums[i]+nums[j]+nums[k];if(abs(tmp-target) < abs(sum-target))sum=tmp;if(tmp > target)k--;else if(tmp < target)j++;elsereturn sum;}}return sum;
}

在这里插入图片描述

相关文章:

力扣刷题(6)

两数之和 II - 输入有序数组 两数之和 II - 输入有序数组-力扣 思路&#xff1a; 因为该数组是非递减顺序排列&#xff0c;因此可以设两个左右下标当左右下标的数相加大于target时&#xff0c;则表示右下标的数字过大&#xff0c;因此将右下标 - -当左右下标的数相加小于targ…...

TiDB 扩容过程中 PD 生成调度的原理及常见问题丨TiDB 扩缩容指南(一)

导读 作为一个分布式数据库&#xff0c;扩缩容是 TiDB 集群最常见的运维操作之一。本系列文章&#xff0c;我们将基于 v7.5.0 具体介绍扩缩容操作的具体原理、相关配置及常见问题的排查。 通常&#xff0c;我们根据当前资源状态来决定是否需要调整 TiKV 节点的规模&#xff0…...

匿名管道详解

进程间通讯的目的 数据传输&#xff1a;一个进程需要把它的数据发送给另一个数据资源共享&#xff1a;多个进程需要共享同样的资源通知事件&#xff1a;一个进程需要向另一个或者一组进程发送消息&#xff0c;通知它发生了某种事件&#xff08;如进程终止时要通知父进程&#…...

深度解读MySQL意向锁的工作原理机制与应用场景

意向锁 意向锁的概念 意向锁是InnoDB自动添加的一种锁&#xff0c;不需要用户去干预。 是数据库中的一种表级锁&#xff0c;一个事务要给一个资源加锁时&#xff0c;必须要先获取到对应类型的意向锁之后&#xff0c;才可以给这个资源加上自己想要的共享锁或者排他锁&#xff0…...

ZYNQ TCP 协议的远程更新 QSPI Flash

1 SDK直接少些Flash过程 ****** Xilinx Program Flash ****** Program Flash v2019.1 (64-bit)**** SW Build 2552052 on Fri May 24 14:49:42 MDT 2019** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.WARNING: Failed to connect to hw_server at TCP:127.0.0.1:3…...

告别繁琐粘贴,CleanClip Mac 版,让复制粘贴变得简单快捷!粘贴队列功能太强大了!

告别繁琐粘贴&#xff0c;CleanClip Mac 版&#xff0c;让复制粘贴变得简单快捷&#xff01; CleanClip for Mac &#x1f4cb; 是一款专为Mac用户设计的高效剪贴板管理工具。它解决了传统复制粘贴过程中的繁琐问题&#xff0c;让你的工作流程更加顺畅和高效。 &#x1f504;…...

前端基础知识(HTML+CSS+JavaScript)

文章目录 一、HTML1.1 HTML 基础&#xff1a;1.1.1 HTML 的概念&#xff1a;1.1.2 认识 HTML 标签&#xff1a;1.1.3 HTML 文件基本结构&#xff1a;1.1.4 标签层次结构&#xff1a; 1.2 HTML 快速入门&#xff1a;1.3 HTML常见标签&#xff1a;1.3.1 标题标签&#xff1a;h1-h…...

算力服务器和GPU服务器的区别是什么?

随着互联网科技的快速发展&#xff0c;服务器的类型也变得多种多样了&#xff0c;今天小编就来为大家介绍一下算力服务器和GPU服务器还有他们之间的区别是什么&#xff1f; 算力服务器通常是指具有着较高计算能力的服务器&#xff0c;算力服务器一般都是用于处理大量的计算任务…...

获取Live2d模型

文章目录 1、 Live2D官方示例数据集&#xff08;可免费下载&#xff09;2、模之屋3、unity商店4、直接b站搜索5、youtube6、BOOTH完结 1、 Live2D官方示例数据集&#xff08;可免费下载&#xff09; 官方提供了一些 Live2D实例模型给大家下载使用 地址&#xff1a;https://ww…...

软考架构-层次架构风格

一、两层C/S架构 客户端和服务器都有处理功能。处理在表示层&#xff08;客户端&#xff09;和数据层&#xff08;服务器&#xff09;进行 二、三层C/S架构 将处理功能独立出来。表示层在客户机上&#xff0c;功能层在应用服务器上&#xff0c;数据层在数据库服务器上。 三…...

Unity射击游戏开发教程:(35)轰炸敌人

现在敌人和飞机已经慢慢地越来越有各自地地行为了,在本文中,我们将介绍如何创建一个具有以下行为的敌人: 飞机会来回弹跳。飞机将有 4 架无人机轰炸机围绕飞机旋转。无人机轰炸机会偶尔投下沿着屏幕传播的炸弹。如果炸弹击中玩家或在随机时间后就会爆炸。如果炸弹没有击中玩…...

【网络】高级IO——select版本TCP服务器

目录 前言 一&#xff0c;select函数 1.1.参数一&#xff1a;nfds 1.2.参数二&#xff1a; readfds, writefds, exceptfds 1.2.1.fd_set类型和相关操作宏 1.2.2.readfds, writefds, exceptfds 1.2.3.怎么理解 readfds, writefds, exceptfds是输入输出型参数 1.3.参数三…...

【C++】学完c语言后的c++基础知识补充!(命名空间、输入和输出、缺省函数、函数重载、引用、内联函数代替宏、nullptr代替NULL)

一. 命名空间 1. 定义 出现的意义&#xff1a;解决各种函数、关键词和类的名称冲突问题。 定义方式&#xff1a;namespace 命名空间的名字 { } &#xff08;注意&#xff01;}后面不加&#xff1b;&#xff09; namespace 是关键词命名空间的…...

uniapp自定义导航栏以及页面加背景

如果想给uniapp的页面加背景图片的话&#xff0c;疯狂度了之后会发现uniapp中背景图片用本地图片不起效果&#xff0c;所以一般用网络路径&#xff0c;之后又会发现&#xff0c;页面如果直接加背景的话有可能会遇到页面内容不够&#xff0c;背景撑不满整个页面&#xff0c;如果…...

MacOS Sonoma(14.x) 大写模式或中文输入法下的英文模式,光标下方永远会出现的CapsLock箭头Icon的去除办法

如图&#xff0c;MacOS Sonoma(14.x) 大写模式或中文输入法下的英文模式下&#xff0c;光标下方永远会出现一个CapsLock箭头Icon。此Icon挡住视野&#xff0c;还容易误触导致切换大小写状态&#xff0c;带来的收益远远小于带来的困扰。 解决办法 打开终端&#xff0c;输入以下…...

C#基础(10)变长参数和参数默认值

前言 作为函数的补充知识点&#xff0c;我们已经学习了ref和out&#xff0c;接下来两节我们继续来讲函数相关的内容。本节则讲解变长参数和参数默认值。 函数语法 关键字&#xff1a;params public void PrintNumbers(params int[] numbers) {for 相关逻辑 } 注意 params…...

Vue转React开发经验分享——hooks写法如何触发react生命周期、如何触发数据更新?

背景&#xff1a;习惯了vue的写法&#xff0c;并且vue2和vue3都比较熟悉&#xff0c;在转react开发中&#xff0c;不停的思考react和vue框架的相似之处&#xff0c;以及vue中的写法在react里怎么替换。本文将组件更新或组件生命周期角度出发聊聊如何使用hooks触发生命周期&…...

算法入门-贪心1

第八部分&#xff1a;贪心 409.最长回文串&#xff08;简单&#xff09; 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回通过这些字母构造成的最长的回文串 的长度。 在构造过程中&#xff0c;请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串…...

element-plus的面包屑组件el-breadcrumb

面包屑组件主要用来显示当页面路径&#xff0c;以及快速返回之前的页面。 涉及2个组件 el-breadcrumb 和el-breadcrumb-item, el-breadcrumb的spearator指定item的分隔符 el-breadcrumb-item的to和replace属性和vue-router的一致&#xff0c;需要结合vue_router一起使用 用法…...

推荐几个网盘资源站给大伙,找资源更方便

夸克网盘在当前已然成为极为主流的网盘之一&#xff0c;其功能体验堪称强大&#xff0c;不仅支持在线解压阅读&#xff0c;磁力离线等功能也十分出色。那么&#xff0c;究竟该如何寻找夸克资源呢&#xff1f;下面&#xff0c;我就来为大家分享几个堪称神级的夸克资源网站。 一、…...

黄柏基因组-小檗碱生物合成的趋同进化-文献精读142

Convergent evolution of berberine biosynthesis 小檗碱生物合成的趋同进化 摘要 小檗碱是一种有效的抗菌和抗糖尿病生物碱&#xff0c;主要从不同植物谱系中提取&#xff0c;特别是从小檗属&#xff08;毛茛目&#xff0c;早期分支的真双子叶植物&#xff09;和黄柏属&…...

最新Spring Security实战教程(十七)企业级安全方案设计 - 多因素认证(MFA)实现

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…...

【HarmonyOS Next之旅】DevEco Studio使用指南(三十一) -> 同步云端代码至DevEco Studio工程

目录 1 -> 同步云函数/云对象 1.1 -> 同步单个云函数/云对象 1.2 -> 批量同步云函数/云对象 2 -> 同步云数据库 2.1 -> 同步单个对象类型 2.2 -> 批量同步对象类型 3 -> 一键同步云侧代码 1 -> 同步云函数/云对象 说明 对于使用DevEco Studio…...

【方案分享】蓝牙Beacon定位精度优化(包含KF、EKF与UKF卡尔曼滤波算法详解)

蓝牙Beacon定位精度优化&#xff1a;KF、EKF与UKF卡尔曼滤波算法详解 标签&#xff1a;蓝牙定位&#xff5c;Beacon&#xff5c;卡尔曼滤波&#xff5c;UKF&#xff5c;EKF&#xff5c;RSSI&#xff5c;室内定位&#xff5c;滤波算法&#xff5c;精度优化 相关分享&#xff1a;…...

Gin框架实战指南:从入门到进阶

Gin框架实战指南&#xff1a;从入门到进阶 在当今的后端开发领域&#xff0c;Gin框架以其高性能、简洁易用的特点&#xff0c;赢得了众多Go语言开发者的青睐。本文将带你深入探索Gin框架的方方面面&#xff0c;从基础的安装与使用&#xff0c;到响应处理、请求参数解析、中间件…...

Java 集合面试题 PDF 及常见考点解析与备考指南

为了帮助你更好地学习Java集合相关知识&#xff0c;我将围绕Java集合面试题展开&#xff0c;介绍常见的技术方案及应用实例。这些内容涵盖了集合框架的基本概念、常见集合类的特点与使用场景&#xff0c;以及在实际开发中可能遇到的问题及解决方案。 Java集合面试题&#xff1…...

使用WebSocket实时获取印度股票数据源(无调用次数限制)实战

使用WebSocket实时获取印度股票数据源&#xff08;无调用次数限制&#xff09;实战 一、前置准备 1. 获取API密钥 登录 StockTV开发者平台 → 联系客服获取测试Key&#xff08;格式MY4b781f618e3f43c4b055f25fa61941ad&#xff09;&#xff0c;该密钥无调用次数限制且支持实时…...

【八股消消乐】MySQL参数优化大汇总

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本专栏《八股消消乐》旨在记录个人所背的八股文&#xff0c;包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…...

入门AJAX——XMLHttpRequest(Post)

一、前言 在上篇文章中&#xff0c;我们已经介绍了 HMLHttpRequest 的GET 请求的基本用法&#xff0c;并基于我提供的接口练习了两个简单的例子。如果你还没有看过第一篇文章&#xff0c;强烈建议你在学习完上篇文章后再学习本篇文章&#xff1a; &#x1f517;入门AJAX——XM…...

linux安全加固(非常详细)

安全加固方案原则 1.版本升级 对于系统和应用在使用过程中暴露的安全缺陷&#xff0c;系统或应用厂商会及时发布解决问题的升级补丁包。升级系统或应用版本&#xff0c;可有效解决旧版本存在的安全风险。2.关闭端口服务 在不影响业务系统正常运行情况下&#xff0c;停止或禁用承…...