劍指offer 面試題53 在排序陣列中查詢數字

2021-10-04 12:31:29 字數 785 閱讀 9216

問題1:統計乙個數字在排序陣列**現的次數。

輸入:陣列

輸出:次數

思路:由於在排序陣列中,可以使用二分查詢。(注意加1減1細節。)

**:

class solution 

else if(target>datamiddle)

start=indexmiddle+1;

else

end=indexmiddle-1;

return getlast(nums,target,len,start,end);

}int getnumberofk(vector& nums, int target)

};

複雜度分析:時間複雜度為o(logn),空間複雜度為o(1)。

問題2:0~n-1中缺失的數字

乙個長度為n-1的遞增排序陣列中的所有數字都是唯一的,並且每個數字都在範圍0~n-1之內。在範圍0~n-1內的n個數字中有且只有乙個數字不在該陣列中,請找出這個數字。

思路:由於是有序陣列,使用二分查詢尋找第乙個值與下標不相等的值。

**:

class solution     

else

start=middle+1;

}if(start==len)

return len;

else

return -1;

}int missingnumber(vector& nums)

};

複雜度分析:時間複雜度為o(logn),空間複雜度為o(1)。

《劍指offer》面試題53 在排序陣列中查詢數字

思路 改進運用二分查詢 接下來我們思考如何更好地利用二分查詢演算法。假設我們是統計數字k在排序陣列 現的次數。在前面的演算法中時間主要消耗在如何確定重複出現的數字的第乙個k和最後乙個k的位置上,有沒有可能用二分查詢演算法直接找到第乙個k及最後乙個k呢?我們先分析如何用二分查詢演算法在陣列中找到第乙個...

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...

劍指offer面試題11

面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...