Add solution 1486

This commit is contained in:
YDZ
2021-05-07 21:21:21 +08:00
parent 2a115eccc3
commit 5f6ea09570
26 changed files with 990 additions and 774 deletions

View File

@ -0,0 +1,9 @@
package leetcode
func xorOperation(n int, start int) int {
res := 0
for i := 0; i < n; i++ {
res ^= start + 2*i
}
return res
}

View File

@ -0,0 +1,58 @@
package leetcode
import (
"fmt"
"testing"
)
type question1486 struct {
para1486
ans1486
}
// para 是参数
// one 代表第一个参数
type para1486 struct {
n int
start int
}
// ans 是答案
// one 代表第一个答案
type ans1486 struct {
one int
}
func Test_Problem1486(t *testing.T) {
qs := []question1486{
{
para1486{5, 0},
ans1486{8},
},
{
para1486{4, 3},
ans1486{8},
},
{
para1486{1, 7},
ans1486{7},
},
{
para1486{10, 5},
ans1486{2},
},
}
fmt.Printf("------------------------Leetcode Problem 1486------------------------\n")
for _, q := range qs {
_, p := q.ans1486, q.para1486
fmt.Printf("【input】:%v 【output】:%v \n", p, xorOperation(p.n, p.start))
}
fmt.Printf("\n\n\n")
}

View File

@ -0,0 +1,69 @@
# [1486. XOR Operation in an Array](https://leetcode.com/problems/xor-operation-in-an-array/)
## 题目
Given an integer `n` and an integer `start`.
Define an array `nums` where `nums[i] = start + 2*i` (0-indexed) and `n == nums.length`.
Return the bitwise XOR of all elements of `nums`.
**Example 1:**
```
Input: n = 5, start = 0
Output: 8
Explanation:Array nums is equal to [0, 2, 4, 6, 8] where (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8.
Where "^" corresponds to bitwise XOR operator.
```
**Example 2:**
```
Input: n = 4, start = 3
Output: 8
Explanation:Array nums is equal to [3, 5, 7, 9] where (3 ^ 5 ^ 7 ^ 9) = 8.
```
**Example 3:**
```
Input: n = 1, start = 7
Output: 7
```
**Example 4:**
```
Input: n = 10, start = 5
Output: 2
```
**Constraints:**
- `1 <= n <= 1000`
- `0 <= start <= 1000`
- `n == nums.length`
## 题目大意
给你两个整数n 和 start 。数组 nums 定义为nums[i] = start + 2*i下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或XOR后得到的结果。
## 解题思路
- 简单题。按照题意,一层循环依次累积异或数组中每个元素。
## 代码
```go
package leetcode
func xorOperation(n int, start int) int {
res := 0
for i := 0; i < n; i++ {
res ^= start + 2*i
}
return res
}
```