• 给定一个 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;
    	}
    
    }
    

      

  • 相关阅读:
    Jmeter(十五)正则表达式提取参数
    jmeter学习笔记(十三)debug调试工具
    jmeter学习笔记(十二)函数
    港澳台手机号正则表达式,区号+手机
    Mac 模拟弱网测试
    Mac下安装fiddler
    Appium基础总结1:获取包名和Activity
    selenium常用资源的阿里镜像链接(转)
    JMETER数据库MYSQL--初入门
    JMETER接口测试-小试牛刀(二)
  • 原文地址:https://www.cnblogs.com/yuyu666/p/12362412.html
Copyright © 2020-2023  润新知