面试题 寻找缺失的页码

来源:互联网 发布:codemirror python 编辑:程序博客网 时间:2024/04/28 14:04

题目是这样的,给定一本书的打乱的页码 书缺少了一页怎么找出缺少的那个页
(1).最简单的方式是对整个页码进行排序 nlogn 排序 然后进行遍历 看后一个元素与前一个元素的差值 如果不是为1则就找到了缺失的那一页
(2).使用一个bitset数组 (需要一个n长度的空间) 然后对整个数组进行遍历
将数组元素对应的下标置为1 最后查找整个bitset数组中不为1的下标 就找到了缺失的地方
(3).使用桶排序的思想 在整个数组中本来页码是无序的 通过调整使得a[i]=i
也就是说通过下标对页码进行排序 反正思路就是使得所有的 a[i]=i最后找到
a[i]!=i 的就找到了缺失的页码

#include <iostream>using namespace std;int main(){    int b[10] = { 3,2,4,9,6,1,0,8,7,-1 };    int tempval, temp;    for (int i = 0; i < 10; i++)    {        if (b[i] != i)        {               if (b[i] == -1)                continue;            else            {                tempval = b[b[i]];                b[b[i]] = b[i];                b[i] = tempval;            }        }            while (b[tempval] != tempval)            {                temp = b[tempval];                b[tempval] = tempval;                tempval = temp;                if (tempval == -1)                    break;            }    }    for (int i = 0; i < 10; i++)    {        if (b[i] != i)            cout << "The miss number is " << i << endl;    }    system("pause");    return 0;}
1 0
原创粉丝点击