zoukankan      html  css  js  c++  java
  • Memorise Me!——用数值做地址,实现快速查找

    题目如下:

    Arijit is a brilliant boy. He likes memory games. He likes to participate alone but this time he has to have a partner. So he chooses you.

    In this Game , your team will be shown N numbers for few minutes . You will have to memorize these numbers.

    Now, the questioner will ask you Q queries, in each query He will give you a number , and you have to tell him the total number of occurrences of that number in the array of numbers shown to your team . If the number is not present , then you will have to say “NOT PRESENT” (without quotes).

    INPUT And OUTPUT

    The first line of input will contain N, an integer, which is the total number of numbers shown to your team.

    The second line of input contains N space separated integers .

    The third line of input contains an integer Q , denoting the total number of integers.

    The Next Q lines will contain an integer denoting an integer, Bi , for which you have to print the number of occurrences of that number (Bi) in those N numbers on a new line.

    If the number Bi isn’t present then Print “NOT PRESENT” (without quotes) on a new line.

    CONSTRAINTS

    1≤N≤105

    0≤Bi≤1000

    1≤Q≤105

    SAMPLE INPUT
     
     
    6
    1 1 1 2 2 0
    6
    1
    2
    1
    0
    3
    4
    SAMPLE OUTPUT
     
     
    3
    2
    3
    1
    NOT PRESENT
    NOT PRESENT
     
    Explanation

    The given array is (1,1,1,2,2,0) of size 6.

    Total number of queries is 6 also.

    For the first query i.e for 1 , the total of number of occurrences of 1 in the given array is 3 . Hence the corresponding output is 3.

    For the second query i.e. for 2, the total of number of occurrences of 2 in the given array is 2 . Hence the corresponding output is 2.

    For the fifth query i.e. for 3. 3 is not present in the array . So the corresponding output is "NOT PRESENT" (without quotes).

    Time Limit:0.6 sec(s) for all input files combined.
    Memory Limit:256 MB
    Source Limit:1024 KB
    Marking Scheme:Marks are awarded when all the testcases pass.
    Allowed Languages:Bash, C, C++, C++14, Clojure, C#, D, Erlang, F#, Go, Groovy, Haskell, Java, Java 8, JavaScript(Rhino), JavaScript(Node.js), TypeScript, Julia, Kotlin, Lisp, Lisp (SBCL), Lua, Objective-C, OCaml, Octave, Pascal, Perl, PHP, Python, Python 3, R(RScript), Racket, Ruby, Rust, Scala, Swift, Swift-4.1, Visual Basic
     
     
    https://www.hackerearth.com/zh/practice/data-structures/arrays/1-d/practice-problems/algorithm/memorise-me/description/
     
    这道题的关键在于时间效率,因为有一个sample数据非常多,而这道题对时间的要求(0.6sec)远比空间要求(256MB)高,所以选择以空间换时间。
    题目的关键在于数字的大小不会超过1000,所以可以创建一个大小为1001的数组(使用vector更好,初始化方便),然后用数字直接做地址记录频率。最后将所需数字的频率输出即可。
  • 相关阅读:
    Windows 文件过滤驱动经验总结
    修改disk驱动监控文件系统的IO特征
    STATUS_MUTANT_NOT_OWNED
    网络连接存储(Networkattached storage,NAS)简介
    缓存管理器
    LINUX softraid 管理
    过滤驱动的问题自我总结
    Visual Studio 2010 (vs2010) 全屏功能的改进
    在 .NET 中,后++ 运算符产生的一个小问题
    在 Visual Studio 2008 中去掉某些文件的只读属性
  • 原文地址:https://www.cnblogs.com/jiading/p/10415271.html
Copyright © 2011-2022 走看看