力扣刷題——二分查找

  • 數組是存放在連續內存空間上的相同類型數據的集合
  • 數組下標都是從0開始的
  • 數組內存空間的地址是連續的
  • 正是因為數組在內存空間的地址是連續的,所以我們在刪除或者增添元素的時候,就難免要移動其他元素的地址。

使用二分查找法返回的元素下標可能不是唯一的,這些都是使用二分法的前提條件

左閉右開

while (left < right),這里使用 < ,因為left == right在區間[left, right)是沒有意義的 if(nums[middle] > target) right 更新為middle,因為當前nums[middle]不等于target,去左區間繼續尋找,而尋找區間是左閉右開區間,所以right更新為middle,即:下一個查詢區間不會去比較nums[middle]

class Solution:def search(self, nums: List[int], target: int) -> int:left=0right=len(nums)#左閉右開,因為right索引沒有意義sorted(nums)while(left<right):#左閉右開,不能等于middle=(left+right)//2#計算middleif nums[middle]==target:#當等于目標值返回return middleelif nums[middle]>target:#當middle大于目標值,middle是下一個右邊界,但是右開,因此只能等于right=middleelif nums[middle]<target:#當middle小于目標值,middle是下一個左邊界,但是左閉,因此當前值已經取到并且不等,所以需要加1left=middle+1return -1

左閉右閉

while (left <= right) 要使用 <= ,因為left == right是有意義的,所以使用 <=if (nums[middle] > target) right 要賦值為 middle - 1,因為當前這個nums[middle]一定不是target,那么接下來要查找的左區間結束下標位置就是 middle - 1

class Solution:def search(self, nums: List[int], target: int) -> int:left=0right=len(nums)-1#左閉右閉sorted(nums)while(left<=right):#左閉右閉,可以等于middle=(left+right)//2#計算middleif nums[middle]==target:#當等于目標值返回return middleelif nums[middle]>target:#當middle大于目標值,middle是下一個右邊界,但是右閉,因此當前值已經取到并且不等,所以需要減1right=middle-1elif nums[middle]<target:#當middle小于目標值,middle是下一個左邊界,但是左閉,因此當前值已經取到并且不等,所以需要加1left=middle+1return -1

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

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

相關文章

黑群暉NAS部署DeepSeek模型與內網穿透實現本地AI服務

文章目錄 前言1.安裝Container Manager2. 啟動ssh功能3. ssh連接黑群暉4. 安裝Ollama5. 安裝deepseek模型6. 安裝open-webui圖形界面7. 安裝內網穿透7.1 下載cpolar套件7.2 配置群輝虛擬機7.3 配置公網地址小結 7.4 配置固定公網地址 總結 前言 在追求自建網絡存儲方案的極客群…

Rust 學習筆記:處理任意數量的 future

Rust 學習筆記&#xff1a;處理任意數量的 future Rust 學習筆記&#xff1a;處理任意數量的 future競爭的 future將控制權交給運行時構建我們自己的異步抽象 Rust 學習筆記&#xff1a;處理任意數量的 future 當兩個 future 切換到三個 future 時&#xff0c;我們也必須從使用…

2025年TCP洪水攻擊防護實戰全解析:從協議對抗到AI智能防御

一、2025年TCP洪水攻擊的新特征與挑戰 AI驅動的自適應攻擊 攻擊者利用生成式AI動態調整SYN報文特征&#xff08;如載荷內容、發送頻率&#xff09;&#xff0c;使攻擊流量與正常業務流量的差異率低至0.5%&#xff0c;傳統基于規則引擎的防御策略完全失效。 混合協議打擊常態化…

二、集成開發環境(IDE)

上節我們在終端演示了python虛擬環境的用法&#xff0c;但終端不方便代碼編寫和調試&#xff0c;本節介紹兩種常用的python集成開發環境&#xff1a;Pycharm和Jupter Notebook。Pycharm是最流行的Python IDE&#xff0c;下載網址&#xff1a;下載 PyCharm&#xff1a;JetBrains…

芯片電感需求趨勢及選型關鍵因素

隨著AI產業的快速發展&#xff0c;數據中心、AI芯片、服務器等算力基礎設施對于芯片電感等電子元件的要求不斷提升。另一方面&#xff0c;電子產品向高功率密度和小型化方向發展&#xff0c;電源模塊趨于小型化、低電壓、大電流&#xff0c;也對芯片電感提出了小型化、輕量化、…

Vue3+Element Plus表單驗證實戰:從零實現用戶管理

前言 在Vue3項目開發中&#xff0c;表單驗證是保證數據完整性和準確性的重要環節。Element Plus作為Vue3的流行UI組件庫&#xff0c;提供了強大的表單驗證功能。本文將基于一個用戶管理模塊的實戰案例&#xff0c;詳細介紹Vue3中如何使用Element Plus實現完整的表單驗證流程。…

力扣上C語言編程題:合并區間(涉及數組)

一. 簡介 本文記錄力扣網上涉及數組方面的編程題&#xff0c;主要以 C語言實現。 二. 力扣上C語言編程題&#xff1a;合并區間&#xff08;涉及數組&#xff09; 以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所…

SEO長尾詞與關鍵詞優化實戰

內容概要 在SEO優化體系中&#xff0c;核心關鍵詞與長尾詞的協同作用直接影響流量獲取效率與用戶觸達精度。本文將從基礎概念切入&#xff0c;系統梳理核心關鍵詞的篩選標準與競爭強度評估方法&#xff0c;并深入探討長尾詞在細分場景下的價值定位。通過分析用戶搜索行為與意圖…

博圖SCL語言教程:靈活加、減計數制作自己的增減計數器(CTUD)

博圖SCL語言教程&#xff1a;使用SCL實現增減計數器(CTUD) 一、什么是增減計數器(CTUD)&#xff1f; 增減計數器&#xff08;Up-Down Counter&#xff09;是PLC編程中的基礎功能塊&#xff0c;具有以下特性&#xff1a; CU (Count Up)&#xff1a;上升沿觸發計數值增加 CD (…

Android 應用被kill問題排查和處理

一、背景 博主有一款應用市場應用,同樣的應用,在Android 10上開啟三個下載正常,在Android 14上開啟下載安裝,很頻繁被kill。首先想到的是,是不是應用內存太高,導致被kill,通過工具分析內存也不高,后面就想到是不是系統本身分配給應用的內存就不高,后來通過排查,確實是和系統的…

從代碼學習深度強化學習 - 多臂老虎機 PyTorch版

文章目錄 前言創建多臂老虎機環境多臂老虎機算法基本框架(基類)1. ε-貪心算法 (Epsilon-Greedy)2. 隨時間衰減的ε-貪婪算法 (Decaying ε-Greedy)3. 上置信界算法 (Upper Confidence Bound, UCB)4. 湯普森采樣算法 (Thompson Sampling)總結前言 歡迎來到“從代碼學習深度強化…

Android學習之Window窗口

Android Window機制學習筆記 在使用Window Flag實現界面全屏功能時&#xff0c;發現自身對Android Window機制缺乏系統認知&#xff0c;因此進行了專項學習與整理。 本文主要參考以下優質資料&#xff1a; Android的Window詳解Android官方Window文檔 Window基本概念 1. Win…

華為云 Flexus+DeepSeek 征文|搭建部署Dify-LLM推理引擎,賦能AI Agent智能體實現動態聯網搜索能力

華為云 Flexus 云服務器 X 實例專門為 AI 應用場景設計。它提供了強大的計算能力&#xff0c;能夠滿足 DeepSeek 模型以及后續搭建 AI Agent 智能體過程中對于數據處理和模型運行的高要求。在網絡方面&#xff0c;具備高速穩定的網絡帶寬&#xff0c;這對于需要頻繁聯網搜索信息…

Python 100個常用函數全面解析

Python 100個常用函數全面解析 1. 類型轉換函數 1.1 int() 將字符串或數字轉換為整數。 # 基本用法 int(123) # 123 int(3.14) # 3# 指定進制轉換 int(1010, 2) # 10 (二進制轉十進制) int(FF, 16) # 255 (十六進制轉十進制)# 臨界值處理 int() # ValueError: …

分享在日常開發中常用的ES6知識點【面試常考】

前言 在日常的業務開發中&#xff0c;可以熟悉運用掌握的知識點快速解決問題很重要。這篇分享JS相關的知識點&#xff0c;主要就是對數據的處理。 注意&#xff1a;本篇分享的知識點&#xff0c;只是起到一個拋磚引玉的作用&#xff0c;詳情的使用和更多的ES6知識點還請參考官…

CHI協議驗證中的異常及邊界驗證

CHI協議驗證中的異常及邊界驗證 針對 CHI 協議的錯誤注入工具、覆蓋率衡量方法及實際項目中的投入平衡 CHI 協議作為多核系統中復雜的緩存一致性協議,驗證其行為需要強大的工具和方法來執行錯誤注入和邊界條件測試,并衡量測試覆蓋率。以下詳細討論常用工具、覆蓋率評估方法及…

技術專欄|LLaMA家族——模型架構

LLaMA的模型架構與GPT相同&#xff0c;采用了Transformer中的因果解碼器結構&#xff0c;并在此基礎上進行了多項關鍵改進&#xff0c;以提升訓練穩定性和模型性能。LLaMA的核心架構如圖 3.14 所示&#xff0c;融合了后續提出的多種優化方法&#xff0c;這些方法也在其他模型&a…

電腦插入多塊移動硬盤后經常出現卡頓和藍屏

當電腦在插入多塊移動硬盤后頻繁出現卡頓和藍屏問題時&#xff0c;可能涉及硬件資源沖突、驅動兼容性、供電不足或系統設置等多方面原因。以下是逐步排查和解決方案&#xff1a; 1. 檢查電源供電問題 問題原因&#xff1a;多塊移動硬盤同時運行可能導致USB接口供電不足&#x…

Go 語言實現高性能 EventBus 事件總線系統(含網絡通信、微服務、并發異步實戰)

前言 在現代微服務與事件驅動架構&#xff08;EDA&#xff09;中&#xff0c;事件總線&#xff08;EventBus&#xff09; 是實現模塊解耦與系統異步處理的關鍵機制。 本文將以 Go 語言為基礎&#xff0c;從零構建一個高性能、可擴展的事件總線系統&#xff0c;深入講解&#…

npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js`

npm install 報錯如下, npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @biomejs/biome@1.9.4 postinstall: `node scripts/postinstall.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @biomejs/biome@1.9.4 postinstall script. npm ERR! This is pro…