LeetCode 2639.查询网格图中每一列的宽度:模拟(遍历)

发布于:2024-04-27 ⋅ 阅读:(23) ⋅ 点赞:(0)

【LetMeFly】2639.查询网格图中每一列的宽度:模拟(遍历)

力扣题目链接:https://leetcode.cn/problems/find-the-width-of-columns-of-a-grid/

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

  • 比方说,如果 grid = [[-10], [3], [12]] ,那么唯一一列的宽度是 3 ,因为 -10 的字符串长度为 3 。

请你返回一个大小为 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 。

 

提示:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 100
  • -109 <= grid[r][c] <= 109

解题方法:遍历(模拟)

两层循环,外层循环遍历数组的每一列:

内层循环中,对于这一列,遍历这一列的每一行,使用一个变量记录这一列每个数的最大宽度。

如何求数字的“宽度”?(可使用内置函数)将数字转为字符串,字符串的长度即为数字的宽度。

  • 时间复杂度 O ( S i z e ( g r i d ) ) O(Size(grid)) O(Size(grid))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
class Solution {
public:
    vector<int> findColumnWidth(vector<vector<int>>& grid) {
        vector<int> ans(grid[0].size());
        for (int j = 0; j < grid[0].size(); j++) {
            int thisAns = 1;
            for (int i = 0; i < grid.size(); i++) {
                thisAns = max(thisAns, (int)to_string(grid[i][j]).size());
            }
            ans[j] = thisAns;
        }
        return ans;
    }
};
Python
# from typing import List

class Solution:
    def findColumnWidth(self, grid: List[List[int]]) -> List[int]:
        ans = [1] * len(grid[0])
        for j in range(len(grid[0])):
            thisAns = 1
            for i in range(len(grid)):
                thisAns = max(thisAns, len(str(grid[i][j])))
            ans[j] = thisAns
        return ans

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/138244991