• 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更好,初始化方便),然后用数字直接做地址记录频率。最后将所需数字的频率输出即可。
  • 相关阅读:
    移动端头部声明
    清除浮动绝招
    图片采用base64压缩,可以以字符串的形式传送base64给服务端转存为图片
    js cookie的封装和调用
    js 封装设计cookie
    div可编辑状态设置
    align使图片和文字居中
    布局如何做到自适应?
    Jmeter学习笔记四_压力测试
    Pycharm中配置Git版本管理
  • 原文地址:https://www.cnblogs.com/jiading/p/10415271.html
Copyright © 2020-2023  润新知