`

面试题汇总

 
阅读更多

1.题目:给定数组A,大小为n,数组元素为0到n-1的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。要求在O(n)的时间复杂度,O(1)的空间复杂度下完成。

  

   解答:这种题目,既然只用这么少的空间,要么从异或角度考虑,相当于只能有一个变量出现。要么充分的利用给定的数组空间。而且时间复杂度为O(n)的话,必然就是遍历那个数组了。

             我们理解一下这个概念:

             假如一个数组中某个数字是 a[i] = t ( 0<=t < n ),那么 如果 a[i] = t + k*n,那么我们是不是需要a[i]%n就可以还原为以前的数组,而且 a[i] / k就可以求出k,是的,我们就利用这种思想来改造之前的数组,然后求出这个k.

             两次遍历数组的方法:考虑A[i],现在的位置为i,如果采用A来计数,它的位置应该是A[i]%n,找到计数位置,处理这个计数位置的办法就是加n.

             第一次遍历:对A[i]的计算位置加n,加n可以保证A[i]%n的是不变的

             第二次遍历:A数组,最后每一个元素表示为A[i] = x + k * n; 其中x<n,并且k就是我们要统计的频率

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, i;       //n is The length of the Array
    while (scanf("%d", &n) != EOF)
    {   
        int *a = malloc(sizeof(int) * n); 
        for (i = 0; i < n; i++)
            scanf("%d", &a[i]);

        for (i = 0; i < n; i++)
            a[a[i] % n] += n;

        for (i = 0; i < n; i++)
        {   
            if (a[i] / n == 0)
                printf("%d does not appear in the array!\n", i); 
            else
                printf("%d appear in the array for %d times\n", i, a[i]/n);
        }   
    }   
}

 

分享到:
评论

相关推荐

    超全的嵌入式工程师笔试面试题汇总.zip

    超全的嵌入式工程师笔试面试题汇总 单片机嵌入式应聘测试题(含答案).pdf 经典嵌入式面试题.pdf 嵌入式工程师笔试题带答案.pdf 嵌入式工程师经典面试题.pdf 嵌入式软件工程师笔试集锦.pdf 嵌入式软件工程师笔试题__...

    前端面试题汇总前端面试题汇总前端面试题汇总

    前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端面试题汇总前端...

    前端面试题汇总.pdf

    前端面试题汇总主要涵盖HTML和CSS相关的重要知识点,旨在考察面试者对于网页构建的基础知识、浏览器兼容性、页面性能优化以及SEO策略等的理解。以下是对这些面试题的详细解析: 1. **浏览器测试**:面试者应熟悉...

    Redis面试题汇总.zip

    Redis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试题汇总.zipRedis面试...

    Vue面试题汇总.zip

    Vue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总.zipVue面试题汇总...

    java常见面试题汇总

    java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见面试题汇总 java常见...

    mysql常见面试题汇总

    mysql常见面试题汇总,mysql常见面试题汇总 mysql常见面试题汇总,mysql常见面试题汇总 mysql常见面试题汇总,mysql常见面试题汇总 mysql常见面试题汇总,mysql常见面试题汇总 mysql常见面试题汇总,mysql常见面试题...

    web前端笔试题面试题汇总+前端优化总结

    web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题面试题汇总+前端优化总结 web前端笔试题...

    2021年最新版--Java+最常见的+200++面试题汇总+答案总结汇总.pdf

    为满足这一需求,市场上出现了大量针对Java开发者的面试准备资料,而“2021年最新版--Java+最常见的+200++面试题汇总+答案总结汇总.pdf”文档(以下简称“面试题汇总”)便是其中较为全面的一份。 首先,文档作者在...

    2018iOS面试题汇总

    ### 2018 iOS面试题汇总解析 #### 一、设计模式的理解及常见类型 设计模式是指在软件开发过程中,对于特定问题的一种普遍适用的解决方案。它代表着开发者们长期以来积累的经验教训,可以帮助我们更好地组织代码,...

    2021前端面试题.pdf

    前端面试题总结

    MySQL后端入门知识总结及面试题汇总.zip

    MySQL后端入门知识总结及面试题汇总.zipMySQL后端入门知识总结及面试题汇总.zipMySQL后端入门知识总结及面试题汇总.zipMySQL后端入门知识总结及面试题汇总.zipMySQL后端入门知识总结及面试题汇总.zipMySQL后端入门...

    嵌入式C语言面试题汇总(超经典).pdf

    我们在找嵌入式方面的工作时,让我们头疼的恐怕就是面试题了,因为我们摸不到企业的命题规律,也不知道该怎样去准备,今天将各大企业的面试题进行汇总,分享给大家,希望可以帮到各位小伙伴。加油哦!

    常见C++面试题汇总(最全c语言面试题)

    常见C++面试题汇总(最全c语言面试题) 所包含文件: 1、华为C++内部培训材料 2、130道面试题.doc 3、C++试题.htm 4、C-C++ 程序设计员应聘常见面试试题深入剖析.mht 5、C语言面试题大汇总之华为面试题.txt 6、C语言...

    asp.net面试题汇总

    asp.net面试题汇总

    2024最新网络安全面试题汇总(9份).zip

    2024最新网络安全面试题汇总,供大家学习参考,共9份。 【搞定网络协议】之网络安全面试题.docx 几率大的网络安全面试题(含答案).docx 网络安全、web安全、渗透测试之笔试总结(二).docx 网络安全、Web安全、...

    各大安全厂商网络安全面试题汇总(7份).zip

    各大安全厂商网络安全面试题汇总,共7份。适合找工作的安全同志。 360-几率大的网络安全面试题(含答案) 百度-搞定网络协议】之网络安全面试题 京东护网面试题总结+DD安全工程师笔试问题 渗透测试初级面试题 渗透...

    2023最新JAVA面试题集

    2023年最新版--Java+最常见的+200++面试题汇总+答案总结汇总 阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 ...

    阿里 面试题 总结

    阿里java后台开发面试题总结

Global site tag (gtag.js) - Google Analytics