二分查找算法

文章目錄

  • 二分查找
  • 二分的實戰+講解
    • 二分查找
      • 普通二分模版
    • 在排序數組中查找元素的第一個和最后一個位置
      • 萬能二分模版
  • 總結

二分查找

什么是二分查找:就是定義左右2個指針(此指針非真指針)取中間值
通過一次次取中間值找到要找到的數

二分的實戰+講解

二分查找

題目:地址

題目解析:
在這里插入圖片描述

找到一個等于target的值
并返回他的下標
題目中給的數組是升序的

題目講解
在這里插入圖片描述
這樣就能找到要找的目標值
如果沒有找到那么就可以返回-1

代碼:

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0,right =nums.size()-1,sum = 0;while(left<=right){sum = left+(right-left+1)/2;//這里的+1要不要無所謂在這個題if(nums[sum]<target){left=sum+1;}else if (nums[sum]>target){right = sum-1;}else{return sum;}}return -1;}
};

普通二分模版

在這里插入圖片描述

在排序數組中查找元素的第一個和最后一個位置

題目:地址

題目解析:
在這里插入圖片描述
找到等于target的第一個下標和最后一個下標
并且返回
數組是升序的

題目講解
在這里插入圖片描述

代碼:

class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {if(nums.size()==0){return {-1,-1};}int left=0,right=nums.size()-1;int mid = 0;int begin = 0,end = 0;while(left<right)//找左端點//不能寫等于//因為寫了等于會死循環//right位置不改變//mid位置會永遠不動{//這里的不能寫成right-left+1的形式//如果寫了會出現死循環//同樣的 right位置不改變//mid也不會動 進而死循環mid = left+(right-left)/2;if(nums[mid]>=target){right=mid;}else{left=mid+1;}}if(nums[left]==target){begin=left;}else{return {-1,-1};}right=nums.size()-1;while(left<right){//這里的不能寫成right-left的形式//如果寫了會出現死循環//同樣的 left位置不改變//mid也不會動 進而死循環mid = left+(right-left+1)/2;if(nums[mid]>target){right=mid-1;}else{left=mid;}}end = right;return {begin,end};}
};

萬能二分模版

在這里插入圖片描述

總結

二分的模版很簡單
但是不能死記硬背
要理解里面為什么這樣子二分
死記硬背改了一種形式也不一定你能看出是二分
最后喜歡的點點贊
可能這也不是最優的優化,但是我能做出來現階段最好的了。

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

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

相關文章

ELK技術棧介紹及簡單使用實例

1. ELK技術棧介紹 引言 在當今數據驅動的世界里&#xff0c;有效地管理和分析大量日志數據變得至關重要。這里我們將深入探討ELK技術棧&#xff0c;這是一種流行的日志管理解決方案&#xff0c;它結合了三個開源項目&#xff1a;Elasticsearch、Logstash和Kibana。ELK技術棧因…

測試文檔---智力沖刺

文章目錄 項目背景測試計劃UI測試接口測試手工測試 測試總結 項目背景 項目描述&#xff1a;“智力沖刺”是一款網頁小游戲&#xff0c;就像我們平時看到的網頁游戲一樣&#xff0c;前端頁面負責展示游戲效果&#xff0c;后端服務器來實現游戲的邏輯。在我們的“智力沖刺”游戲…

YOLOv7 學習筆記

文章目錄 前言一、YOLOv7貢獻和改進二、YOLOv7核心概念三、YOLOv7架構改進總結 前言 在深度學習和計算機視覺領域&#xff0c;目標檢測一直是一個極具挑戰性和實用性的研究領域。特別是在實時目標檢測方面&#xff0c;準確率和速度之間的平衡成為了關鍵考量因素。YOLO&#xf…

C語言精選——選擇題Day40

第一題 1. int a[10] {2,3,5}, 請問a[3]及a[3]之后的數值是&#xff08;&#xff09; A&#xff1a;不確定的數據 B&#xff1a;5 C&#xff1a;0 D&#xff1a;0xf f f f f f f f 答案及解析 C 數組的不完全初始化&#xff0c;會自動把沒初始化的部分初始化為0&#xff1b; 第…

postman做接口自動化測試

接口是用來連接服務端和客戶端&#xff0c;一般返回的數據都是json。 get和post請求的區別&#xff1a; 1. get請求比post請求安全 2. get請求參數有長度限制&#xff0c;post請求沒有 3. get請求沒有body&#xff0c;參數都是放在url里面&#xff0c;而post請求是放在body…

大華DSS S2-045 OGNL表達式注入漏洞復現

0x01 產品簡介 大華DSS安防監控系統平臺是一款集視頻、報警、存儲、管理于一體的綜合安防解決方案。該平臺支持多種接入方式,包括網絡視頻、模擬視頻、數字視頻、IP電話、對講機等。此外,該平臺還支持多種報警方式,包括移動偵測、區域入侵、越線報警、人員聚集等。 0x02 漏…

元宇宙:重塑游戲行業體驗下一個前沿

游戲行業在其整個歷史中經歷了顯著的轉變&#xff0c;從超級馬里奧的像素化冒險發展到Red Dead Redemption等游戲中迷人的開放世界體驗。隨著時間的推移&#xff0c;游戲不斷突破數字領域所能達到的極限。然而&#xff0c;被稱為元宇宙的突破性演變將徹底改變游戲行業&#xff…

PO模式在selenium自動化測試框架有什么好處

PO模式是在UI自動化測試過程當中使用非常頻繁的一種設計模式&#xff0c;使用這種模式后&#xff0c;可以有效的提升代碼的復用能力&#xff0c;并且讓自動化測試代碼維護起來更加方便。 PO模式的全稱叫page object model&#xff08;POM&#xff09;&#xff0c;有時候叫做 p…

網工內推 | 外企、合資公司急招網工,國內外旅游,健身年卡

01 深圳市耐施菲信息科技有限公司 招聘崗位&#xff1a;網絡工程師 職責描述&#xff1a; 1、負責項目的計劃、實施、過程管控、項目驗收等工作&#xff1b; 2、負責大型項目設備實施、安裝調試等售后維護工作&#xff1b; 3、分析、設計網絡拓撲結構、配置H3C、華為等交換機…

SQL FOREIGN KEY 約束- 保障表之間關系完整性的關鍵規則

SQL FOREIGN KEY 約束 SQL FOREIGN KEY 約束用于防止破壞表之間關系的操作。FOREIGN KEY 是一張表中的字段&#xff08;或字段集合&#xff09;&#xff0c;它引用另一張表中的主鍵。具有外鍵的表稱為子表&#xff0c;具有主鍵的表稱為被引用表或父表。 以下是兩個表的例子&a…

dll動態鏈接庫【C#】

1說明&#xff1a; 在C#中&#xff0c;dll是添加 【類庫】生成的。 2添加C#的dll&#xff1a; &#xff08;1&#xff09;在VS中新建一個Windows應用程序項目&#xff0c;并命名為TransferDll。 &#xff08;2&#xff09;打開Windows窗體設計器&#xff0c;從工具箱中為窗體…

Unity 性能優化的手段【更新中】

目錄 對象池 減少Draw Calls 批處理 合并網格 貼圖集 LOD 基本原理 應用 優點 挑戰 LightMap 基本概念 如何工作 優點 缺點 對象池 使用對象池&#xff1a;頻繁地創建和銷毀對象會導致性能下降和內存碎片化。對象池可以預先創建一些對象&#xff0c;然后在需要時…

【數據開發】Hive 多表join中的條件過濾與指定分區

1、條件過濾 left join 中 on 后面加條件 where 和 and 的區別 1、 on條件是在生成臨時表時使用的條件&#xff0c;它不管and中的條件是否為真&#xff0c;都會保留左邊表中的全部記錄。2、where條件是在臨時表生成好后&#xff0c;再對臨時表進行過濾的條件。這時已經沒有le…

Gemini:新一代AI產品的驚人功能和革命性影響

目錄 1 前言2 視頻分析與交互能力3 策劃推理能力4 教育領域的應用能力5 科學領域的論文解讀能力6 結語 1 前言 Google最新推出的AI產品Gemini引發了廣泛關注&#xff0c;其30分鐘的介紹和演示視頻展示了令人驚艷的功能。Gemini以其驚人的藝術創作能力脫穎而出&#xff0c;通過…

TCP一對一聊天

客戶端 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io…

python-04(入門基礎篇4——lists相關的部分語法)

python-04&#xff08;入門基礎篇4——lists相關的部分語法&#xff09; 1. 前言1.1 python入門1.2 參考官網 2. 關于索引和切片3. 在列表追加元素3.1 支持拼接3.2 使用list.append() 方法在列表末尾添加新項 4. 列表是可變類型4.1 更改其中某元素內容4.2 使用切片更改列表大小…

cesium學習記錄

有段時間自學了cesium&#xff0c;這里記錄一下自學過程&#xff0c;希望在所需之時查閱~~ 1、cesium源碼獲取與Index頁面介紹 官網網址 www.cesiumjs.org 源代碼下載&#xff1a;Platform-Dowmloads 在index.html右擊open with Live server開啟本地服務 點擊Documentation…

mysql 表分區類型

在MySQL中&#xff0c;有幾種不同類型的分區可以用于對表進行分區。以下是MySQL中常用的分區類型&#xff1a; 1. RANGE分區&#xff1a;基于給定的列范圍進行分區。例如&#xff0c;可以按照日期范圍或數值范圍對表進行分區。 CREATE TABLE sales (id INT NOT NULL AUTO_INC…

VMware安裝OpenEuler(安裝界面)

本文中使用的OpenEuler版本&#xff1a;22.03 LTS SP2 VMware&#xff1a;17.0.0 一、下載鏡像 根據CPU和場景&#xff0c;按需下載 https://www.openeuler.org/zh/download/?versionopenEuler%2022.03%20LTS%20SP2 二、初始化VmWare 三、配置操作系統 四、安裝操作系統 …

Nginx漏洞修復

1、漏洞 去掉在請求響應頭中存在的信息 Server: nginx X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1;modeblock 修復方法 在Nginx的配置文件中的 server 標簽內增加一下配置 server_tokens off; add_header X-Frame-Options SAMEORIGIN; …