找出連續數字中缺失的數字

2021-09-23 18:42:00 字數 952 閱讀 8924

今天有乙個業務上的問題,那就是在一串連續的數字中找出缺失的數字,我第一想到的就是借助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 小明的日常生活簡單的有點枯燥 ...