劍指Offer——陣列中出現次數超過一半的數字
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 方法一 最先想到的是對陣列記性排序,然後遍歷陣列找出出現次數超過陣列長度的一半 […]
-->
程式前沿 幫助程式設計師解決問題,增加專業技能,提升個人能力與未來世界競爭力。
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 方法一 最先想到的是對陣列記性排序,然後遍歷陣列找出出現次數超過陣列長度的一半 […]
題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。 方法一 可以利用快排中partition的思想(快排詳細分析可以參考快速排序演算法) 隨機選中一個數字,在第一次partition之後,得到此時排列中該數字的位置ind […]
題目描述 把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 方法一 首先想到的是如果一個數是醜數,那麼它應該可以分解成一個醜數與2或3或5的積,所以可以將已經得到的醜 […]
題目描述 輸入一個正整數陣列,把陣列裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則列印出這三個數字能排成的最小數字為321323。 方法 輸入為 vector<int> numbers, 輸出為string。 可已將numbers中 […]
題目描述 給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。 解題思路 本題做法比較簡單,但需要注意的點比較多: 1、base為0的情況:判斷base是否為0時也需要注意,由於計算機表示小數(包括float和double型小數)都有誤差,所 […]
題目描述 請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。 方法一 方法和從上往下列印二叉樹類似,遍歷順序是從上到下,每一行按照從左到右的順序進行遍歷,但是需要增加一個引數row來標記當前行數,如果是偶數 […]
題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快 […]
題目:給定一個陣列A[0,1,…,n-1],請構建一個陣列B[0,1,…,n-1],其中B中的元素B[i]=A[0]×A[1]×…×A[i-1]×A[i 1]×…×A[n-1],不能使用除法。 解題思路 例如:A[]={1,2,3}求B[] B[0]=A[1]×A[2]=2×3=6 B[1]=A[0 […]
問題:兩個佇列實現棧。 因為佇列的特點是先進先出,而棧式先進後出。所以具體的實現步驟如下: (1)判斷是否為NULL;如果queue1和queue2都為NULL,則該棧為NULL; (2)如果queue1不為NULL,而queue2為NULL;則queue1出隊,進隊到queue2,如果qu […]
用兩個棧實現佇列 參與人數:3531時間限制:1秒空間限制:32768K 通過比例:34.83% 最佳記錄:0 ms|0K(來自 William_Meng) 題目描述 用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。 這個題解法應該比較多 我是用stack1存的 […]