在 IDE 上完美运行,但行(如果 mat[j] == mat[colindex]:) 在为极客提交极客时出现索引超出范围错误
Posted
技术标签:
【中文标题】在 IDE 上完美运行,但行(如果 mat[j] == mat[colindex]:) 在为极客提交极客时出现索引超出范围错误【英文标题】:Running perfectly on IDE but line (if mat[j] == mat[colindex]:) is giving index out of range error when submitting on geeks for geeks 【发布时间】:2020-08-18 05:39:41 【问题描述】:t = int(input())
lis =[]
for i in range(t):
col = list(map(int,input()))
colindex = col[0] - 1
count = 0
matsize = col[0] * col[0]
mat = list(map(int,input().split()))
while len(lis) != matsize:
for j in range(len(mat)):
if colindex < len(mat):
if mat[j] == mat[colindex]:
lis.append(mat[j])
colindex += col[0]
count += 1
colindex = col[0] - 1
colindex -= count
for i in lis:
print(i,end= ' ')
给定一个大小为 N x N 的方阵 mat[][]。任务是在不使用任何额外空间的情况下将其逆时针方向旋转 90 度。
输入: 输入的第一行包含一个整数 T,表示测试用例的数量。然后是 T 测试用例。每个测试用例由两行组成。每个测试用例的第一行包含一个整数 N,其中 N 是方阵的大小。每个测试用例的第二行包含矩阵 mat 的 N x N 个空格分隔值。
输出: 对应每个测试用例,换行打印旋转后的数组。
约束: 1≤T≤50 1≤N≤50 1
示例: 输入:
2
3
1 2 3 4 5 6 7 8 9
2
5 7 10 9
输出:
3 6 9 2 5 8 1 4 7
7 9 5 10
说明: 测试用例1:矩阵如下:
1 2 3
4 5 6
7 8 9
逆时针旋转 90 度会得到如下矩阵:
3 6 9
2 5 8
1 4 7
https://practice.geeksforgeeks.org/problems/rotate-by-90-degree/0
【问题讨论】:
向我们展示完整的错误输出! 【参考方案1】:j
似乎没有问题。 colindex
可以低于 0 吗?识别这一点的一种方法是简单地跟踪计数器。例如,您可以在 if mat[j] == mat[colindex]
之前添加额外的 if 条件 if colindex >= 0:
。
【讨论】:
【参考方案2】:我们可以使用二维列表来解决这个挑战,而不是使用一维列表。从给定的语句和示例测试用例中,我们得到以下信息:
将旋转后的矩阵打印在一行中。 如果给定矩阵具有n
列,则旋转矩阵将具有n-1
th 列、n-2
th 列、..0
th 列的顺序元素。
这是我接受的这个挑战的解决方案:
def get_rotated_matrix(ar, n):
ar_2d = []
for i in range(0, len(ar)-n+1, n):
ar_2d.append(ar[i:i+n])
result = []
for i in range(n-1, -1, -1):
for j in range(n):
result.append(str(ar_2d[j][i]))
return result
cas = int(input())
for t in range(cas):
n = int(input())
ar = list(map(int, input().split()))
result = get_rotated_matrix(ar, n)
print(" ".join(result))
说明:
为了简化解决方案,我创建了一个二维列表,将输入数据存储为一个名为ar_2d
的二维矩阵。
然后我逐列遍历矩阵;从最后一列到第一列,并将值作为字符串值附加到我们的result
列表中。
最后,我使用join
方法打印了元素之间带有空格的结果。
免责声明:
我的解决方案使用一维列表来存储旋转的矩阵元素,因此会占用额外的空间。
【讨论】:
以上是关于在 IDE 上完美运行,但行(如果 mat[j] == mat[colindex]:) 在为极客提交极客时出现索引超出范围错误的主要内容,如果未能解决你的问题,请参考以下文章