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更好,初始化方便),然后用数字直接做地址记录频率。最后将所需数字的频率输出即可。
  • 相关阅读:
    JavaScript对iframe的DOM操作
    如何处理JSON中的特殊字符
    JavaScript引擎是单线程的
    JSONP跨域的原理解析
    四道JavaScript面试题检测你的js基本功
    让IE6也支持position:fixed
    Keras Layer 的 call(x) 和 input_shape
    C++文件读写 fwrite 和 fread
    Windows Ubuntu 子系统修改默认登陆用户·
    Python新建文件夹(如果不存在)
  • 原文地址:https://www.cnblogs.com/jiading/p/10415271.html
Copyright © 2011-2022 走看看