mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-06 01:15:57 +08:00
42 lines
1.4 KiB
Markdown
Executable File
42 lines
1.4 KiB
Markdown
Executable File
# [996. Number of Squareful Arrays](https://leetcode.com/problems/number-of-squareful-arrays/)
|
||
|
||
|
||
|
||
## 题目
|
||
|
||
Given an array `A` of non-negative integers, the array is *squareful* if for every pair of adjacent elements, their sum is a perfect square.
|
||
|
||
Return the number of permutations of A that are squareful. Two permutations `A1` and `A2` differ if and only if there is some index `i` such that `A1[i] != A2[i]`.
|
||
|
||
**Example 1:**
|
||
|
||
Input: [1,17,8]
|
||
Output: 2
|
||
Explanation:
|
||
[1,8,17] and [17,8,1] are the valid permutations.
|
||
|
||
**Example 2:**
|
||
|
||
Input: [2,2,2]
|
||
Output: 1
|
||
|
||
**Note:**
|
||
|
||
1. `1 <= A.length <= 12`
|
||
2. `0 <= A[i] <= 1e9`
|
||
|
||
|
||
## 题目大意
|
||
|
||
给定一个非负整数数组 A,如果该数组每对相邻元素之和是一个完全平方数,则称这一数组为正方形数组。
|
||
|
||
返回 A 的正方形排列的数目。两个排列 A1 和 A2 不同的充要条件是存在某个索引 i,使得 A1[i] != A2[i]。
|
||
|
||
|
||
|
||
## 解题思路
|
||
|
||
|
||
- 这一题是第 47 题的加强版。第 47 题要求求出一个数组的所有不重复的排列。这一题要求求出一个数组的所有不重复,且相邻两个数字之和都为完全平方数的排列。
|
||
- 思路和第 47 题完全一致,只不过增加判断相邻两个数字之和为完全平方数的判断,注意在 DFS 的过程中,需要剪枝,否则时间复杂度很高,会超时。
|