優選算法訓練篇07--力扣LCR179.查找總價格為目標值的兩個商品

目錄

1.題目鏈接:LCR179.查找總價格為目標值的兩個商品

2.題目描述:

3.解法一(暴力解法,會超時):

4.解法二(雙指針-對撞指針):


1.題目鏈接:LCR179.查找總價格為目標值的兩個商品

2.題目描述:
?

購物車內的商品價格按照升序記錄于數組?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

3.解法一(暴力解法,會超時):

解法思路:

兩層for循環列出所有兩個數的組合,判斷是否等于目標值。

算法流程:兩個for循環

  1. 外層for循環依次枚舉第一個數a;
  2. 內存for循環依次枚舉第二個數b,讓它和a匹配;(這里我們可以有個小優化,我們挑選第二個數的時候,可以不從第一個數開始選,因為a前面的數我們都已經在之間考慮過了;因此,我們可以從a往后的數開始枚舉)
  3. 然后將挑選的兩個數相加,判斷是否符合目標值
class Solution
{
public:vector<int> twoSum(vector<int>& nums, int target){int n = nums.size();for (int i = 0; i < n; i++){for (int j = i + 1; j < n; j++){if (nums[i] + nums[j] == target)return { nums[i],nums[j] };}}return { -1,-1 };}
};

4.解法二(雙指針-對撞指針):

算法思路:

注意到本題是升序的數組,因此我們可以用對象指針優化時間復雜度

算法流程(附帶算法分析,為什么可以使用對撞指針):

  1. 初始化left,right分別指向數組的左右兩端(我們這里所說的指針其實是數組的小標)
  2. 當left < right 的時候,一直循環? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當num[left] + num[right] == target時,說明找到結果,記錄結果,并且返回;? ? ? ? ? ? ? ? 當num[left] + num[right] < target時:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 對于num[left]而言,此時nums[right]相當于nums[left]能碰到的最大值(注意:這里是升序數組)。如果此時不符合要求,說明在這個數組里面沒有別的數符合num[left]的要求了(最大的數都滿足不了你,你已經沒救了)。因此我們可以大膽舍去這個數,讓left++,去比較下一組數據;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?那對于nums[right]而言,由于此時兩數之和是小于目標值的,nums[right]還可以選擇比nums[left]大的值繼續努力達到目標,因此right指針我們按兵不動。
  3. 當num[left] + nums[right] > target時,同理我們可以舍去nums[right]。讓right--,繼續比較下一組數據,而left指針不變(因為它還可以去匹配比nums[right]更小的數)
class Solution {
public:vector<int> twoSum(vector<int>& price, int target) {vector<int> v;int left = 0,right = price.size() - 1;while(left<right){int sum = price[left] + price[right];if(sum == target){v.push_back(price[left]);v.push_back(price[right]);break;}else if(sum > target){right--;}else{left++;}}return v;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74025.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74025.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74025.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

KMP-子串匹配算法-關鍵點理解

1.理解next[]數組的使用與來歷 2.求解next[]數組 一、kmp算法的原理 首先觀察暴力解法&#xff1a;假設主串為&#xff1a;abdxxabc&#xff0c;模式串為abxxabd。 暴力解法&#xff0c;就是對主串每個字符作為第一個字符&#xff0c;開始和模式串比較。 比如&#xff1a;從…

Flutter 學習之旅 之 flutter 使用 SQLite(sqflite) 實現簡單的數據本地化 保存/獲取/移除/判斷是否存在 的簡單封裝

Flutter 學習之旅 之 flutter 使用 SQLite&#xff08;sqflite&#xff09; 實現簡單的數據本地化 保存/獲取/移除/判斷是否存在 的簡單封裝 目錄 Flutter 學習之旅 之 flutter 使用 SQLite&#xff08;sqflite&#xff09; 實現簡單的數據本地化 保存/獲取/移除/判斷是否存在…

群體智能優化算法-粒子群優化算法(Particle Swarm Optimization, PSO,含Matlab源代碼)

摘要&#xff08;Abstract&#xff09; 粒子群優化&#xff08;PSO&#xff09;是一種基于群體智能的優化算法&#xff0c;受鳥群覓食行為的啟發。PSO 通過模擬粒子&#xff08;個體&#xff09;在搜索空間中的運動來尋找最優解。每個粒子根據自身的歷史最優位置&#xff08;p…

Redis 在windows下的下載安裝與配置

參考鏈接:https://developer.aliyun.com/article/1395346 下載 Redis 訪問 Redis 下載地址&#xff1a;https://github.com/tporadowski/redis/releases 下載 Redis 時&#xff0c;你可以選擇 ZIP 包或 MSI 安裝&#xff1a; ZIP包&#xff1a;需要手動解壓、初始化、配置和…

UE5材質法線強度控制節點FlattenNormal

連法 FlattenNormal內部是這樣的 FlattenNormal的作用是用來調整法線強度 連上FlattenNormal后 拉高數值

在 Elasticsearch 中探索基于 NVIDIA 的 GPU 加速向量搜索

作者&#xff1a;來自 Elastic Chris Hegarty 及 Hemant Malik 由 NVIDIA cuVS 提供支持&#xff0c;此次合作旨在為開發者在 Elasticsearch 中的向量搜索提供 GPU 加速。 在 Elastic Engineering 組織內&#xff0c;我們一直致力于優化向量數據庫的性能。我們的使命是讓 Lucen…

Android 13深度定制:SystemUI狀態欄時間居中顯示終極實戰指南

一、架構設計與技術解析 1. SystemUI狀態欄核心布局機制 層級結構 mermaid 復制 graph TDPhoneStatusBarView --> StatusBarContents[status_bar_contents]StatusBarContents --> LeftLayout[status_bar_left_side]StatusBarContents --> ClockLayout[Clock控件]Left…

ArcGIS10.X影像智能下載!遷移ArcGIS Pro批量智能高清影像下載工具至ArcGIS!

上周我們分享了 我寫的一個ArcGIS Pro版批量下載高清影像&#xff08;谷歌、天地圖、ESRI等&#xff09;工具給大家&#xff0c;Deepseek我&#xff01;寫一個ArcGIS Pro批量下載高清影像&#xff08;谷歌、天地圖、ESRI等&#xff09;工具給大家-CSDN博客文章瀏覽閱讀130次。深…

前端面經分享(25/03/19)

北京一家做協同辦公軟件出海的公司&#xff0c;技術一面&#xff0c;20k-40k&#xff0c;要求3-5年 詳細聊了一下上家公司的項目上家公司的項目是不做了嗎&#xff0c;離職原因是什么&#xff0c;你覺得公司的這個產品怎么樣在做AI類的業務時&#xff0c;作為前端感覺跟常規業務…

7 款可視化爬蟲工具全解析:案例示范與操作指南

目錄 1. ParseHub 2.WebHarvy 3.DataMiner 4.Dexi.io 5.ContentGrabber 6.Portia 7.UiPath 文檔聚焦 7 款熱門可視化爬蟲工具&#xff0c;突出簡便的可視化操作&#xff0c;簡單拖拽、設置&#xff0c;無需編程知識&#xff0c;人人皆可上手。 1. ParseHub ParseHub 是一…

使用 `pytest` 框架時,可以通過極限封裝將 YAML 文件的讀取、解析

在使用 pytest 框架時,可以通過極限封裝將 YAML 文件的讀取、解析和測試用例的通用邏輯封裝成共享的方法或 fixture,從而減少重復代碼。以下是詳細的實現步驟和示例。 1. 封裝 YAML 文件讀取和解析 將 YAML 文件的讀取和解析邏輯封裝到一個工具函數中,供所有測試用例調用。…

HarmonyOS next性能優化:多維度策略與實戰案例

HarmonyOS next性能優化&#xff1a;多維度策略與實戰案例 在HarmonyOS next開發中&#xff0c;性能優化是提升用戶體驗、確保應用流暢運行的關鍵。本文將從多個角度探討HarmonyOS next的性能優化策略&#xff0c;并通過示例代碼展示優化前后的效果對比&#xff0c;幫助開發者…

springboot項目,mapper.xml里面,jdbcType報錯 已解決

找了很多資料&#xff0c;最后發現原來是依賴版本不兼容的問題。改了版本號即可 報錯原因&#xff1a; springboot版本為2.16.3 但是我導入的依賴版本是3.0.1&#xff0c;不兼容&#xff0c;報錯 解決&#xff1a;修改版本號&#xff0c;2.3.1兼容springboot2.6.x。依賴下載完…

rust學習筆記16-206.反轉鏈表(遞歸)

rust函數遞歸在14中已經提到&#xff0c;接下來我們把206.反轉鏈表&#xff0c;用遞歸法實現 遞歸函數通常包含兩個主要部分&#xff1a; 基準條件&#xff08;Base Case&#xff09;&#xff1a;遞歸終止的條件&#xff0c;避免無限遞歸。 遞歸步驟&#xff08;Recursive Ste…

QT-LINUX-Bluetooth藍牙開發

BlueToothAPI QT-BlueToothApi Qt Bluetooth 6.8.2 官方提供的藍牙API不支持linux。 D-Bus的API實現藍牙 確保系統中安裝了 BlueZ(版本需≥5.56),并且 Qt 已正確安裝并配置了 D-Bus 支持。 默默看了下自己的版本.....D-BUS的API也不支持。 在 D-Bus 中,org 目錄是 D-Bus…

鴻蒙Next開發與未來發展的變革:全場景操作系統的全新紀元

文章目錄 引言&#xff1a;從兼容到自主的跨越式進化一、鴻蒙Next技術架構解析1.1 系統架構全景圖1.1.1 微內核架構優勢 1.2 與OpenHarmony的關系 二、開發范式革命2.1 應用開發模式對比2.1.1 元服務&#xff08;Meta Service&#xff09;定義 2.2 開發工具鏈升級&#xff08;D…

【docker】--- 詳解 WSL2 中的 Ubuntu 和 Docker Desktop 的區別和關系!

在編程的藝術世界里,代碼和靈感需要尋找到最佳的交融點,才能打造出令人為之驚嘆的作品。而在這座秋知葉i博客的殿堂里,我們將共同追尋這種完美結合,為未來的世界留下屬于我們的獨特印記。【WSL 】--- Windows11 遷移 WSL 超詳細指南 —— 給室友換一個宿舍! 開發環境一、引…

利用Python爬蟲獲取Shopee(蝦皮)商品詳情:實戰指南

在跨境電商領域&#xff0c;Shopee&#xff08;蝦皮&#xff09;作為東南亞及臺灣地區領先的電商平臺&#xff0c;擁有海量的商品信息。無論是進行市場調研、數據分析&#xff0c;還是尋找熱門商品&#xff0c;獲取Shopee商品詳情都是一項極具價值的任務。然而&#xff0c;手動…

【OCR】總結github上開源 OCR 工具:讓文字識別更簡單

前言 在數字化的時代&#xff0c;光學字符識別&#xff08;OCR&#xff09;技術成為了我們處理文檔、圖像文字信息的得力助手。它能夠將圖像中的文字信息轉換為可編輯和可處理的文本數據&#xff0c;極大地提高了信息處理的效率。今天&#xff0c;我要給大家介紹一些優秀的開源…

GenICam標準

GenICam的目標是為所有類型的相機提供一個統一的編程接口。無論相機使用的是哪種傳輸協議或實現了哪些功能&#xff0c;編程接口&#xff08;API&#xff09;都是一樣的。 GenICam&#xff08;Generic Interface for Cameras&#xff09;是一個為工業相機和圖像采集設備設計的…