针对 LeetCode 2022,给你几种 Python3 的实现方式,可按个人喜好选用:

方法一:逐行切片(推荐,最 Pythonic)

```python
class Solution:
    def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
        if len(original) != m * n:
            return []
        return [original[i * n : (i + 1) * n] for i in range(m)]
```

方法二:索引计算

```python
class Solution:
    def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
        if len(original) != m * n:
            return []
        res = [[0] * n for _ in range(m)]
        for idx, val in enumerate(original):
            res[idx // n][idx % n] = val
        return res
```

方法三:迭代器(进阶版)

```python
from typing import List

class Solution:
    def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
        if len(original) != m * n:
            return []
        it = iter(original)
        return [[next(it) for _ in range(n)] for _ in range(m)]
```

复杂度

· 时间复杂度:O(m * n)
· 空间复杂度:O(1)(不算返回结果)

三种方法都可以直接通过。

 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐