python-leetcode 62.搜索插入位置

題目:

給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置


方法一:二分查找

假設題意是在排序數組中尋找是否存在一個目標值,則可以利用二分法在Ologn的時間內找到是否存在目標值,但這題還有個額外條件,即如果不存在數組中的時候需要返回按順序插入的位置。需要對二分法做些修改

考慮這個插入的位置pos,它成立的條件為:

nums[pos-1]<target<=nums[pos]

其中nums代表排序數組,由于如果存在這個目標值,返回的索引也是pos,即可以將兩個條件合并后并得出最后的目標:在一個有序數組中找到第一個大于等于target的下標

問題轉化到這個,直接套用二分法即可,即不斷用二分法逼近查找第一個大于等于target的下標,ans初始設置為數組長度可以省略邊界條件的判斷,因為存在一種情況是target大于數組中的所有數,此時需要插入到數組長度的位置。

class Solution(object):def searchInsert(self, nums, target):""":type nums: List[int]:type target: int:rtype: int"""left=0  #指向數組的起始位置(索引0)right=len(nums)-1  #指向數組的末尾位置(最后一個元素的索引)while left<=right:  #左指針不大于右指針。這保證了搜索區間始終有效middle=(left+right)//2 #計算中間位置的索引if nums[middle]<target: #如果中間元素小于目標值,說明目標值應該在右半部分left=middle+1 #將左指針移動到中間位置右側elif nums[middle]>target: #如果中間元素大于目標值,說明目標值應該在左半部分right=middle-1  #將右指針移動到中間位置左側else:return middlereturn right+1  #循環結束還沒找到目標值,right+1就是它應該插入的位置1

時間復雜度:O(logn)其中n為數組的長度

空間復雜度:O(1)

源自力扣官方題解

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

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

相關文章

【計網速通】計算機網絡核心知識點和高頻考點——數據鏈路層(一)

數據鏈路層核心知識點&#xff08;一&#xff09; 一、數據鏈路層概述 1.1 基本概念 數據鏈路層位于OSI模型的第二層&#xff0c;介于物理層和網絡層之間&#xff0c;主要負責在相鄰節點之間傳輸和識別數據幀。 1.2 主要功能 幀同步&#xff1a;識別幀的開始和結束差錯控制…

模型部署與調用

目錄 部署 ollama下載 模型版本選擇 ?編輯 對照表 控制臺執行 調用 部署 大模型部署我使用的是Ollama&#xff0c;點擊跳轉 接下來我將在本地使用ollama就行模型部署的演示 ollama下載 模型版本選擇 對照表 大家可以根據自己的顯卡配置選擇對應的模型版本 控制臺執…

Rstudio如何使用Conda環境配置的R

前言 Rstudio作為一款流行的R語言集成開發環境&#xff08;IDE&#xff09;&#xff0c;為用戶提供了便捷的編程體驗。然而&#xff0c;不同項目可能需要不同版本的R&#xff0c;這就需要我們靈活切換R版本。除了在之前文章中提到的使用 Docker 部署不同版本的 R 的方法之外&am…

C++---RAII模式

一、RAII模式概述 1. 定義 RAII&#xff08;Resource Acquisition Is Initialization&#xff09;即資源獲取即初始化&#xff0c;是C中用于管理資源生命周期的一種重要編程模式。其核心在于將資源的獲取和釋放操作與對象的生命周期緊密綁定。當對象被創建時&#xff0c;資源…

【功能開發】DSP F2837x 檢測中斷所有函數運行一次的時間

要查看 DSP F28377 的 CPU 在 50 微秒一次的中斷內所有程序運行完總共占用了中斷多長時間&#xff0c;可以采用硬件定時器測量和軟件計時兩種常見方法。 方法一&#xff1a;使用硬件定時器測量 原理 利用 DSP 內部的高精度硬件定時器&#xff0c;在中斷開始時記錄定時器的值…

MAC環境給docker換源

2025-03-28 MAC環境給docker換源 在官網下載docker ,dmg 文件 參考&#xff1a; https://blog.csdn.net/qq_73162098/article/details/145014490 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},&q…

Vulnhub-zico2靶機打靶記錄

本篇文章旨在為網絡安全滲透測試靶機教學。通過閱讀本文&#xff0c;讀者將能夠對滲透Vulnhub系列zico2靶機有一定的了解 一、信息收集階段 靶機下載地址&#xff1a;https://download.vulnhub.com/zico/zico2.ova 因為靶機為本地部署虛擬機網段&#xff0c;查看dhcp地址池設…

【LeetCode 熱題100】347:前 K 個高頻元素(詳細解析)(Go語言版)

&#x1f680; 力扣熱題 347&#xff1a;前 K 個高頻元素&#xff08;詳細解析&#xff09; &#x1f4cc; 題目描述 力扣 347. 前 K 個高頻元素 給你一個整數數組 nums 和一個整數 k&#xff0c;請你返回其中出現頻率 前 k 高的元素。你可以按 任意順序 返回答案。 &#x1f…

Java 大視界 -- Java 大數據機器學習模型在金融衍生品定價中的創新方法與實踐(166)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

深度學習入門:從神經網絡基礎到簡單實現

深度學習作為人工智能領域最令人興奮的技術之一,已經在圖像識別、自然語言處理、語音識別等多個領域取得了突破性進展。本文將深入淺出地介紹深度學習的基本概念,并通過Python代碼實現一個簡單的神經網絡模型,幫助讀者建立直觀理解并邁出實踐第一步。 神經網絡的基本原理 …

第2.6節 iOS生成全量和增量報告

2.6.1 簡介 在采集了覆蓋率數據后&#xff0c;就需要生成對應需求的全量和增量覆蓋率報告&#xff0c;以便對測試進行查漏補缺。IOS系統有兩種開發語言&#xff0c;所以生成報告的方式也不相同&#xff0c;下面就分別介紹一下Object C和Swift語言如何生成覆蓋率報告。 2.6.2 O…

STM32技能綜合鞏固

一、深入理解ARMCPU架構及其指令格式、ARM匯編語言編程方法 1.匯編語言編程&#xff0c;實現LED燈 新建keil項目&#xff0c;選擇芯片 選擇運行環境以及配置 添加.s文件 匯編程序&#xff1a; AREAMYDATA,DATA AREAMYCODE,CODE ENTRY EXPORT__main __main MOVR0,#10 M…

P2Rank網頁端:預測蛋白結合口袋+vina分子對接

P2Rank 是一種基于機器學習的蛋白質口袋預測工具&#xff0c;用于識別蛋白質結構中的潛在配體結合位點。它采用了一種基于物理特征的打分方法&#xff0c;結合隨機森林&#xff08;Random Forest&#xff09;機器學習模型&#xff0c;以提高口袋預測的精確度。 該程序有在線工具…

安裝windows server 2016沒有可選硬盤,設備安裝過ubuntu系統

如果在安裝 Windows Server 2016 時無法識別已安裝過 Ubuntu 的硬盤&#xff0c;可能是由于硬盤分區格式&#xff08;如 ext4&#xff09;與 Windows 不兼容&#xff0c;或缺少必要的驅動程序。以下是詳細的解決方案&#xff1a; 1. 檢查 BIOS/UEFI 設置 確認硬盤模式 ? 重啟電…

Debian系統_主板四個網口1個配置為WAN,3個配置為LAN

Debian系統_主板四個網口1個配置為WAN&#xff0c;3個配置為LAN 一、重新配置網口 1、查看當前網口的狀態 ifconfig 或者 ip link show 或者 ls /sys/class/net 2、修改網絡配置文件 sudo vi /etc/network/interfaces 注意WAN口的網關地址如果是192.168.3.1的話&#xff0c;L…

springboot整合Thymeleaf web開發出現Whitelabel Error Page

背景 在做java端上應用開發的時候&#xff0c;從資源和部署操作成本兩方面考慮&#xff0c;一般會將前端的靜態資源直接與后端應用一起打包&#xff0c;通過springboot內嵌的Tomcat提供web服務。進入web首頁登錄一直到后續業務流程正向操作&#xff0c;頁面都能正常加載靜態資…

JavaScript元素尺寸與位置

目錄 client 家族與 offset 家族 一、client 家族&#xff1a;內容區域 內邊距 示例代碼 應用場景 二、offset 家族&#xff1a;內容區域 內邊距 邊框 滾動條 示例代碼 應用場景 三、綜合應用場景 1. 動態調整元素高度 2. 拖拽元素 3. 判斷元素是否在視口內 四…

GZ073網絡系統管理賽項賽題第1套模塊A:網絡構建解題筆記

2. 設備 接口或VLAN VLAN名稱 二層或三層規劃 說明 S1 VLAN10 CAIWU Gi0/1至Gi0/4 財務部 VLAN20 XIAOSHOU Gi0/5至Gi0/8 銷售部 VLAN30 YANFA Gi0/9至Gi0/12 研發部 VLAN40 SHICHANG Gi0/13至Gi0/16 市場部 VLAN50 AP Gi0/20至Gi0/21 無線AP管理 VL…

jmeter web壓力測試 壓測

下載地址 Apache JMeter - Download Apache JMeter 1. 設置線程組 2. 設置http請求頭 3. 設置http請求體 4. 設置結果條目 常用函數 ${__RandomString(8, abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789)}${__javaScript( ${__Random(1000, 10000)} /…

大語言模型(LLM)應用開篇 | RAG方法論概述 | 構建知識庫探索

大型語言模型應用開篇 | RAG技術 | 構建知識庫探索 1、大語言模型&#xff08;LLM&#xff09;應用開篇2、RAG技術2.1 基于RAG實現知識庫問答系統的基本步驟2.2 RAG與其他技術的關系與區別 1、大語言模型&#xff08;LLM&#xff09;應用開篇 現在是2025年&#xff0c;DeepSeek…