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

【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(Size(grid))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

1
2
3
4
5
6
7
8
9
10
11
# 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


2639.查询网格图中每一列的宽度
https://blog.letmefly.xyz/2024/04/27/LeetCode 2639.查询网格图中每一列的宽度/
作者
Tisfy
发布于
2024年4月27日
许可协议