力扣(LeetCode)LCR 179. 查找总价格为目标值的两个商品(Java)

embedded/2024/11/14 15:17:20/
White graces:个人主页

🙉专栏推荐:Java入门知识🙉

🐹今日诗词:西山白雪三城戍,南浦清江万里桥🐹


⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏

⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏


目录

 题目描述

题目解析

正常思路(暴力解法)

双指针算法

代码

复杂度分析

美图分享


 题目描述

链接: LCR 179. 查找总价格为目标值的两个商品

购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。

示例 1:

输入:price = [3, 9, 12, 15], target = 18
输出:[3,15] 或者 [15,3]

示例 2:

输入:price = [8, 21, 27, 34, 52, 66], target = 61
输出:[27,34] 或者 [34,27]

提示:

  • 1 <= price.length <= 10^5
  • 1 <= price[i] <= 10^6
  • 1 <= target <= 2*10^6

题目解析

正常思路(暴力解法)

正常思路: 两个for循环,计算两数和的所有可能情况, 然后与target比较, 但是这样会超时

双指针算法

双指针算法: 这个数组是升序数组(这点非常重要),

定义两个指针,分别在数组左右两端,left, right

情况1: price[left] + price[right] > target

大于目标值说明右边指针大了,应该right--才能接近目标值

情况2: price[left] + price[right] < target

小于目标值,说明左指针小了,应该left++才能接近目标值

情况3: price[left] + price[right] == target

等于目标值, 说明找到了,left和right对应的值就是答案

代码

循环终止条件: left++, right--, 当他们相遇说明没找到, 因此循环条件是 while (left < right)

class Solution {public int[] twoSum(int[] price, int target) {// 定义左右指针int left = 0;int right = price.length - 1;// 数组存储答案int[] arr = new int[2];while (left < right) {if (price[left] + price[right] > target) {right--;} else if(price[left] + price[right] < target) {left++;} else {arr[0] = price[left];arr[1] = price[right];// 找到一种情况就可以跳出循环了break;}}return arr;}
}

复杂度分析

美图分享

✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄

⭐️点赞收藏加关注,学习知识不迷路⭐️

🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

👍😏⛳️点赞☀️收藏⭐️关注😏👍

🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️


http://www.ppmy.cn/embedded/137527.html

相关文章

scala创建图书信息类,包含三个属性:书名,作者,价格

class Book(var title: String, var author: String, var price: Double) {// 可以在这里定义其他的方法&#xff0c;比如展示图书信息的方法等&#xff0c;以下是一个简单示例def showBookInfo(): Unit {println(s"书名: $title")println(s"作者: $author&quo…

ISP——你可以从这里起步(二)

接上一篇&#xff0c;上一篇是原理篇&#xff0c;这一篇是实战篇&#xff0c;为了实现下面框图中的不完美ISP。 第一章 做一张RAW图自己用 不是所有的人都能获得raw图&#xff0c;即使获得了raw图也需要对应的sensor参数才能把它用起来&#xff0c;所以我找了一条野路子可以把…

Android 开发指南:初学者入门

Android 是全球最受欢迎的移动操作系统之一&#xff0c;为开发者提供了丰富的工具和资源来创建各种类型的应用程序。本文将为你提供一个全面的入门指南&#xff0c;帮助你从零开始学习 Android 开发。 目录 1. 了解 Android 平台[1]2. 设置开发环境[2]3. 学习基础知识[3]4. 创…

H3C ER8300G2-X未授权导致信息泄露漏洞(CVE-2024-32238)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…

解非线性方程组

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的&#xff1a;进一步熟练掌握解非线性方程组牛顿迭代算法&#xff0c;提高编程能力和解算非线性方程组问题的实践技能。 实验内容&#xff1a; 设有非线性方程组(此方程组是非标准型) 实验说明&#xff1…

【Linux】内核参数修改

说明 在 liunx系统中内核参数主要涉及到两处的配置文件&#xff1a; /etc/sysctl.conf 和这个目录/etc/sysctl.d下的所有.conf 结尾的文件。 /etc/sysctl.d/ 存放的系统内核参数配置文件在系统启动时会被 sysctl 工具读取并应用。以下是关于这些文件的加载机制和如何避免相互…

The 3rd Universal CupStage 15: Chengdu, November 2-3, 2024(2024ICPC 成都)

Problem L. Recover Statistics 题目意思&#xff1a; 给定a, b, c三个值&#xff0c;确保构造的数列中包含满足题目的数量 解题思路&#xff1a; 100 中 选择a 50个&#xff0c; b45个&#xff0c; c4个。 #include <iostream>using namespace std;using ll long …

HarmonyOS 沉浸式状态实现的多种方式

1. HarmonyOS 沉浸式状态实现的多种方式 HarmonyOS 沉浸式状态实现的多种方式 1.1. 方法一 1.1.1. 实现讲解 &#xff08;1&#xff09;首先设置setWindowLayoutFullScreen(true)&#xff08;设置全屏布局&#xff09;。   布局将从屏幕最顶部开始到最底部结束&#xff0c…