在给定的数据中,找出缺失的数字
第一种:在给定的有序数组中,找到缺失的数字,只缺一个,
思路,累加数字到给定n,然后减去有序数组累加的和,然后就找到了
/** * 第一种,1-100中缺失一个数字,找出他是谁,数组 无需不重复 * 方法 1-100相加减去给定数字的结果 * * num是给定数字,n是代表 1-n的结果集 */ public static int findLostNum(int[] num,int n){ //比如给 num=3,res = 5 那么结果是 5-3 = 2,就是缺失的 int sum = 0; for (int i = 1; i <=n ; i++) { sum+=i; } for (int i = 0; i < num.length; i++) { sum-=num[i]; } return sum; } 测试 public static void main(String[] args) { // 1-3 ,5 = 1+2+3-5 // System.out.println(findLostNum(3,5)); }
第二种:第二种,99个数字,有偶数个重复的,一个奇数不重复的,找出这个数字
思路 异或
/** * 第二种,99个数字,有偶数个重复的,一个奇数不重复的,找出这个数字 * 可以考虑xor(异或) * * num是给定数字 */ public static int findLostNum1(int[] num){ //比如给 num=3,res = 5 那么结果是 5-3 = 2,就是缺失的 int sum = 0; for (int i = 0; i <num.length ; i++) { sum^=num[i]; } return sum; } /** * * @param args */ public static void main(String[] args) { // 1-3 ,5 = 1+2+3-5 // System.out.println(findLostNum(3,5)); // 2 2 3 int[] num1 = {2,2,3}; System.out.println(findLostNum1(num1)); }
还有一种情况:
/**
* 还有一种是有偶数个重复度 还有俩个 不同的 奇数
* 找出这俩个奇数
* 这个就做思考题吧
*/
不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!