找出1-100中缺失的两个数
生活随笔
收集整理的這篇文章主要介紹了
找出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的就記錄,不放到數組中,最后在遍歷一遍數組,看那個坑數空的,就是缺少的。
?
轉載于:https://www.cnblogs.com/loren-Yang/p/7519316.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的找出1-100中缺失的两个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 练习2
- 下一篇: oracle pl/sql 函数