小红的矩阵

[题目链接](https://www.nowcoder.com/practice/df690022406d4e8d8594890f3e109cde)

思路

简单模拟题。读入一个 的矩阵,统计所有元素中个位数为 的个数。

判断一个整数 的个位是否为 ,只需检查 x % 10 == 9 即可。

遍历矩阵中每一个元素,对满足条件的计数,最后输出计数结果。

代码

[sol-C++]

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n, m;
    scanf("%d%d", &n, &m);
    int cnt = 0;
    for(int i = 0; i < n * m; i++){
        int x;
        scanf("%d", &x);
        if(x % 10 == 9) cnt++;
    }
    printf("%d\n", cnt);
    return 0;
}

[sol-Java]

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), m = sc.nextInt();
        int cnt = 0;
        for (int i = 0; i < n * m; i++) {
            int x = sc.nextInt();
            if (x % 10 == 9) cnt++;
        }
        System.out.println(cnt);
    }
}

[sol-Python3]

import sys
input = sys.stdin.readline
n, m = map(int, input().split())
cnt = 0
for _ in range(n):
    row = list(map(int, input().split()))
    for x in row:
        if x % 10 == 9:
            cnt += 1
print(cnt)

[sol-JavaScript]

const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin });
const lines = [];
rl.on('line', line => lines.push(line.trim()));
rl.on('close', () => {
    const [n, m] = lines[0].split(' ').map(Number);
    let cnt = 0;
    for (let i = 1; i <= n; i++) {
        const nums = lines[i].split(' ').map(Number);
        for (const x of nums) {
            if (x % 10 === 9) cnt++;
        }
    }
    console.log(cnt);
});

复杂度分析

  • 时间复杂度: ,遍历矩阵中每个元素一次。
  • 空间复杂度: ,每次只需存储一行的数据。