Java程式查詢丟失的數字


丟失的數字是指在一個連續的元素或陣列中缺失的數字。在本節中,我們將討論使用Java程式語言查詢流中丟失數字的各種方法。

陣列中丟失數字的示例

丟失的數字是指陣列中連續數字序列中缺失的數字。

示例1

考慮一個數組

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中查詢流中丟失數字的各種方法。

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

在這種方法中,我們使用stream()方法將陣列轉換為流,然後使用sum()方法計算流的總和並存儲在“actualsum”變數中,然後我們使用公式n*(n+1)/2計算“expectedsum”,然後我們使用expectedsum - actualsum查詢丟失的數字。

演算法

  • 用一些值初始化一個數組。

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

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

  • 減去預期值和總和,將其分配給一個變數並打印出來。

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

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個值的異或並將其儲存在expectedValue變數中,然後我們計算actualValue的異或,最後我們在expectedValue和actualValue之間執行異或運算以獲得丟失的數字。

演算法

  • 用一些值初始化一個數組。

  • 計算陣列的長度併為其加1,因為陣列中的實際數字應該是array.length+1,並將其分配給變數'n'。

  • 將expected value設定為1,並使用for迴圈使用異或運算子計算expected value,直到n。

  • 將expected value設定為array[0],並使用for迴圈對陣列中存在的元素使用異或運算子計算actual value。

  • 使用異或運算子對expected value和actual value進行計算,並打印出丟失的數字

異或運算子 (^) − 異或運算子執行按位運算,如果兩個位都為1,則返回1,否則返回0。它由^表示。

a ^ b // where 'a' and 'b' are integers.	

示例

在這個例子中,我們將使用異或運算子並使用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查詢丟失的數字。

演算法

  • 用一些值初始化一個數組。

  • 建立一個HashSet,並使用for迴圈迭代陣列並將值新增到HashSet中。

  • 使用for迴圈,迭代i到array.length+1,並使用contains()方法檢查集合中是否存在缺失值,並列印丟失的數字。

HashSet − 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程式語言查詢丟失數字的不同方法。

更新於: 2024年6月25日

250 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.