2011-03-21 15 views
1

我想檢查十進制數的連續順序並找到缺少的數字。 例如:如果我有1.1.1,1.1.3,1.1.4,2.1.1,2.1.3,2.1.2,3等 在這裏,我需要找到缺少的數字1.1.2,也出於序列2.1.2。請以邏輯幫助我。使用java檢查十進制數的連續順序的邏輯

+0

完成整數,在小數的情況下困惑。 – user668934 2011-03-21 06:01:48

+0

聽起來像功課 – 2011-03-21 06:16:16

+2

1.1.1不是一個十進制數;) – Selvin 2011-03-21 06:21:28

回答

0

這確實聽起來像家庭作業,但這裏有一些算法的提示。爲了簡單起見,不要效率,嘗試兩步法。

您必須將初始列表中的每個值視爲一組有序整數。值2.1.3是一個ArrayList,其元素爲2,1,3。

首先確定什麼是失序 - 這會捕獲2.1.2值。當列表的第n個元素的任何部分的值大於第(n + 1)個元素的任何部分時,某些內容不符合順序。瀏覽一次比較兩個值的值列表;將每個元素分解爲一個整數列表。

其次,對列表進行排序並確定是否存在間隙。排序仍然需要將每個值視爲一組整數。排序列表中的間隙將被定義爲在兩個值的任何部分中變化大於1的變化 。停止比較2個值,當你找到一個差距,並移動到接下來的2個值進行比較。

+0

感謝您的邏輯,如果我正確地理解你,它是第一個處理以1.1.1開頭的小數點集合,找到錯過的數字或不按順序,然後繼續到2.1.1.這真的需要很多時間, 我嘗試過這個。我正在嘗試處理整個集合的排序和亂序。提前致謝。 – user668934 2011-03-22 11:28:29

+0

爲了捕捉序列項目,您將比較兩個字符串1.1.2到1.1.3作爲兩個數組/十進制值的數組列表。對於每個陣列/陣列列表中的相應元素,如果這些元素中的差異不是1,則會出現間隙。 – karakuricoder 2011-03-22 15:44:08