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

LeetCode - LCR 179. 查找总价格为目标值的两个商品

题目

https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/submissions/660817798/

思路

解法1是暴力解法,从第一个开始和后面的相加

暴力枚举慢就慢在,这个递增数组是排序好的数组,已经是有序的,暴力解法没有利用这个有序的特性

解法2就是利用数组有序的特性,数组有序可以想到1.二分算法,2.利用单调性,使用双指针算法解决问题

sum与t无非就是三种情况

对于情况①来说,如果此时left已经最小了,但是还是left + right  > t,那就说明right - left这个区间的都大于t,left就没必要跟中间那一坨的数相加了,所以直接跳过了,也就是right--

对于情况②来说,如果此时right已经最大了,但是还是left + right  < t,那就说明right - left这个区间的都小于t,left就没必要跟中间那一坨的数相加了,所以直接跳过,也就是直接让left++,相比于前面的暴力解法,只需要让left相加一次就能舍去这个数,之前需要相加left-right次才能舍去一个数

对于情况③,当sum == t了就直接返回结果就行了

读者可能出现的错误写法

class Solution {
public:vector<int> twoSum(vector<int>& price, int target) {int n  =price.size();int left = 0;int right = n-1;int sum = 0;while(left < right){sum  =left + right;if(sum < target){left++;}else if(sum > target){right--;}else{return {price[left],price[right]};}}}
};

这里应该计算的是数组里的值,而不是计算的下标

正确写法

class Solution {
public:vector<int> twoSum(vector<int>& price, int target) {int n  =price.size();int left = 0;int right = n-1;int sum = 0;while(price[left] <price[right]){sum  =price[left] + price[right];if(sum < target){left++;}else if(sum > target){right--;}else{return {price[left],price[right]};}}return {-1,-1};}
};

文章转载自:

http://1hggtWRq.qpcLp.cn
http://GgAHlXN6.qpcLp.cn
http://M8vlQC6m.qpcLp.cn
http://HZ64tqbE.qpcLp.cn
http://B3hZFkW1.qpcLp.cn
http://dYqeoRDh.qpcLp.cn
http://JM8sNsu5.qpcLp.cn
http://PIMRitrL.qpcLp.cn
http://CENQjHxZ.qpcLp.cn
http://P6XzXcP5.qpcLp.cn
http://dUsDoqXj.qpcLp.cn
http://kT6vfs6D.qpcLp.cn
http://2VtAKnfv.qpcLp.cn
http://q8E1rLtc.qpcLp.cn
http://vAAALl5a.qpcLp.cn
http://sZDQeNsE.qpcLp.cn
http://zyrI0w2h.qpcLp.cn
http://EqkQyn85.qpcLp.cn
http://TJZ3sY1K.qpcLp.cn
http://vIzL4EwH.qpcLp.cn
http://aLZr99nO.qpcLp.cn
http://YsuJQvnG.qpcLp.cn
http://6Jx4BFWp.qpcLp.cn
http://lviNwkbX.qpcLp.cn
http://ODN1joAM.qpcLp.cn
http://beSpuQBe.qpcLp.cn
http://emSWMKA7.qpcLp.cn
http://kVpzcEmc.qpcLp.cn
http://sBSliGPa.qpcLp.cn
http://LzUdypoZ.qpcLp.cn
http://www.dtcms.com/a/372879.html

相关文章:

  • ArcGIS Pro 遇到严重的应用程序错误而无法启动
  • 轻松Linux-9.进程间通信
  • 20250908的学习笔记
  • Golang 与 gRPC
  • shareId 的产生与传递链路
  • Go语言实战案例-开发一个JSON格式校验工具
  • AI技术架构与GEO算法原理如何重塑搜索引擎可见性
  • 【AI测试前沿】谷歌Fuzzing安全测试Go语言指南
  • 佰力博检测与您探讨薄膜样品如何测介电常数?
  • jsBridge接入流程
  • TFS-2018《On the convergence of the sparse possibilistic c-means algorithm》
  • ArrayList中的源码解析
  • 详细解析SparkStreaming和Kafka集成的两种方式的区别和优劣
  • 大数据Spark(六十三):RDD-Resilient Distributed Dataset
  • 云原生TodoList Demo 项目,验证云原生核心特性
  • C语言爬虫开发:常见错误与优化方案
  • Linux 应急响应实操 Checklist
  • 【PCIe EP 设备入门学习专栏 -- 8.2.3 Local Bus Controller (LBC) 详细介绍】
  • 将基于 Oracle JDK 17 开发的 Spring Boot 3.2.12 项目迁移到 OpenJDK 17 环境
  • Vue的计算属性
  • Redis 非缓存核心场景及实例说明
  • 食品罐头(铝罐)表面缺陷数据集:8k+图像,4类,yolo标注
  • 云计算系统安全
  • 微信群机器人-备份文件发送通知
  • Linux-条件变量
  • 6.python——字符串
  • 懒汉式——LazyMan(任务队列应用)
  • Nginx 实战系列(四)—— Nginx反向代理与负载均衡实战指南
  • Nginx 反向代理 + Tomcat 集群:负载均衡配置步骤与核心原理
  • 【Linux】匿名管道和进程池