力扣:35. 搜索插入位置

力扣:35. 搜索插入位置

描述

給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置。
請必須使用時間復雜度為 O(log n) 的算法。
示例 1:

輸入: nums = [1,3,5,6], target = 5
輸出: 2
示例 2:

輸入: nums = [1,3,5,6], target = 2
輸出: 1
示例 3:

輸入: nums = [1,3,5,6], target = 7
輸出: 4

提示:

1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 為 無重復元素 的 升序 排列數組
-104 <= target <= 104

1.暴力解法

從數組的左邊遍歷到右邊,如果遇到相等的元素,直接返回下標;如果遇到第 1 個嚴格大于 target 的元素,返回這個元素的下標;如果數組里所有的元素都嚴格小于 target,返回數組的長度 len。
代碼如下:

#include<iostream>
#include<vector>
using namespace std;
class Solution{
public:int searchInsert(vector<int>& nums, int target){int num = 0;int tmp = 0;for(int i = 0; i < nums.size(); i++){if(nums[i] == target){return i;}if(nums[i] > target && num == 0){tmp = i;num = 1;}}if(num == 0){return nums.size();}else {return tmp;}}
};int main(){Solution solution;vector<int> nums = {1,3,5,6,9,13,27,34,49,58,60};int target = 44;int insertPostion = solution.searchInsert(nums,target);cout << "The inset postion for target " << target << " is " << insertPostion << endl;return 0;
}

![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/a2d9f9092b774b24b3842c2484f87f19.png

2.二分查找

在有序數組中查找插入元素的位置,顯然可以使用二分查找。提供的思路是「排除法」,思路是:在循環的過程中,不斷排除不需要的解,最后剩下的那個元素的位置就一定是插入元素的位置。

具體來說:

首先,插入位置有可能在數組的末尾,需要單獨判斷,此時返回數組的長度;
否則,根據示例和暴力解法的分析,插入的位置是大于等于 target 的第 1 個元素的位置。
因此,嚴格小于 target 的元素一定不是解,在循環體中將左右邊界 left 和 right 逐漸向中間靠攏,最后 left 和 right 相遇,則找到了插入元素的位置。根據這個思路,可以寫出如下代碼。

#include<iostream>
#include<vector>
using namespace std;
class Solution{
public:int insearchInsert(vector<int> & nums, int target){int len = nums.size();if(len == 0){return 0;}if(nums[len - 1] < target){return len;}int left = 0;int right = len - 1;while(left < right){int mid = left + ((right - left) / 2);if(nums[mid] < target){left = mid + 1;}else {right = mid;}}return left;}
};
int main()
{Solution solution;vector<int> nums = {1,3,5,6,9,13,27,34,49,58,60};int target = 44;int insertPostion = solution.insearchInsert(nums,target);cout << " The target " << target << " is " << insertPostion << endl;return 0;
}

在這里插入圖片描述
時間復雜度:O(log?n)O(\log n)O(logn),其中 nnn 為數組的長度。二分查找所需的時間復雜度為 O(log?n)O(\log n)O(logn)。

空間復雜度:O(1)O(1)O(1)。我們只需要常數空間存放若干變量。

力扣:35. 搜索插入位置

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

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

相關文章

Mybatis | Mybatis的核心配置

目錄: Mybatis的核心配置 :一、MyBatis的 “核心對象”1.1 SqlSessionFactory1.2 SqlSession :SqlSession對象中的操作數據庫的方法 :\<T> T selectOne ( String statement )\<T> T selectOne( String statement , Object parameter )\<E> List\<E> se…

SpringBoot基于注解實現全局日期格式化

首先根據項目要求提供自定義的日期序列化器和反序列化器&#xff0c;其中包括&#xff1a; DateJsonSerializerextendsJsonSerializer 表示將Date格式化為日期字符串。DateJsonDeserializerextendsJsonDeserializer 表示將日期字符串解析為Date日期。 使用注解 JsonComponent…

openGauss學習筆記-232 openGauss性能調優-系統調優-資源負載管理-資源管理準備-資源規劃

文章目錄 openGauss學習筆記-232 openGauss性能調優-系統調優-資源負載管理-資源管理準備-資源規劃 openGauss學習筆記-232 openGauss性能調優-系統調優-資源負載管理-資源管理準備-資源規劃 完成資源負載管理功能配置前&#xff0c;需要先根據業務模型完成租戶資源的規劃。業…

紹興市新昌縣人大一行蒞臨迪捷軟件走訪考察

2024年2月29日下午&#xff0c;紹興市新昌縣人大常委會副主任王敏慧一行蒞臨迪捷軟件走訪考察&#xff0c;紹興市委科創委副主任、科創走廊建設領導小組副組長、市人大一級巡視員王繼崗&#xff0c;紹興市科技局副局長、科創走廊建設辦公室常務副主任梁楓陪同。 王主任一行聽取…

九州金榜|導致孩子厭學因素有哪些?家庭教育中要怎樣解決?

現在如今孩子出現厭學的情況越來越嚴重&#xff0c;這也難壞了很多家長&#xff0c;眾所周知&#xff0c;當下社會競爭越來越激烈&#xff0c;孩子的壓力也越來越大&#xff0c;這也是導致孩子厭學的主要因素。其實家庭因素也是引起孩子厭學情緒產生的重要原因&#xff0c;在家…

數據結構——二叉樹的基本概念及順序存儲(堆)

目錄 一.前言 二.樹概念及結構 2.1 樹的概念 2.2 樹的相關概念 2.3 樹的表現 2.4 樹在實際中的應用&#xff08;表示文件系統的目錄樹結構&#xff09; 三.二叉樹的概念及結構 3.1 概念 3.2 特殊的二叉樹 3.3 二叉樹的性質 3.4 二叉樹的存儲結構 3.4.1 順序存儲 3…

YOLOv9有效提點|加入SE、CBAM、ECA、SimAM等幾十種注意力機制(一)

專欄介紹&#xff1a;YOLOv9改進系列 | 包含深度學習最新創新&#xff0c;主力高效漲點&#xff01;&#xff01;&#xff01; 一、本文介紹 本文將以SE注意力機制為例&#xff0c;演示如何在YOLOv9種添加注意力機制&#xff01; 《Squeeze-and-Excitation Networks》 SENet提出…

向上生長筆記

第一章 成為一個很厲害的人(持續輸入&#xff0c;反復練習) 為什么要學習及如何學習 1、自毀趨勢(熵增)&#xff0c;故需要能量輸入(負熵流) //引申&#xff1a;水往低處流是趨勢&#xff0c;學習是逆趨勢。 2、持續輸入能量&#xff08;物質和信息&#xff09;&#xff0c;…

linux本地安裝nginx教程

1.安裝編譯工具及庫文件 yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel pcre-devel 2.下載 nginx包到指定位置 wget https://nginx.org/download/nginx-1.18.0.tar.gz 3.解壓包 tar -zxvf nginx-1.18.0.tar.gz #解壓 4.在你想安裝nginx的…

力扣2月最后三天的每日一題

力扣2月最后三天的每日一題 前言2867.統計樹中的合法路徑數目思路確定1e5中的質數統計每個點的連接情況開始對質數點進行處理完整代碼 2673.使二叉樹所有路徑值相等的最小代價思路完整代碼 2581.統計可能的樹根數目思路建立連通關系將猜測數組變為哈希表&#xff0c;方便查詢利…

2280. 最優標號(最小割,位運算)#困難,想不到

活動 - AcWing 給定一個無向圖 G(V,E)&#xff0c;每個頂點都有一個標號&#xff0c;它是一個 [0,2^31?1] 內的整數。 不同的頂點可能會有相同的標號。 對每條邊 (u,v)&#xff0c;我們定義其費用 cost(u,v) 為 u 的標號與 v 的標號的異或值。 現在我們知道一些頂點的標號…

七通道NPN 達林頓管GC2003,專為符合標準 TTL 而制造,最高工作電壓 50V,耐壓 80V

GC2003 內部集成了 7 個 NPN 達林頓晶體管&#xff0c;連接的陣列&#xff0c;非常適合邏輯接口電平數字電路&#xff08;例 如 TTL&#xff0c;CMOS 或PMOS 上/NMOS&#xff09;和較高的電流/電壓&#xff0c;如電燈電磁閥&#xff0c;繼電器&#xff0c;打印機或其他類似的負…

讀《代碼整潔之道》有感

最近讀了一本書&#xff0c;名字大家都看到了&#xff1a;《代碼整潔之道》&#xff0c;之前一直只是聽說過這本書的大名&#xff0c;卻一直沒有進行拜讀&#xff0c;最近想起來了就想著看一看&#xff0c;不看不要緊&#xff0c;看了之后就像吃了炫邁&#xff0c;根本停不下來…

MATLAB環境下腦電信號EEG的譜分析

腦電信號一直伴隨著人類的生命&#xff0c;腦電波是腦神經細胞發生新陳代謝、離子交換時細胞群興奮突觸電位總和&#xff0c;腦電信號的節律性則和丘腦相關&#xff0c;含有豐富的大腦活動信息。通常我們所接觸的腦電圖都是頭皮腦電圖&#xff0c;在有些特殊場合還需要皮下部位…

10.廣域網技術

1. PPP實驗點這里&#xff08;拓撲代碼&#xff09; 2. PPPoE配置實驗點這里&#xff08;拓撲代碼&#xff09; 目錄 一、廣域網二、PPP協議三、PPP鏈路建立過程1-LCP&#xff08;鏈路協商&#xff09;四、PPP鏈路建立過程2-PAP/CHAP&#xff08;認證協商&#xff0c;可選&…

linux系統多個mysql時的部署和服務注冊

在一次實際部署過程中,碰到了服務器已經部署了一個mysql服務. 再部署新的mysql時,特別注意不能與另一個mysql互相影響.記錄一次部署中存在的問題和解決方法. 因為已存在mysql,新的mysql部署采用的是mysql.tar.gz解壓手動安裝,避免.rpm或者.deb等自動安裝方式覆蓋了已有mysql的配…

python語言1

一、pytho中的注釋 1.1注釋的理解 程序員在代碼中對代碼功能解釋說明的標注性文字可以提高代碼的可讀性注釋的內容將被python解釋器忽略&#xff0c;不被計算機執行 1.2注釋的分類 注釋分為&#xff1a;單行注釋、多行注釋、中文聲明注釋 &#xff08;1&#xff09;單行注…

LeetCode240題:搜索二維矩陣II(python3)

代碼思路&#xff1a; “根節點” 對應的是矩陣的 “左下角” 和 “右上角” 元素&#xff0c;以 matrix 中的左下角元素為標志數 flag &#xff0c;則有: 若 flag > target &#xff0c;則 target 一定在 flag 所在行的上方 &#xff0c;即 flag 所在行可被消去&#xff0c…

kotlin安卓開發教程視頻,2024年Android開發陷入飽和

Android基礎 1、什么是ANR 如何避免它&#xff1f; 如果耗時操作需要讓用戶等待&#xff0c;那么可以在界面上顯示進度條。 2、View的繪制流程&#xff1b;自定義View如何考慮機型適配&#xff1b;自定義View的事件 3、分發機制&#xff1b;View和ViewGroup分別有哪些事件分…

Java協議解析:探索網絡編程的核心

引言 在當今數字化時代&#xff0c;網絡編程扮演著日益重要的角色&#xff0c;而Java協議則成為這個領域中不可或缺的一部分。隨著互聯網的普及和各種網絡應用的不斷涌現&#xff0c;對網絡通信的要求也變得越來越嚴格&#xff0c;這就需要對Java協議進行深入的理解和探索。本…