LeetCode2614
LeetCode.2614:对角线上的质数
今天做的2711和对角线相关,所以今天就把之前做的一道同是对角线相关的题目抬上来(才不是因为简单难度好写)。
题目描述
给你一个下标从 0 开始的二维整数数组 nums
。
返回位于 nums
至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数,返回 0 。
注意:
- 如果某个整数大于
1
,且不存在除1
和自身之外的正整数因子,则认为该整数是一个质数。 - 如果存在整数
i
,使得nums[i][i] = val
或者nums[i][nums.length - i - 1]= val
,则认为整数val
位于nums
的一条对角线上。
在上图中,一条对角线是 [1,5,9] ,而另一条对角线是 [3,5,7] 。
示例
示例1:
1 | 输入:nums = [[1,2,3],[5,6,7],[9,10,11]] |
示例2:
1 | 输入:nums = [[1,2,3],[5,17,7],[9,11,10]] |
提示:
1 | 1 <= nums.length <= 300 |
题解
这道题的题解重点在于两点,第一点是对角线的判断,第二点是质数的判断。对角线很简单,遍历时i=j
即为主对角线元素,i=i,j=n-i-1
为副对角线元素,但这道题只需要对角线,那么就可以直接去找nums[i][i]
和nums[i][n-i-1]
即为每一行的对角线元素。质数的判断在初学C语言的时候基本都学过,把这个数从2开始,一直除到这个数字的开方为止,即为最快的求质数方法。
代码
1 | class Solution { |