今天看到一道演算法題。
將1-100這100個數字放入int這樣的陣列中。現在要找出哪個數字是沒有出現在陣列中的。
你會怎麼做?
(1)大部分人的做法:
一瞬間就能想到的方法是遍歷:兩個迴圈套在一起,遍歷每乙個數字是否出現在陣列中。這個方法時間複雜度是o(n^2)
(2)稍微思考一下,可以給出另乙個做法:
先將陣列排序,之後遍歷排好序的陣列。很明顯,排好序的陣列是乙個連續的遞增序列,每個數字=前乙個數字+1。那麼我們在遍歷的時候只需要找出那個不連續的數字即可。
這個方法排序需要o(nlogn),加上遍歷的o(n),依舊約等於o(nlogn)。
(3)最簡單的方法:
把1-100和陣列中的所有數字分別相加,之後1-100的和減去陣列數字的和,結果就是沒出現的那個數字。
這個方法是不是足夠簡單。。。。。。
找出落單出現的那個數字
題目描述 乙個陣列除了某乙個數字只有乙個外,其餘的數字都是成對出現的 求出這個落單的數字 思路 使用異或的特性,可以抵消陣列中相同的數字,則剩下的哪個數字就是落單的數字 示例 乙個陣列除了某乙個數字只有乙個外,其餘的數字都是成對出現的 public class unique number integ...
找出陣列中只出現1 2 次的n個數字
1.給定乙個陣列,其中只有乙個數出現一次,別的數都出現3次,找出這個數 給定乙個陣列,其中只有乙個數x出現一次,別的數都出現3次,找出這個數x。線性時間複雜度 這個用異或不可以。可以設定乙個長度為32的int陣列。統計每位上出現1的次數,如果次數能被3整除,說明x該位上為0,否則為1 2.題目 乙個...
找出乙個陣列中各個數字出現的次數
看了prime第一章,突發奇想了乙個問題,如何寫乙個演算法去找出乙個陣列中各個數字出現的次數呢?方法一 可以使用我們經常寫的演算法,氣泡排序之類的,首先對陣列進行排序,然後根據prime中第一章的寫法。算出每個數字出現的次數。include include using namespace std i...