Skip to content

Commit c1f4212

Browse files
committed
Merge pull request halfrost#71 from harryleonardo/master
Add problem 1480 & 1512
2 parents 5830c8d + 44f8b5b commit c1f4212

File tree

9 files changed

+391
-0
lines changed

9 files changed

+391
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package leetcode
2+
3+
func runningSum(nums []int) []int {
4+
dp := make([]int, len(nums)+1)
5+
dp[0] = 0
6+
for i := 1; i <= len(nums); i++ {
7+
dp[i] = dp[i-1] + nums[i-1]
8+
}
9+
return dp[1:]
10+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package leetcode
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
)
7+
8+
type question1480 struct {
9+
para1480
10+
ans1480
11+
}
12+
13+
// para 是参数
14+
// one 代表第一个参数
15+
type para1480 struct {
16+
nums []int
17+
}
18+
19+
// ans 是答案
20+
// one 代表第一个答案
21+
type ans1480 struct {
22+
one []int
23+
}
24+
25+
func Test_Problem1480(t *testing.T) {
26+
27+
qs := []question1480{
28+
29+
{
30+
para1480{[]int{1, 2, 3, 4}},
31+
ans1480{[]int{1, 3, 6, 10}},
32+
},
33+
34+
{
35+
para1480{[]int{1, 1, 1, 1, 1}},
36+
ans1480{[]int{1, 2, 3, 4, 5}},
37+
},
38+
39+
{
40+
para1480{[]int{3, 1, 2, 10, 1}},
41+
ans1480{[]int{3, 4, 6, 16, 17}},
42+
},
43+
}
44+
45+
fmt.Printf("------------------------Leetcode Problem 1480------------------------\n")
46+
47+
for _, q := range qs {
48+
_, p := q.ans1480, q.para1480
49+
fmt.Printf("【input】:%v 【output】:%v \n", p, runningSum(p.nums))
50+
}
51+
fmt.Printf("\n\n\n")
52+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# [1480. Running Sum of 1d Array](https://leetcode.com/problems/running-sum-of-1d-array/)
2+
3+
## 题目
4+
5+
Given an array `nums`. We define a running sum of an array as `runningSum[i] = sum(nums[0]…nums[i])`.
6+
7+
Return the running sum of `nums`.
8+
9+
**Example 1**:
10+
11+
```
12+
Input: nums = [1,2,3,4]
13+
Output: [1,3,6,10]
14+
Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
15+
16+
```
17+
18+
**Example 2**:
19+
20+
```
21+
Input: nums = [1,1,1,1,1]
22+
Output: [1,2,3,4,5]
23+
Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].
24+
25+
```
26+
27+
**Example 3**:
28+
29+
```
30+
Input: nums = [3,1,2,10,1]
31+
Output: [3,4,6,16,17]
32+
33+
```
34+
35+
36+
**Constraints**:
37+
38+
- `1 <= nums.length <= 1000`
39+
- `-10^6 <= nums[i] <= 10^6`
40+
41+
## 题目大意
42+
43+
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。
44+
45+
46+
## 解题思路
47+
48+
- 简单题,按照题意依次循环计算前缀和即可。
49+
50+
## 代码
51+
52+
```go
53+
package leetcode
54+
55+
func runningSum(nums []int) []int {
56+
dp := make([]int, len(nums)+1)
57+
dp[0] = 0
58+
for i := 1; i <= len(nums); i++ {
59+
dp[i] = dp[i-1] + nums[i-1]
60+
}
61+
return dp[1:]
62+
}
63+
64+
```
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package leetcode
2+
3+
func numIdenticalPairs(nums []int) int {
4+
total := 0
5+
for x := 0; x < len(nums); x++ {
6+
for y := x + 1; y < len(nums); y++ {
7+
if nums[x] == nums[y] {
8+
total++
9+
}
10+
}
11+
}
12+
return total
13+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package leetcode
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
)
7+
8+
type question1512 struct {
9+
para1512
10+
ans1512
11+
}
12+
13+
// para 是参数
14+
// one 代表第一个参数
15+
type para1512 struct {
16+
nums []int
17+
}
18+
19+
// ans 是答案
20+
// one 代表第一个答案
21+
type ans1512 struct {
22+
one int
23+
}
24+
25+
func Test_Problem1512(t *testing.T) {
26+
27+
qs := []question1512{
28+
29+
{
30+
para1512{[]int{1, 2, 3, 1, 1, 3}},
31+
ans1512{4},
32+
},
33+
34+
{
35+
para1512{[]int{1, 1, 1, 1}},
36+
ans1512{6},
37+
},
38+
39+
{
40+
para1512{[]int{1, 2, 3}},
41+
ans1512{0},
42+
},
43+
}
44+
45+
fmt.Printf("------------------------Leetcode Problem 1512------------------------\n")
46+
47+
for _, q := range qs {
48+
_, p := q.ans1512, q.para1512
49+
fmt.Printf("【input】:%v 【output】:%v \n", p, numIdenticalPairs(p.nums))
50+
}
51+
fmt.Printf("\n\n\n")
52+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# [1512. Number of Good Pairs](https://leetcode.com/problems/number-of-good-pairs/)
2+
3+
## 题目
4+
5+
Given an array of integers `nums`.
6+
7+
A pair `(i,j)` is called good if `nums[i] == nums[j]` and `i < j`.
8+
9+
Return the number of good pairs.
10+
11+
**Example 1**:
12+
13+
```
14+
Input: nums = [1,2,3,1,1,3]
15+
Output: 4
16+
Explanation: There are 4 good pairs (0,3), (0,4), (3,4), (2,5) 0-indexed.
17+
18+
```
19+
20+
**Example 2**:
21+
22+
```
23+
Input: nums = [1,1,1,1]
24+
Output: 6
25+
Explanation: Each pair in the array are good.
26+
27+
```
28+
29+
**Example 3**:
30+
31+
```
32+
Input: nums = [1,2,3]
33+
Output: 0
34+
35+
```
36+
37+
**Constraints**:
38+
39+
- `1 <= nums.length <= 1000`
40+
- `1 <= nums[i] <= 100`
41+
42+
## 题目大意
43+
44+
给你一个整数数组 nums。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组好数对。返回好数对的数目。
45+
46+
## 解题思路
47+
48+
- 简单题,按照题目中好数对的定义,循环遍历判断两数是否相等,累加计数即可。
49+
50+
## 代码
51+
52+
```go
53+
package leetcode
54+
55+
func numIdenticalPairs(nums []int) int {
56+
total := 0
57+
for x := 0; x < len(nums); x++ {
58+
for y := x + 1; y < len(nums); y++ {
59+
if nums[x] == nums[y] {
60+
total++
61+
}
62+
}
63+
}
64+
return total
65+
}
66+
67+
```
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# [1480. Running Sum of 1d Array](https://leetcode.com/problems/running-sum-of-1d-array/)
2+
3+
## 题目
4+
5+
Given an array `nums`. We define a running sum of an array as `runningSum[i] = sum(nums[0]…nums[i])`.
6+
7+
Return the running sum of `nums`.
8+
9+
**Example 1**:
10+
11+
```
12+
Input: nums = [1,2,3,4]
13+
Output: [1,3,6,10]
14+
Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
15+
16+
```
17+
18+
**Example 2**:
19+
20+
```
21+
Input: nums = [1,1,1,1,1]
22+
Output: [1,2,3,4,5]
23+
Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].
24+
25+
```
26+
27+
**Example 3**:
28+
29+
```
30+
Input: nums = [3,1,2,10,1]
31+
Output: [3,4,6,16,17]
32+
33+
```
34+
35+
36+
**Constraints**:
37+
38+
- `1 <= nums.length <= 1000`
39+
- `-10^6 <= nums[i] <= 10^6`
40+
41+
## 题目大意
42+
43+
给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。
44+
45+
46+
## 解题思路
47+
48+
- 简单题,按照题意依次循环计算前缀和即可。
49+
50+
## 代码
51+
52+
```go
53+
package leetcode
54+
55+
func runningSum(nums []int) []int {
56+
dp := make([]int, len(nums)+1)
57+
dp[0] = 0
58+
for i := 1; i <= len(nums); i++ {
59+
dp[i] = dp[i-1] + nums[i-1]
60+
}
61+
return dp[1:]
62+
}
63+
64+
```

0 commit comments

Comments
 (0)