zoukankan      html  css  js  c++  java
  • 找出1-100中缺失的两个数

    题目:

    从1-100这100个数中,抽出两个数,将剩下的98个数排序好放到array[98]的数组中,请问如何求出被抽出的两个数?

    思路:

    排序好,说明数组中的数是从小到大排序的,那说明如果抽出的是99,100,那么前面就是1-98排序,但如果抽出的是50,51,那么说明数组中49,52是排序好的。所以,我们定义一个变量,每次递加,和数组中进行比较,相等说明这个位置的数没有缺失,否者就是缺失的。

    代码:

    public class Main{
        
        public static int[] findMissNum(int[] array) {
            if(array==null || array.length==0) {
                return null;
            }
            
            int len = array.length;
            int miss = 100-len;
            int[] res = new int[miss];
            
            
            int i=1;
            int k=0;
            for(int j=0; j<len-1; j++) {
                int dif = array[j+1] - array[j];
                if(dif==1) {
                    i++;
                    continue;
                } else {
                    while((dif--)!=1) {
                        i++;
                        res[k++] = i;
                    }
                    i++;
                }
            }
            
            //末尾的数被抽出了
            int n=(miss-k);
            int m=100-n+1;
            
            for(;n>0;n--) {
                res[k++] = m++;
            }
            
            return res;
        }
        
        
        public static void main(String[] args) {
            int[] array = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98};
            int[] res = findMissNum(array);
            
            for(int i=0; i<res.length; i++) {
                System.out.print(res[i]+" ");
            }
    
        }    
    }

    进阶题目:

    如果给定的数组是乱序的呢?可以根据位置信息和数值一个坑一个坑对应,大于98的就记录,不放到数组中,最后在遍历一遍数组,看那个坑数空的,就是缺少的。

  • 相关阅读:
    总结php删除html标签和标签内的内容的方法
    php正则验证手机、邮箱
    php正则匹配到字符串里面的a标签
    PHP 使用try catch,捕获异常
    Apache漏洞利用与安全加固实例分析
    php json接口demo
    PHP 把MYSQL重复ID 二维数组重组为三维数组
    文件扩展关联命令(assoc)
    修改文件属性(attrib)
    文件比较命令(fc)
  • 原文地址:https://www.cnblogs.com/loren-Yang/p/7519316.html
Copyright © 2011-2022 走看看