【问题标题】:Number of occurences of each term每个术语的出现次数
【发布时间】:2019-08-05 08:23:50
【问题描述】:

我得到了一个数组a[n][2],其中n 最多可以是10^5。有 n 个科目和 n 个学生。全部编号为 1、2、...、n。

a[i][0]a[i][1] (1 <= i <= n) 表示在第 i 个学科中,从a[i][0]a[i][1] 的所有学生都通过了,而其余的没有。我应该找出每个学生通过的科目数。

例如,

n=5 and a = [ [1,3], [1,3], [1,5], [1,5], [1,5] ] 

应该给出输出

[5, 5, 5, 3, 3]

(2)

n = 10, a = [ [1,10], [1,10], [1,10], [3,5], [1,10], ..., [1,10] ]

预期的答案应该是

[ 9, 9, 10, 10, 10, 9, 9, 9, 9, 9]

【问题讨论】:

    标签: arrays algorithm


    【解决方案1】:

    不太了解您的代码,这是另一种方法。 这类似于区间问题。举个例子吧:

    • n = 5
    • a = [ [1,3], [1,3], [1,5], [1,5], [1,5] ]​​i>

    我们首先制作一个大小为 no 的数组。科目数 + 1(为了计算简单)。

    1   2   3   4   5   6
    
    • 现在,让我们一一浏览间隔。每当我们遇到一个区间时,我们将 +1 添加到起点,将 -1 添加到终点 + 1th 位置。

    数组表示:(经过以上整个过程)。

     1          2          3          4         5         6
    
    +1                               -1                           [1,3]
    +1                               -1                           [1,3]
    +1                                                   -1       [1,5]
    +1                                                   -1       [1,5]
    +1                                                   -1       [1,5]
    
    • 所有未决的只是从左到右开始求和,然后您就可以得到每个学生的答案。上述过程有效,因为我们在每个间隔的最后一个学生之后否定(如做-1)加法,因为其他学生没有通过该特定科目。因此,在求和时,我们一定会得到每个学生的正确总数。

    求和看起来像:

     1          2          3          4         5         6
    
    +1                               -1                           [1,3]
    +1                               -1                           [1,3]
    +1                                                   -1       [1,5]
    +1                                                   -1       [1,5]
    +1                                                   -1       [1,5]
    
     5          5          5          3         3         0(not considered anyway) 
    

    【讨论】:

    • @vivek_23 知道了!您正在对所有这些 1 求和(基本上总和发生在最后一行)。非常感谢!
    • @noName 是的。从技术上讲,数组是一维的。我只是显示了行以便更好地理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多