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程式語言查詢丟失數字的不同方法。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP