1060 有序陣列中的缺失元素

2021-10-24 19:40:16 字數 1291 閱讀 8080

題目描述:

給出乙個有序陣列 a,陣列中的每個數字都是 獨一無二的,找出從陣列最左邊開始的第 k 個缺失數字。

示例 1:

輸入:a = [4,7,9,10], k = 1

輸出:5

解釋:第乙個缺失數字為 5 。

示例 2:

輸入:a = [4,7,9,10], k = 3

輸出:8

解釋:缺失數字有 [5,6,8,…],因此第三個缺失數字為 8 。

示例 3:

輸入:a = [1,2,4], k = 3

輸出:6

解釋:缺失數字有 [3,5,6,7,…],因此第三個缺失數字為 6 。

1 <= a.length <= 50000

1 <= a[i] <= 1e7

1 <= k <= 1e8

方法1:

主要思路:

(1)直接模擬從小到大,查取第 k 個缺失的數字;

class

solution

--k;

if(k==0)

//若陣列中的元素遍歷完,則跳出迴圈,找陣列範圍之外的數字

if(pos==nums.

size()

)//缺失的數字

++cur_num;

}while

(k)return cur_num;}}

;

方法2:

主要思路:

(1)二分搜尋;

(2)每次比較當前位置下,從頭到當前位置缺失的數字數量是否小於 k ,若是小於 k ,則將left更新,否則更新 right,則最終的終止位置是left==right,此時從0到right(或者說left)的缺失的數字個數為》=k,則使用 right-1(或者left-1)的位置進行計算缺失的數字;

class

solution

intmissingelement

(vector<

int>

& nums,

int k)

while

(leftelse

}//根據找到的位置處,確定從0開始缺失的第 k 個數字

return nums[left-1]

+k-missing_num

(nums,left-1)

;}};

23 刪除有序陣列中的元素,陣列仍然有序 陣列

刪除乙個有序陣列的乙個元素,採用兩個陣列實現 實現 2017年6月19日16 16 31 功能 刪除陣列中乙個資料之後陣列依然有序 include stdio.h define m 9 int main int b m 1 int i,j,num bool flag printf 請輸入將要刪除的資...

在旋轉有序陣列中查詢元素

1.題目 給定乙個旋轉的有序陣列,比如是旋轉之後得到的,在陣列中查詢是否存在元素key。要求時間複雜度為o lgn 假定陣列中不存在重複元素。2.分析 從上面的選擇陣列可以發現,array middle 將陣列分成兩段,兩段中必有一段是有序的。這樣就可以使用二分查詢了。乙個變形的二分查詢。3.1 i...

1118 有序陣列的元素新增

題目描述 乙個非遞減有序的整型陣列有n個元素,給定乙個整數num,將num插入該序列的適當位置,使序列仍保持非遞減有序。要求定義乙個函式insert 將整數num插入在陣列a的適當位置上,函式原型如下 void insert int a,int n,int num 另外函式仍然呼叫以前定義過的函式p...