🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 计算大小为 n 的矩阵中 k 的频率,其中 matrix(i,j)= i + j > 原文: [https://www.geeksforgeeks.org/count-frequency-k-matrix-size-n-matrixi-j-ij/](https://www.geeksforgeeks.org/count-frequency-k-matrix-size-n-matrixi-j-ij/) 给定大小为 n * n 的矩阵。 计算该矩阵中给定元素 k 的频率。 **这里的基本索引是 1。** 例子: ``` Input : n = 4, k = 7 Output : 2 Explanation The matrix will be 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8 in the given matrix where M(i, j) = i+j, frequency of 7 is 2 Input : n = 5, k = 4 Output : 3 Explanation The matrix will be 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 6 7 8 9 10 Explanation In the given matrix where M(i, j) = i+j, frequency of 4 is 3 ``` **第一种方法** 1)构造大小为 n * n 的矩阵。 2)用 M(i,j)= i + j 填充值。(回想这里的基本索引为 1)。 3)迭代遍历矩阵并计算给定元素的频率。 这种方法效率不高,因为如果矩阵大小很大,将导致超过时间限制。时间复杂度将为 O(n ^ 2)。 **有效方法** 在此方法中,我们避免创建大小为 n * n 的矩阵。 例如 如果 n = 10,则矩阵为 ``` 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 ``` 现在,请注意第二对角线中的值如何相同,我们还可以发现计数增加的模式,例如 1、2、3、4 ,在这里我们可以看到 如果(n + 1 )> = k,则 k 的频率为 k-1 ,否则频率将为 2 * n + 1-k ## CPP ``` // CPP program to find the frequency of k  // in matrix where m(i, j)=i+j #include <bits/stdc++.h> using namespace std; int find(int n, int k) {     if (n + 1 >= k)         return (k - 1);     else         return (2 * n + 1 - k); } // Driver Code int main() {     int n = 4, k = 7;     int freq = find(n, k);     if (freq < 0)         cout << " element not exist \n ";     else         cout << " Frequency of " << k               << " is " << freq << "\n";     return 0; } ``` ## Java ```java // Java program to find the  // frequency of k in matrix // in matrix where m(i, j)=i+j import java.util.*; import java.lang.*; public class GfG{     public static int find(int n, int k)     {         if (n + 1 >= k)             return (k - 1);         else             return (2 * n + 1 - k);     }     // Driver function      public static void main(String argc[])     {         int n = 4, k = 7;         int freq = find(n, k);         if (freq < 0)             System.out.print(" element"             + " not exist \n ");         else             System.out.print(" Frequency"             + " of " + k + " is " +             freq + "\n");     } } // This code is contributed by Sagar Shukla ``` ## Python3 ```py # Python program to find # the frequency of k  # in matrix where # m(i, j)=i+j import math def find( n,  k):     if (n + 1 >= k):         return (k - 1)     else:         return (2 * n + 1 - k) # Driver Code n = 4 k = 7 freq = find(n, k) if (freq < 0):     print ( " element not exist") else:     print(" Frequency of " , k ," is " , freq ) # This code is contributed # by Gitanjali. ``` ## C# ```cs // C# program to find the  // frequency of k in matrix // in matrix where m(i, j)=i+j using System; public class GfG{     public static int find(int n, int k)     {         if (n + 1 >= k)             return (k - 1);         else             return (2 * n + 1 - k);     }     // Driver function      public static void Main()     {         int n = 4, k = 7;         int freq = find(n, k);         if (freq < 0)             Console.WriteLine(" element"             + " not exist ");         else             Console.WriteLine(" Frequency"             + " of " + k + " is " +             freq );     } } // This code is contributed by vt_m ``` ## PHP ```php <?php // PHP program to find the frequency of k  // in matrix where m(i, j)=i+j function find($n, $k) {     if ($n + 1 >= $k)         return ($k - 1);     else         return (2 * $n + 1 - $k); }     // Driver Code     $n = 4;      $k = 7;     $freq = find($n, $k);     if ($freq < 0)         echo " element not exist \n ";     else         echo " Frequency of " , $k             , " is " , $freq , "\n"; // This code is contributed by anuj_67\. ?> ``` Output: ``` Frequency of 7 is 2 ``` * * * * * *