comments | difficulty | edit_url | rating | source | tags | ||
---|---|---|---|---|---|---|---|
true |
Easy |
1282 |
Biweekly Contest 102 Q1 |
|
You are given a 0-indexed m x n
integer matrix grid
. The width of a column is the maximum length of its integers.
- For example, if
grid = [[-10], [3], [12]]
, the width of the only column is3
since-10
is of length3
.
Return an integer array ans
of size n
where ans[i]
is the width of the ith
column.
The length of an integer x
with len
digits is equal to len
if x
is non-negative, and len + 1
otherwise.
Example 1:
Input: grid = [[1],[22],[333]] Output: [3] Explanation: In the 0th column, 333 is of length 3.
Example 2:
Input: grid = [[-15,1,3],[15,7,12],[5,6,-2]] Output: [3,1,2] Explanation: In the 0th column, only -15 is of length 3. In the 1st column, all integers are of length 1. In the 2nd column, both 12 and -2 are of length 2.
Constraints:
m == grid.length
n == grid[i].length
1 <= m, n <= 100
-109 <= grid[r][c] <= 109
We denote the number of columns in the matrix as
We traverse each row in the matrix. For each element in each row, we calculate its string length
After traversing all rows, each element in the array
The time complexity is
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)]
class Solution {
public int[] findColumnWidth(int[][] grid) {
int n = grid[0].length;
int[] ans = new int[n];
for (var row : grid) {
for (int j = 0; j < n; ++j) {
int w = String.valueOf(row[j]).length();
ans[j] = Math.max(ans[j], w);
}
}
return ans;
}
}
class Solution {
public:
vector<int> findColumnWidth(vector<vector<int>>& grid) {
int n = grid[0].size();
vector<int> ans(n);
for (auto& row : grid) {
for (int j = 0; j < n; ++j) {
int w = to_string(row[j]).size();
ans[j] = max(ans[j], w);
}
}
return ans;
}
};
func findColumnWidth(grid [][]int) []int {
ans := make([]int, len(grid[0]))
for _, row := range grid {
for j, x := range row {
w := len(strconv.Itoa(x))
ans[j] = max(ans[j], w)
}
}
return ans
}
function findColumnWidth(grid: number[][]): number[] {
const n = grid[0].length;
const ans: number[] = new Array(n).fill(0);
for (const row of grid) {
for (let j = 0; j < n; ++j) {
const w: number = String(row[j]).length;
ans[j] = Math.max(ans[j], w);
}
}
return ans;
}
impl Solution {
pub fn find_column_width(grid: Vec<Vec<i32>>) -> Vec<i32> {
let mut ans = vec![0; grid[0].len()];
for row in grid.iter() {
for (j, num) in row.iter().enumerate() {
let width = num.to_string().len() as i32;
ans[j] = std::cmp::max(ans[j], width);
}
}
ans
}
}