Skip to content

Commit a3eda81

Browse files
authored
feat: add solutions to lc problems: No.2778~2781 (#1225)
* No.2778.Sum of Squares of Special Elements * No.2779.Maximum Beauty of an Array After Applying Operation * No.2780.Minimum Index of a Valid Split * No.2781.Length of the Longest Valid Substring
1 parent 5c97dac commit a3eda81

34 files changed

+1707
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
# [2778. 特殊元素平方和](https://leetcode.cn/problems/sum-of-squares-of-special-elements)
2+
3+
[English Version](/solution/2700-2799/2778.Sum%20of%20Squares%20of%20Special%20Elements/README_EN.md)
4+
5+
## 题目描述
6+
7+
<!-- 这里写题目描述 -->
8+
9+
<p>给你一个下标从 <strong>1</strong> 开始、长度为 <code>n</code> 的整数数组 <code>nums</code> 。</p>
10+
11+
<p>对 <code>nums</code> 中的元素 <code>nums[i]</code> 而言,如果 <code>n</code> 能够被 <code>i</code> 整除,即 <code>n % i == 0</code> ,则认为 <code>num[i]</code> 是一个 <strong>特殊元素</strong> 。</p>
12+
13+
<p>返回 <code>nums</code> 中所有 <strong>特殊元素</strong> 的 <strong>平方和</strong> 。</p>
14+
15+
<p>&nbsp;</p>
16+
17+
<p><strong>示例 1:</strong></p>
18+
19+
<pre><strong>输入:</strong>nums = [1,2,3,4]
20+
<strong>输出:</strong>21
21+
<strong>解释:</strong>nums 中共有 3 个特殊元素:nums[1] ,因为 4 被 1 整除;nums[2] ,因为 4 被 2 整除;以及 nums[4] ,因为 4 被 4 整除。
22+
因此,nums 中所有元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[4] * nums[4] = 1 * 1 + 2 * 2 + 4 * 4 = 21 。
23+
</pre>
24+
25+
<p><strong>示例 2:</strong></p>
26+
27+
<pre><strong>输入:</strong>nums = [2,7,1,19,18,3]
28+
<strong>输出:</strong>63
29+
<strong>解释:</strong>nums 中共有 4 个特殊元素:nums[1] ,因为 6 被 1 整除;nums[2] ,因为 6 被 2 整除;nums[3] ,因为 6 被 3 整除;以及 nums[6] ,因为 6 被 6 整除。
30+
因此,nums 中所有元素的平方和等于 nums[1] * nums[1] + nums[2] * nums[2] + nums[3] * nums[3] + nums[6] * nums[6] = 2 * 2 + 7 * 7 + 1 * 1 + 3 * 3 = 63 。 </pre>
31+
32+
<p>&nbsp;</p>
33+
34+
<p><strong>提示:</strong></p>
35+
36+
<ul>
37+
<li><code>1 &lt;= nums.length == n &lt;= 50</code></li>
38+
<li><code>1 &lt;= nums[i] &lt;= 50</code></li>
39+
</ul>
40+
41+
## 解法
42+
43+
<!-- 这里可写通用的实现逻辑 -->
44+
45+
**方法一:枚举**
46+
47+
我们可以枚举数组中的每个元素,判断其是否为特殊元素,如果是则将其平方加入答案中。
48+
49+
时间复杂度 $O(n)$,其中 $n$ 是数组的长度。空间复杂度 $O(1)$。
50+
51+
<!-- tabs:start -->
52+
53+
### **Python3**
54+
55+
<!-- 这里可写当前语言的特殊实现逻辑 -->
56+
57+
```python
58+
class Solution:
59+
def sumOfSquares(self, nums: List[int]) -> int:
60+
n = len(nums)
61+
return sum(x * x for i, x in enumerate(nums, 1) if n % i == 0)
62+
```
63+
64+
### **Java**
65+
66+
<!-- 这里可写当前语言的特殊实现逻辑 -->
67+
68+
```java
69+
class Solution {
70+
public int sumOfSquares(int[] nums) {
71+
int n = nums.length;
72+
int ans = 0;
73+
for (int i = 1; i <= n; ++i) {
74+
if (n % i == 0) {
75+
ans += nums[i - 1] * nums[i - 1];
76+
}
77+
}
78+
return ans;
79+
}
80+
}
81+
```
82+
83+
### **C++**
84+
85+
```cpp
86+
class Solution {
87+
public:
88+
int sumOfSquares(vector<int>& nums) {
89+
int n = nums.size();
90+
int ans = 0;
91+
for (int i = 1; i <= n; ++i) {
92+
if (n % i == 0) {
93+
ans += nums[i - 1] * nums[i - 1];
94+
}
95+
}
96+
return ans;
97+
}
98+
};
99+
```
100+
101+
### **Go**
102+
103+
```go
104+
func sumOfSquares(nums []int) (ans int) {
105+
n := len(nums)
106+
for i, x := range nums {
107+
if n%(i+1) == 0 {
108+
ans += x * x
109+
}
110+
}
111+
return
112+
}
113+
```
114+
115+
### **TypeScript**
116+
117+
```ts
118+
function sumOfSquares(nums: number[]): number {
119+
const n = nums.length;
120+
let ans = 0;
121+
for (let i = 0; i < n; ++i) {
122+
if (n % (i + 1) === 0) {
123+
ans += nums[i] * nums[i];
124+
}
125+
}
126+
return ans;
127+
}
128+
```
129+
130+
### **...**
131+
132+
```
133+
134+
```
135+
136+
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# [2778. Sum of Squares of Special Elements](https://leetcode.com/problems/sum-of-squares-of-special-elements)
2+
3+
[中文文档](/solution/2700-2799/2778.Sum%20of%20Squares%20of%20Special%20Elements/README.md)
4+
5+
## Description
6+
7+
<p>You are given a <strong>1-indexed</strong> integer array <code>nums</code> of length <code>n</code>.</p>
8+
9+
<p>An element <code>nums[i]</code> of <code>nums</code> is called <strong>special</strong> if <code>i</code> divides <code>n</code>, i.e. <code>n % i == 0</code>.</p>
10+
11+
<p>Return <em>the <strong>sum of the squares</strong> of all <strong>special</strong> elements of </em><code>nums</code>.</p>
12+
13+
<p>&nbsp;</p>
14+
<p><strong class="example">Example 1:</strong></p>
15+
16+
<pre>
17+
<strong>Input:</strong> nums = [1,2,3,4]
18+
<strong>Output:</strong> 21
19+
<strong>Explanation:</strong> There are exactly 3 special elements in nums: nums[1] since 1 divides 4, nums[2] since 2 divides 4, and nums[4] since 4 divides 4.
20+
Hence, the sum of the squares of all special elements of nums is nums[1] * nums[1] + nums[2] * nums[2] + nums[4] * nums[4] = 1 * 1 + 2 * 2 + 4 * 4 = 21.
21+
</pre>
22+
23+
<p><strong class="example">Example 2:</strong></p>
24+
25+
<pre>
26+
<strong>Input:</strong> nums = [2,7,1,19,18,3]
27+
<strong>Output:</strong> 63
28+
<strong>Explanation:</strong> There are exactly 4 special elements in nums: nums[1] since 1 divides 6, nums[2] since 2 divides 6, nums[3] since 3 divides 6, and nums[6] since 6 divides 6.
29+
Hence, the sum of the squares of all special elements of nums is nums[1] * nums[1] + nums[2] * nums[2] + nums[3] * nums[3] + nums[6] * nums[6] = 2 * 2 + 7 * 7 + 1 * 1 + 3 * 3 = 63.
30+
</pre>
31+
32+
<p>&nbsp;</p>
33+
<p><strong>Constraints:</strong></p>
34+
35+
<ul>
36+
<li><code>1 &lt;= nums.length == n &lt;= 50</code></li>
37+
<li><code>1 &lt;= nums[i] &lt;= 50</code></li>
38+
</ul>
39+
40+
## Solutions
41+
42+
<!-- tabs:start -->
43+
44+
### **Python3**
45+
46+
```python
47+
class Solution:
48+
def sumOfSquares(self, nums: List[int]) -> int:
49+
n = len(nums)
50+
return sum(x * x for i, x in enumerate(nums, 1) if n % i == 0)
51+
```
52+
53+
### **Java**
54+
55+
```java
56+
class Solution {
57+
public int sumOfSquares(int[] nums) {
58+
int n = nums.length;
59+
int ans = 0;
60+
for (int i = 1; i <= n; ++i) {
61+
if (n % i == 0) {
62+
ans += nums[i - 1] * nums[i - 1];
63+
}
64+
}
65+
return ans;
66+
}
67+
}
68+
```
69+
70+
### **C++**
71+
72+
```cpp
73+
class Solution {
74+
public:
75+
int sumOfSquares(vector<int>& nums) {
76+
int n = nums.size();
77+
int ans = 0;
78+
for (int i = 1; i <= n; ++i) {
79+
if (n % i == 0) {
80+
ans += nums[i - 1] * nums[i - 1];
81+
}
82+
}
83+
return ans;
84+
}
85+
};
86+
```
87+
88+
### **Go**
89+
90+
```go
91+
func sumOfSquares(nums []int) (ans int) {
92+
n := len(nums)
93+
for i, x := range nums {
94+
if n%(i+1) == 0 {
95+
ans += x * x
96+
}
97+
}
98+
return
99+
}
100+
```
101+
102+
### **TypeScript**
103+
104+
```ts
105+
function sumOfSquares(nums: number[]): number {
106+
const n = nums.length;
107+
let ans = 0;
108+
for (let i = 0; i < n; ++i) {
109+
if (n % (i + 1) === 0) {
110+
ans += nums[i] * nums[i];
111+
}
112+
}
113+
return ans;
114+
}
115+
```
116+
117+
### **...**
118+
119+
```
120+
121+
```
122+
123+
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
int sumOfSquares(vector<int>& nums) {
4+
int n = nums.size();
5+
int ans = 0;
6+
for (int i = 1; i <= n; ++i) {
7+
if (n % i == 0) {
8+
ans += nums[i - 1] * nums[i - 1];
9+
}
10+
}
11+
return ans;
12+
}
13+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
func sumOfSquares(nums []int) (ans int) {
2+
n := len(nums)
3+
for i, x := range nums {
4+
if n%(i+1) == 0 {
5+
ans += x * x
6+
}
7+
}
8+
return
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution {
2+
public int sumOfSquares(int[] nums) {
3+
int n = nums.length;
4+
int ans = 0;
5+
for (int i = 1; i <= n; ++i) {
6+
if (n % i == 0) {
7+
ans += nums[i - 1] * nums[i - 1];
8+
}
9+
}
10+
return ans;
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Solution:
2+
def sumOfSquares(self, nums: List[int]) -> int:
3+
n = len(nums)
4+
return sum(x * x for i, x in enumerate(nums, 1) if n % i == 0)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function sumOfSquares(nums: number[]): number {
2+
const n = nums.length;
3+
let ans = 0;
4+
for (let i = 0; i < n; ++i) {
5+
if (n % (i + 1) === 0) {
6+
ans += nums[i] * nums[i];
7+
}
8+
}
9+
return ans;
10+
}

0 commit comments

Comments
 (0)