changgyhub / leetcode_101

LeetCode 101:力扣刷题指南
8.57k stars 1.16k forks source link

P34 N皇后问题 #28

Closed hitYunhongXu closed 3 years ago

hitYunhongXu commented 3 years ago

您好,我有一点疑问想请教一下。 在N皇后问题的题解中,您表示有对角线的方法为rdiag[row+i+1], row范围为[0,n-1] i范围为[0,n-1]。 但是rdiag初始化为2*n-1大小的vector。假设n=3,那么row+i+1最大可能为5,而rdiag大小为5,最大下标只有4。 所以是否存在数组下标越界的可能呢?(但是我复制您的代码到leetcode却也能AC) 按我的理解应该是rdiag[row+i]。

changgyhub commented 3 years ago

我的理解是没问题,因为2 n - 1 != 2 (n - 1) = 2 * n - 2。在你的例子中,rdiag的大小和最大下标应该都是5。

hitYunhongXu commented 3 years ago

您好,是这样的,我给的例子中rdiag的大小是5,但是 可取 的最大下标应该是4吧,因为是从0开始计数的?而row+i+1(即索引)有可能为5。

changgyhub commented 3 years ago

确实应该是row+i而非row+i+1,已更正。感谢纠错!