【優選算法系列】【專題一雙指針】第三節.611. 有效三角形的個數和LCR 179. 查找總價格為目標值的兩個商品

文章目錄

  • 前言
  • 一、有效三角形的個數
  • ? ? ? 1.1 題目描述
  • ? ? ? 1.2 題目解析
  • ? ? ? ? ? ? ?1.2.1 算法原理
  • ? ? ? ? ? ? ?1.2.2 代碼編寫
  • ? ? ? ? ? ? ?1.2.3 題目總結
  • 二、查找總價格為目標值的兩個商品
  • ? ? ? 2.1 題目描述
  • ? ? ? 2.2 題目解析
  • ? ? ? ? ? ? ?2.2.1 算法原理
  • ? ? ? ? ? ? ?2.2.2 代碼編寫
  • ? ? ? ? ? ? ?2.2.3 題目總結
  • 總結


前言


一、有效三角形的個數

1.1 題目描述

描述:

給定一個包含非負整數的數組?nums?,返回其中可以組成三角形三條邊的三元組個數。


提示:

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] <= 1000

示例1:


示例2:


1.2 題目解析

1.2.1 算法原理


1.2.2 代碼編寫


1.2.3 題目總結


二、查找總價格為目標值的兩個商品

描述:

購物車內的商品價格按照升序記錄于數組?price。請在購物車中找到兩個商品的價格總和剛好是?target。若存在多種情況,返回任一結果即可。


提示:

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

示例1:


示例2:


2.2 題目解析

2.2.1 算法原理

解法(雙指針 + 對撞指針):
算法思路:
注意到本題是升序的數組,因此可以用「對撞指針」優化時間復雜度。

算法流程(附帶算法分析,為什么可以使用對撞指針):
步驟a.
初始化 left , right 分別指向數組的左右兩端
(這里不是我們理解的指針,而是數組的下 標)

步驟b.
當 left < right 的時候,一直循環。
情況i. 當 nums[left] + nums[right] == target 時,說明找到結果,記錄結果,并且 返回;
情況ii. 當 nums[left] + nums[right] < target 時:
(1)對于 nums[left] 而言,此時 nums[right] 相當于是 nums[left] 能碰到的 最大值。
(別忘了,這里是升序數組哈)。
如果此時不符合要求,說明在這個數組里面, 沒有別的數符合 nums[left] 的要求了
(最大的數都滿足不了你,你已經沒救了)。
因此,我們可以大膽舍去這個left下標的數,讓 left++ ,去比較下一組數據;
(2)那對于 nums[right] 而言,由于此時兩數之和是小于目標值的,?nums[right] 還可以選擇比 nums[left] 大的值繼續努力達到目標值,因此 right 指針我們按 兵不動;
情況iii.
當 nums[left] + nums[right] > target 時,
同理我們可以舍去 nums[right] (最小的數都滿足不了你,你也沒救了)。
讓 right-- ,繼續比較下一 組數據,而left 指針不變
(因為他還是可以去匹配比 nums[right] 更小的數的)。

2.2.2 代碼編寫


2.2.3 題目總結

總結

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

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

相關文章

0008-【PID學習筆記 8 】控制系統的分析方法

寫在前面 前面已經完成了控制系統的性能指標學習&#xff0c;從這節開始繼續學習控制系統的分析方法&#xff0c;本文重點介紹分析方法概述和時域分析法。 一、控制系統的基本分析方法 控制系統的基本分析方法包括&#xff1a; 古典方法&#xff08;經典控制理論&#xff09;…

獨孤思維:賺錢需要獨一無二的支點,而不是技多不壓身的堆料

賺錢需要找到屬于自己獨一無二&#xff0c;且超乎常人的支點&#xff0c;而不應該一味追求大而全&#xff0c;技多不壓身的堆料。 凡是考了一堆證書&#xff0c;以為掌握多項技能&#xff0c;就能賺到錢的都是學生思維。 尤其是很多剛入職場的年輕人&#xff0c;為了職場晉升…

2024山東健博會,濟南健康展,5月中國大健康展,健康管理展

China-DJK山東健博會&#xff1a;5月黃金招商季&#xff0c;攜千家參展商、萬余款產品精彩亮相&#xff1b; DJK 2024第6屆中國&#xff08;濟南&#xff09;國際大健康產業博覽會 The 2024 sixth China (Jinan) International Big Health Industry Expo 時間&#xff1a;2024…

LLaMA-Factory微調ChatGLM3報錯: Segmentation fault (core dumped)

SFT訓練模型的命令 CUDA_VISIBLE_DEVICES0 python src/train_bash.py \--stage sft \--model_name_or_path models/chatglm3-6b \--do_train \--dataset self_cognition \--template chatglm3 \--finetuning_type lora \--lora_target query_key_value \--output_dir output/c…

Docker網絡原理

Docker網絡概述 1.橋接模式介紹 bridge模式是docker的默認網絡模式。 橋接模式是一種用于連接兩個不同網絡段的設備&#xff0c;使它們能夠共享通信的一種方式。 橋接設備工作在OSI模型的第二層&#xff0c;即數據鏈路層&#xff0c;通常基于MAC地址進行幀轉發。 物理層連接…

一個簡單的 postman設置接口關聯讓我措施了大廠的機會

postman設置接口關聯 在實際的接口測試中&#xff0c;后一個接口經常需要用到前一個接口返回的結果&#xff0c; 從而讓后一個接口能正常執行&#xff0c;這個過程的實現稱為關聯。 在postman中實現關聯操作的步驟如下&#xff1a; 1、利用postman獲取上一個接口指定的返回值…

YOLOv8 YoLov8l 模型輸出及水果識別

&#x1f368; 本文為[&#x1f517;365天深度學習訓練營學習記錄博客 &#x1f366; 參考文章&#xff1a;365天深度學習訓練營 &#x1f356; 原作者&#xff1a;[K同學啊 | 接輔導、項目定制] &#x1f680; 文章來源&#xff1a;[K同學的學習圈子](https://www.yuque.com/m…

LeetCode雙指針:有序數組中的單一元素

LeetCode雙指針&#xff1a;有序數組中的單一元素 題目描述 給你一個僅由整數組成的有序數組&#xff0c;其中每個元素都會出現兩次&#xff0c;唯有一個數只會出現一次。 請你找出并返回只出現一次的那個數。 你設計的解決方案必須滿足 O(log n) 時間復雜度和 O(1) 空間復…

關于什么是 JVM

關于什么是 JVM&#xff0c;看看普通?和??的回答。 普通人 JVM 就是 Java 虛擬機&#xff0c;是?來運?我們平時所寫的 Java 代碼的。優點是它會 ?動進?內存管理和垃圾回收&#xff0c;缺點是?旦發?問題&#xff0c;要是不了解 JVM 的運? 機制&#xff0c; 就很難…

是誰還沒玩AI擴圖?快跟上節奏啦

最近&#xff0c;抖音上的AI擴圖突然火了&#xff0c;看完真的讓人笑掉大牙&#xff5e;&#xff5e;&#xff5e; 這一熱議的話題#AI擴圖#在短視頻平臺抖音上的播放量已經突破7.8億次&#xff0c;而相關的討論也如同星火燎原&#xff0c;迅速點燃了公眾的好奇心。從“用AI擴圖…

中偉視界:皮帶跑偏、異物檢測AI算法除了礦山行業應用,還能在鋼鐵、火電、港口等行業中使用嗎?

隨著工業化的發展&#xff0c;皮帶輸送機已經成為各行業中不可或缺的重要設備&#xff0c;但是在使用過程中&#xff0c;由于各種原因&#xff0c;皮帶常常出現跑偏問題&#xff0c;給生產運營帶來了諸多困擾。不僅僅是礦山行業&#xff0c;鋼鐵、火電、港口等行業也都面臨著皮…

C語言 掃雷游戲

代碼在一個項目里完成&#xff0c;分成三個.c.h文件(game.c,game.h,main.c) 在Clion軟件中通過運行調試。 /大概想法/ 主函數main.c里是大框架(菜單,掃雷棋盤初始化&#xff0c;隨機函數生成雷&#xff0c;玩家掃雷) game.h函數聲明(除main函數和游戲函數外的一些函數聲明) ga…

RepidJson將內容寫入文件

使用 RapidJSON 將內容寫入文件的步驟如下&#xff1a; 創建一個 rapidjson::Document 對象&#xff0c;將需要寫入文件的內容存儲到其中。創建一個 rapidjson::StringBuffer 對象來保存 JSON 字符串。將 rapidjson::Document 對象轉換為 JSON 字符串&#xff0c;并將其放入 r…

日志打印傳值 傳引用 右值引用性能測試

結論 ubuntu x86平臺qnx平臺優化傳值都是比傳引用的差 但是差距很小 測試代碼 #include <cstdint> #include <ctime> #include <string>#ifdef __linux__#define ITERATIONS 10000000 #else#define ITERATIONS 100000 #endiftemplate <typename... AR…

rust高級 異步編程 一 future

文章目錄 Async 編程簡介async/.await 簡單入門 Future 執行器與任務調度Future 特征使用 Waker 來喚醒任務構建一個定時器執行器 Executor構建執行器 完整代碼 Async 編程簡介 OS 線程, 它最簡單&#xff0c;也無需改變任何編程模型(業務/代碼邏輯)&#xff0c;因此非常適合作…

Linux設置root初始密碼

目錄 一、Linux系統中普通用戶和特權用戶&#xff08;root&#xff09; 二、Linux系統中設置root初始密碼 一、Linux系統中普通用戶和特權用戶&#xff08;root&#xff09; windows 系統中有普通用戶和特權用戶&#xff0c;特權用戶是 administer&#xff0c;普通用戶可以…

mybatisplus調用oracle存儲過程

mybatisplus調用oracle存儲過程 創建一個測試的oracle存儲過程 -- 創建攜帶返回值存儲過程 CREATE OR REPLACE PROCEDURE SP_SUM_PROC_2023(number1 IN NUMBER, number2 IN NUMBER, result OUT NUMBER,result2 OUT NUMBER) is BEGIN result : number1 number2; result2 : 99…

微服務01

筆記&#xff1a; day03-微服務01 - 飛書云文檔 (feishu.cn) 數據庫連接不上&#xff1f; 要在虛擬機啟動MySQL容器。docker start mysql 服務治理 服務提供者&#xff1a;暴露服務接口&#xff0c;供其他服務調用 服務消費者&#xff1a;調用其他服務提供的接口 注冊中心&…

Java IO流(一) 基本知識

Java IO流 一、基礎知識 IO流即存儲和讀取數據的解決方案。 &#xff08;一&#xff09;File 表示系統中的文件或者文件夾的路徑 獲取文件信息(大小&#xff0c;文件名&#xff0c;修改時間) 創建文件/文件夾 刪除文件/文件夾 判斷文件的類型 注意&#xff1a;File類只能對…

STL(五)(queue篇)

我發現之前一版在電腦上看 常用函數部分 沒有問題,由于是手打上去的,在手機上看會發生錯位問題,現已將電腦原版 常用函數部分 截圖改為圖片形式,不會再發生錯位問題,非常感謝大家的支持 ### priority_queue優先隊列出現頻率非常高,尤為重要(是一定要掌握的數據結構) 1.queue隊…