列表

详情


6333. 查询网格图中每一列的宽度

给你一个下标从 0 开始的 m x n 整数矩阵 grid 。矩阵中某一列的宽度是这一列数字的最大 字符串长度 。

请你返回一个大小为 n 的整数数组 ans ,其中 ans[i] 是第 i 列的宽度。

一个有 len 个数位的整数 x ,如果是非负数,那么 字符串长度 为 len ,否则为 len + 1 。

 

示例 1:

输入:grid = [[1],[22],[333]]
输出:[3]
解释:第 0 列中,333 字符串长度为 3 。

示例 2:

输入:grid = [[-15,1,3],[15,7,12],[5,6,-2]]
输出:[3,1,2]
解释:
第 0 列中,只有 -15 字符串长度为 3 。
第 1 列中,所有整数的字符串长度都是 1 。
第 2 列中,12 和 -2 的字符串长度都为 2 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<int> findColumnWidth(vector<vector<int>>& grid) { } };

javascript 解法, 执行用时: 68 ms, 内存消耗: 51.9 MB, 提交时间: 2024-04-27 00:10:48

/**
 * @param {number[][]} grid
 * @return {number[]}
 */
var findColumnWidth = function(grid) {
    const n = grid[0].length;
    const ans = Array(n);
    for (let j = 0; j < n; j++) {
        let mn = 0, mx = 0;
        for (const row of grid) {
            mn = Math.min(mn, row[j]);
            mx = Math.max(mx, row[j]);
        }
        let len = 1;
        for (let x = Math.max(Math.floor(mx / 10), -mn); x; x = Math.floor(x / 10)) {
            len++;
        }
        ans[j] = len;
    }
    return ans;
};

rust 解法, 执行用时: 0 ms, 内存消耗: 2.4 MB, 提交时间: 2024-04-27 00:10:28

impl Solution {
    pub fn find_column_width(grid: Vec<Vec<i32>>) -> Vec<i32> {
        let n = grid[0].len();
        let mut ans = vec![0; n];
        for j in 0..n {
            let mut mn = 0;
            let mut mx = 0;
            for row in &grid {
                mn = mn.min(row[j]);
                mx = mx.max(row[j]);
            }
            let mut len = 1;
            let mut x = (mx / 10).max(-mn);
            while x > 0 {
                len += 1;
                x /= 10;
            }
            ans[j] = len;
        }
        ans
    }
}

cpp 解法, 执行用时: 14 ms, 内存消耗: 12.6 MB, 提交时间: 2024-04-27 00:10:10

class Solution {
public:
    vector<int> findColumnWidth(vector<vector<int>>& grid) {
        int n = grid[0].size();
        vector<int> ans(n);
        for (int j = 0; j < n; j++) {
            int mn = 0, mx = 0;
            for (auto& row : grid) {
                mn = min(mn, row[j]);
                mx = max(mx, row[j]);
            }
            int len = 1;
            for (int x = max(mx / 10, -mn); x; x /= 10) {
                len++;
            }
            ans[j] = len;
        }
        return ans;
    }
};

java 解法, 执行用时: 3 ms, 内存消耗: 44.9 MB, 提交时间: 2024-04-27 00:09:46

class Solution {
    public int[] findColumnWidth(int[][] grid) {
        int n = grid[0].length;
        int[] ans = new int[n];
        for (int j = 0; j < n; j++) {
            int mn = 0;
            int mx = 0;
            for (int[] row : grid) {
                mn = Math.min(mn, row[j]);
                mx = Math.max(mx, row[j]);
            }
            int len = 1;
            for (int x = Math.max(mx / 10, -mn); x > 0; x /= 10) {
                len++;
            }
            ans[j] = len;
        }
        return ans;
    }
}

python3 解法, 执行用时: 41 ms, 内存消耗: 17.6 MB, 提交时间: 2024-04-27 00:09:36

class Solution:
    def findColumnWidth(self, grid: List[List[int]]) -> List[int]:
        ans = []
        for col in zip(*grid):
            x_len = 1
            x = max(max(col) // 10, -min(col))
            while x:
                x_len += 1
                x //= 10
            ans.append(x_len)
        return ans

golang 解法, 执行用时: 20 ms, 内存消耗: 6.4 MB, 提交时间: 2023-04-17 16:40:35

func findColumnWidth(grid [][]int) []int {
	ans := make([]int, len(grid[0]))
	for j := range grid[0] {
		for _, row := range grid {
			ans[j] = max(ans[j], len(strconv.Itoa(row[j])))
		}
	}
	return ans
}

func max(a, b int) int { if a < b { return b }; return a }

python3 解法, 执行用时: 48 ms, 内存消耗: 16.2 MB, 提交时间: 2023-04-17 16:40:19

class Solution:
    def findColumnWidth(self, grid: List[List[int]]) -> List[int]:
        return [max(len(str(x)) for x in col) for col in zip(*grid)]

上一题