File tree 7 files changed +96
-22
lines changed
1400-1499/1486.XOR Operation in an Array
1500-1599/1524.Number of Sub-arrays With Odd Sum
7 files changed +96
-22
lines changed Original file line number Diff line number Diff line change 54
54
55
55
<!-- 这里可写通用的实现逻辑 -->
56
56
57
+ ** 方法一:模拟**
58
+
59
+ 我们可以直接模拟算出数组中所有元素的异或结果。
60
+
61
+ 时间复杂度 $O(n)$,空间复杂度 $O(1)$。其中 $n$ 为数组长度。
62
+
57
63
<!-- tabs:start -->
58
64
59
65
### ** Python3**
63
69
``` python
64
70
class Solution :
65
71
def xorOperation (self , n : int , start : int ) -> int :
66
- res = 0
72
+ ans = 0
67
73
for i in range (n):
68
- res ^= start + (i << 1 )
69
- return res
74
+ ans ^= start + 2 * i
75
+ return ans
70
76
```
71
77
72
78
### ** Java**
@@ -76,15 +82,41 @@ class Solution:
76
82
``` java
77
83
class Solution {
78
84
public int xorOperation (int n , int start ) {
79
- int ret = start ;
80
- for (int i = 1 ; i < n; i ++ ) {
81
- ret = ret ^ ( start + (i << 1 )) ;
85
+ int ans = 0 ;
86
+ for (int i = 0 ; i < n; ++ i ) {
87
+ ans ^ = start + 2 * i ;
82
88
}
83
- return ret ;
89
+ return ans ;
84
90
}
85
91
}
86
92
```
87
93
94
+ ### ** C++**
95
+
96
+ ``` cpp
97
+ class Solution {
98
+ public:
99
+ int xorOperation(int n, int start) {
100
+ int ans = 0;
101
+ for (int i = 0; i < n; ++i) {
102
+ ans ^= start + 2 * i;
103
+ }
104
+ return ans;
105
+ }
106
+ };
107
+ ```
108
+
109
+ ### **Go**
110
+
111
+ ```go
112
+ func xorOperation(n int, start int) (ans int) {
113
+ for i := 0; i < n; i++ {
114
+ ans ^= start + 2*i
115
+ }
116
+ return
117
+ }
118
+ ```
119
+
88
120
### ** ...**
89
121
90
122
```
Original file line number Diff line number Diff line change @@ -46,26 +46,52 @@ Where "^" corresponds to bitwise XOR operator.
46
46
``` python
47
47
class Solution :
48
48
def xorOperation (self , n : int , start : int ) -> int :
49
- res = 0
49
+ ans = 0
50
50
for i in range (n):
51
- res ^= start + (i << 1 )
52
- return res
51
+ ans ^= start + 2 * i
52
+ return ans
53
53
```
54
54
55
55
### ** Java**
56
56
57
57
``` java
58
58
class Solution {
59
59
public int xorOperation (int n , int start ) {
60
- int ret = start ;
61
- for (int i = 1 ; i < n; i ++ ) {
62
- ret = ret ^ ( start + (i << 1 )) ;
60
+ int ans = 0 ;
61
+ for (int i = 0 ; i < n; ++ i ) {
62
+ ans ^ = start + 2 * i ;
63
63
}
64
- return ret ;
64
+ return ans ;
65
65
}
66
66
}
67
67
```
68
68
69
+ ### ** C++**
70
+
71
+ ``` cpp
72
+ class Solution {
73
+ public:
74
+ int xorOperation(int n, int start) {
75
+ int ans = 0;
76
+ for (int i = 0; i < n; ++i) {
77
+ ans ^= start + 2 * i;
78
+ }
79
+ return ans;
80
+ }
81
+ };
82
+ ```
83
+
84
+ ### **Go**
85
+
86
+ ```go
87
+ func xorOperation(n int, start int) (ans int) {
88
+ for i := 0; i < n; i++ {
89
+ ans ^= start + 2*i
90
+ }
91
+ return
92
+ }
93
+ ```
94
+
69
95
### ** ...**
70
96
71
97
```
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int xorOperation (int n, int start) {
4
+ int ans = 0 ;
5
+ for (int i = 0 ; i < n; ++i) {
6
+ ans ^= start + 2 * i;
7
+ }
8
+ return ans;
9
+ }
10
+ };
Original file line number Diff line number Diff line change
1
+ func xorOperation (n int , start int ) (ans int ) {
2
+ for i := 0 ; i < n ; i ++ {
3
+ ans ^= start + 2 * i
4
+ }
5
+ return
6
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int xorOperation (int n , int start ) {
3
- int ret = start ;
4
- for (int i = 1 ; i < n ; i ++ ) {
5
- ret = ret ^ ( start + ( i << 1 )) ;
3
+ int ans = 0 ;
4
+ for (int i = 0 ; i < n ; ++ i ) {
5
+ ans ^= start + 2 * i ;
6
6
}
7
- return ret ;
7
+ return ans ;
8
8
}
9
9
}
Original file line number Diff line number Diff line change 1
1
class Solution :
2
2
def xorOperation (self , n : int , start : int ) -> int :
3
- res = 0
3
+ ans = 0
4
4
for i in range (n ):
5
- res ^= start + ( i << 1 )
6
- return res
5
+ ans ^= start + 2 * i
6
+ return ans
Original file line number Diff line number Diff line change 63
63
64
64
** 方法一:前缀和 + 计数器**
65
65
66
- 我们定义一个长度为 $2$ 的数组 $cnt$ 作为计数器,其中 $cnt[ 0] $ 和 $cnt[ 1] $ 分别表示前缀和为偶数和奇数的子数组的个数。初始时, $cnt[ 0] = 1$,而 $cnt[ 1] = 0$。
66
+ 我们定义一个长度为 $2$ 的数组 $cnt$ 作为计数器,其中 $cnt[ 0] $ 和 $cnt[ 1] $ 分别表示前缀和为偶数和奇数的子数组的个数。初始时 $cnt[ 0] = 1$,而 $cnt[ 1] = 0$。
67
67
68
68
接下来,我们维护当前的前缀和 $s$,初始时 $s = 0$。
69
69
You can’t perform that action at this time.
0 commit comments