今天有乙個業務上的問題,那就是在一串連續的數字中找出缺失的數字,我第一想到的就是借助hashmap去實現。如下:
int array = new int;
hashtablehasht =
new hashtable();
for (int i = 0; i < array.length-1; i++)
for (int i = 1; i <= array.length; i++)
}
上述的方式是可以實現查詢出想要的結果的。那麼還有沒有其他的辦法實現呢?
int a = ;
int b = null;
b = new int[20];
for (int i = 0; i < a.length; i++)
for(int i = 0; i < b.length; i++)
}
上述的方式就是使用陣列來實現。
也可以借助用1+2+…+n減去當前輸入資料的總和,則所得的差就是缺失的那個數。 時間複雜度:o(n) 空間複雜度:o(1)。但n過大時,求和存在溢位問題。
int a = ;
int sum = 20*(20+1)/2;
int t;
for(int i=0; i<20-1; i++)
system.out.println("sum="+sum);
二、題目擴充套件:陣列中缺失兩個數?
同樣的可以用兩種方法:
對資料從min~max求和,為s1;並且求出陣列中所有元素的和,為s2; 記缺失的資料為a,b。s1-s2=a+b; 那麼a、b,一定是乙個比(a+b)/2小,乙個比它大。再遍歷一遍陣列,以(a+b)/2為分界線,較小的加為smin,較大的加為smax。求出min~(a+b)/2和(a+b)/2~max的和,相減就可以得到兩個數了。
字元中找出連續最長的數字串
輸入示例 asdfgh245467sds12 輸出示例 先放 include includeusing namespace std int main else for int i 0 i 0 str i 9 for int i 0 i以下是我覺得重要的 for int i 0 i 0 str i 9...
缺失的數字
給定乙個包含 0,1,2,n 中 n 個數的序列,找出 0 n 中沒有出現在序列中的那個數。示例 1 輸入 3,0,1 輸出 2示例 2 輸入 9,6,4,2,3,5,7,0,1 輸出 8package 陣列 auther kevin date classname numbermissing des...
數字遊戲 尋找缺失的數字
演算法專題導航頁面 演算法專題 應用場景 數字遊戲 尋找缺失的數字 尋找兩個排序陣列 長度相等 的上中位數 題目 程式猿小明來自於乙個游牧家庭,家裡有乙個大大的牧場和成群結隊的牛羊,為了便於管理羊群,小明決定對每只綿羊進行編號標記,最終剛好用完100個號碼 1 100 小明的日常生活簡單的有點枯燥 ...