首頁 > Java > java教程 > Java程式尋找遺失的數字

Java程式尋找遺失的數字

WBOY
發布: 2023-08-27 17:13:06
轉載
634 人瀏覽過

Java程式尋找遺失的數字

遺失數字是連續元素流或陣列中遺失的數字。在本節中,我們將討論使用 java 程式語言在元素流中尋找遺失數字的各種方法。

數組中遺失數字的範例

遺失的數字是數組中連續數字序列中遺失的數字。

考慮一個陣列;

arr=[1,2,3,4,5,6,8]

上面的陣列‘arr’中,缺少了7,所以7就是遺失的數字

範例2

考慮一個陣列;

arr=[1,2,3,4,5,6,7,8,9,11]

上面的陣列'arr'中,缺少10,所以10就是遺失的數字

現在,我們將討論 Java 中查找流中遺失的數字的各種方法。

方法一:使用stream()和sum()方法

在這個方法中,我們使用stream()函數並將陣列轉換為流,然後使用sum()函數計算流的總和並儲存在'actualsum'變數中,然後我們計算預期總和使用公式n*(n 1)/2 ,然後我們使用預期總和- 實際總和找到遺失的數字。

演算法

  • 使用一些值初始化陣列。

  • 使用stream()和sum()方法計算陣列的總和

  • 計算陣列長度,並使用 n 項總和公式求連續數字的預期總和。

  • 減去期望值和總和,將其分配給變數並列印。

Stream() - 'Stream()'方法用於建立元素流,以便我們可以使用filter()、map()、reduce()等方法來處理資料 p>

Arrays.stream(collection)
登入後複製

sum() - 此方法用於計算集合中所有元素的總和。

stream.sum()
登入後複製

範例

在這個例子中,我們將使用stream()和sum()方法透過java來找出遺失的數字。

import java.util.Arrays;
public class Main {
   public static void main(String[] args) {
      int[] array = {1, 2, 3, 5};
      int sum = Arrays.stream(array).sum(); 
      int n = array.length + 1; 
      int expectedvalue = (n * (n + 1)) / 2; 
      int lostnumber = expectedvalue - sum; 
      System.out.println("lost number " + lostnumber);
   }
}
登入後複製

輸出

lost number 4
登入後複製

方法 2:使用異或

在這個方法中,我們計算n個值的XOR並儲存在expectedValue變數中,然後計算XOR的actualValue,最後我們在之間執行XOR ExpectedValue 和actualValue 來取得遺失的數量。

演算法

  • 使用一些值初始化陣列。

  • 計算數組的長度並加 1,因為我認為數組中的實際數字應該是 array.length 1 並分配給變數“n”。

  • 將期望值設為 1,並使用 XOR 運算子使用 for 迴圈計算期望值,直到 n。

  • 將期望值設為陣列[0],並使用 XOR 運算子使用 for 迴圈計算陣列中存在的元素的實際值。

  • 使用預期值和實際值的 XOR 運算子計算遺失的數字並列印

#異或運算 (^) - 異或運算執行位元運算,如果兩個位元都為 1,則傳回 1,否則傳回 0。它由 ^ 表示。

A ^ b // where 'a' and 'b' are integers.	
登入後複製

範例

在此範例中,我們將使用 XOR 運算子並使用 java 來尋找遺失的數字。

public class Main {
   public static void main(String[] args) {
      int[] array = {1, 2, 3, 5}; // input array with missing number
      int n = array.length + 1; // total number of elements if no number was missing
      int expectedValue = 1; // expected XOR value if no number was missing
      for (int i = 2; i <= n; i++) {
         expectedValue ^= i; // XOR all elements from 1 to n to get expected value
      }
      int actualValue = array[0]; // start with first element of array
      for (int i = 1; i < array.length; i++) {
         actualValue ^= array[i]; // XOR all elements of array to get actual value
      }
      int lostNumber = expectedValue ^ actualValue; // XOR expected and actual values to get lost number
      System.out.println("The lost number is " + lostNumber);
   }
}
登入後複製

輸出

The lost number is 4
登入後複製

方法 3:使用 HashSet

在這個例子中,我們將使用資料結構Hashset和Hashset的內建方法來使用java來尋找遺失的數字。

演算法

  • 使用一些值初始化陣列。

  • 建立哈希集並使用 for 迴圈迭代數組並將值新增至哈希集。

  • 使用 for 循環,迭代 i 到 array.length 1 並使用 contains() 方法檢查集合中缺少的值並列印遺失的數字。

HashSet - 哈希集是不允許重複元素的無序物件集合。

HashSet<datatype> objName = new HashSet<datatype>();
登入後複製

contains() - 此方法檢查集合中是否存在值並傳回布林值。

setObjName.contains(value)
登入後複製

範例

在這個方法中,我們將陣列的所有元素儲存在HashSet 中,然後從1 迭代到array.length 1 值,並檢查所有值是否都存在於集合中,如果不存在任何值,則這就是丟失了數值並列印它。

import java.util.Arrays;
import java.util.HashSet;

public class Main {
   public static void main(String[] args) {
      int[] array = {1, 2, 3, 5};
      HashSet<Integer> set = new HashSet<Integer>();
      for (int i : array) {
         set.add(i); 
      }
      for (int i = 1; i <= array.length + 1; i++) {
         if (!set.contains(i)) { 
            System.out.println("lost number: " + i);
            break;
         }
      }
   }
}
登入後複製

輸出

lost number: 4
登入後複製

因此,在本文中,我們學習了使用 java 程式語言來尋找遺失號碼的不同方法。

以上是Java程式尋找遺失的數字的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板