給定一個 1-100 的整數數組,請找到其中缺少的數字。


import java.util.Arrays;
import java.util.BitSet;

/**
 * Java program to find missing elements in a Integer array containing numbers
 * from 1 to 100.
 *
 */
public class MissingNumberInArray {

	public static void main(String args[]) {

		// one missing number
		printMissingNumber(new int[] { 1, 2, 3, 4, 6 }, 6);

		// two missing number
		printMissingNumber(new int[] { 1, 2, 3, 4, 6, 7, 9, 8, 10 }, 10);

		// three missing number
		printMissingNumber(new int[] { 1, 2, 3, 4, 6, 9, 8 }, 10);

		// four missing number
		printMissingNumber(new int[] { 1, 2, 3, 4, 9, 8 }, 10);

		// Only one missing number in array
		int[] iArray = new int[] { 1, 2, 3, 5 };
		int missing = getMissingNumber(iArray, 5);
		System.out.printf("Missing number in array %s is %d %n", Arrays.toString(iArray), missing);
	}

	/**
	 * A general method to find missing values from an integer array in Java. This
	 * method will work even if array has more than one missing element.
	 */
	private static void printMissingNumber(int[] numbers, int count) {
		int missingCount = count - numbers.length;
		BitSet bitSet = new BitSet(count);

		for (int number : numbers) {
			bitSet.set(number - 1);
		}

		System.out.printf("Missing numbers in integer array %s, with total number %d is %n", Arrays.toString(numbers),
				count);
		int lastMissingIndex = 0;

		for (int i = 0; i < missingCount; i++) {
			lastMissingIndex = bitSet.nextClearBit(lastMissingIndex);
			System.out.println(++lastMissingIndex);
		}

	}

	/**
	 * Java method to find missing number in array of size n containing numbers from
	 * 1 to n only. can be used to find missing elements on integer array of numbers
	 * from 1 to 100 or 1 - 1000
	 */
	private static int getMissingNumber(int[] numbers, int totalCount) {
		int expectedSum = totalCount * ((totalCount + 1) / 2);
		int actualSum = 0;
		for (int i : numbers) {
			actualSum += i;
		}

		return expectedSum - actualSum;
	}

}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 Python實現在給定整數序列中找到和為100的所有數字組合 對於一個有序數組,我們通常采用二分查找的方式來定位某一元素,請編寫二分查找的算法,在數組中查找指定元素。 給定一個整數數組A及它的大小n,同時給定要查找的元素val,請返回它在數組中的位置(從0開始),若不存在該元素,返回-1。若該元素出現多次,請返回第一次出現的位置。 如何將一個數字字符串數組轉化為數字整數數組? 一個隨機類的數字游戲(1-100) 給定一個整數數組ar, 其中只有一個數出現了奇數次數,其他的數都是偶數詞,打印這個數。 Leetcode練習(Python):數組類:第53題:給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。進階: 如果你已經實現復雜度為 O(n) 的解法,嘗試使用更為精妙的分治法求解。 在排序數組中查找元素的第一個和最后一個位置(給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組中的開始位置和結束位置。) python計算1-100的整數的和 輸入一個正整數數組,把數組里所有數字拼接起來排成一個數,打印能拼接出的所有數字的最小的一個 Leetcode練習(Python):第303題:區域和檢索 - 數組不可變:給定一個整數數組 nums,求出數組從索引 i 到 j (i ≤ j) 范圍內元素的總和,包含 i, j 兩點。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM