Skip to content

Commit caccf24

Browse files
authored
feat: add weekly contest 439 and biweekly contest 151 (#4121)
1 parent 7bdd8c2 commit caccf24

File tree

26 files changed

+2560
-0
lines changed

26 files changed

+2560
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
---
2+
comments: true
3+
difficulty: 简单
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3400-3499/3467.Transform%20Array%20by%20Parity/README.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3467. 将数组按照奇偶性转化](https://leetcode.cn/problems/transform-array-by-parity)
10+
11+
[English Version](/solution/3400-3499/3467.Transform%20Array%20by%20Parity/README_EN.md)
12+
13+
## 题目描述
14+
15+
<!-- description:start -->
16+
17+
<p>给你一个整数数组 <code>nums</code>。请你按照以下顺序 <strong>依次</strong>&nbsp;执行操作,转换 <code>nums</code>:</p>
18+
19+
<ol>
20+
<li>将每个偶数替换为 0。</li>
21+
<li>将每个奇数替换为 1。</li>
22+
<li>按&nbsp;<strong>非递减&nbsp;</strong>顺序排序修改后的数组。</li>
23+
</ol>
24+
25+
<p>执行完这些操作后,返回结果数组。</p>
26+
27+
<p>&nbsp;</p>
28+
29+
<p><strong class="example">示例 1:</strong></p>
30+
31+
<div class="example-block">
32+
<p><strong>输入:</strong><span class="example-io">nums = [4,3,2,1]</span></p>
33+
34+
<p><strong>输出:</strong><span class="example-io">[0,0,1,1]</span></p>
35+
36+
<p><strong>解释:</strong></p>
37+
38+
<ul>
39+
<li>将偶数(4 和 2)替换为 0,将奇数(3 和 1)替换为 1。现在,<code>nums = [0, 1, 0, 1]</code>。</li>
40+
<li>按非递减顺序排序 <code>nums</code>,得到 <code>nums = [0, 0, 1, 1]</code>。</li>
41+
</ul>
42+
</div>
43+
44+
<p><strong class="example">示例 2:</strong></p>
45+
46+
<div class="example-block">
47+
<p><strong>输入:</strong><span class="example-io">nums = [1,5,1,4,2]</span></p>
48+
49+
<p><strong>输出:</strong><span class="example-io">[0,0,1,1,1]</span></p>
50+
51+
<p><strong>解释:</strong></p>
52+
53+
<ul>
54+
<li>将偶数(4 和 2)替换为 0,将奇数(1, 5 和 1)替换为 1。现在,<code>nums = [1, 1, 1, 0, 0]</code>。</li>
55+
<li>按非递减顺序排序&nbsp;<code>nums</code>,得到 <code>nums = [0, 0, 1, 1, 1]</code>。</li>
56+
</ul>
57+
</div>
58+
59+
<p>&nbsp;</p>
60+
61+
<p><strong>提示:</strong></p>
62+
63+
<ul>
64+
<li><code>1 &lt;= nums.length &lt;= 100</code></li>
65+
<li><code>1 &lt;= nums[i] &lt;= 1000</code></li>
66+
</ul>
67+
68+
<!-- description:end -->
69+
70+
## 解法
71+
72+
<!-- solution:start -->
73+
74+
### 方法一:计数
75+
76+
我们可以遍历数组 $\textit{nums}$,统计其中偶数的个数 $\textit{even}$。然后我们将数组的前 $\textit{even}$ 个元素置为 $0$,剩余的元素置为 $1$。
77+
78+
时间复杂度 $O(n)$,其中 $n$ 是数组 $\textit{nums}$ 的长度。空间复杂度 $O(1)$。
79+
80+
<!-- tabs:start -->
81+
82+
#### Python3
83+
84+
```python
85+
class Solution:
86+
def transformArray(self, nums: List[int]) -> List[int]:
87+
even = sum(x % 2 == 0 for x in nums)
88+
for i in range(even):
89+
nums[i] = 0
90+
for i in range(even, len(nums)):
91+
nums[i] = 1
92+
return nums
93+
```
94+
95+
#### Java
96+
97+
```java
98+
class Solution {
99+
public int[] transformArray(int[] nums) {
100+
int even = 0;
101+
for (int x : nums) {
102+
even += (x & 1 ^ 1);
103+
}
104+
for (int i = 0; i < even; ++i) {
105+
nums[i] = 0;
106+
}
107+
for (int i = even; i < nums.length; ++i) {
108+
nums[i] = 1;
109+
}
110+
return nums;
111+
}
112+
}
113+
```
114+
115+
#### C++
116+
117+
```cpp
118+
class Solution {
119+
public:
120+
vector<int> transformArray(vector<int>& nums) {
121+
int even = 0;
122+
for (int x : nums) {
123+
even += (x & 1 ^ 1);
124+
}
125+
for (int i = 0; i < even; ++i) {
126+
nums[i] = 0;
127+
}
128+
for (int i = even; i < nums.size(); ++i) {
129+
nums[i] = 1;
130+
}
131+
return nums;
132+
}
133+
};
134+
```
135+
136+
#### Go
137+
138+
```go
139+
func transformArray(nums []int) []int {
140+
even := 0
141+
for _, x := range nums {
142+
even += x&1 ^ 1
143+
}
144+
for i := 0; i < even; i++ {
145+
nums[i] = 0
146+
}
147+
for i := even; i < len(nums); i++ {
148+
nums[i] = 1
149+
}
150+
return nums
151+
}
152+
```
153+
154+
#### TypeScript
155+
156+
```ts
157+
function transformArray(nums: number[]): number[] {
158+
const even = nums.filter(x => x % 2 === 0).length;
159+
for (let i = 0; i < even; ++i) {
160+
nums[i] = 0;
161+
}
162+
for (let i = even; i < nums.length; ++i) {
163+
nums[i] = 1;
164+
}
165+
return nums;
166+
}
167+
```
168+
169+
<!-- tabs:end -->
170+
171+
<!-- solution:end -->
172+
173+
<!-- problem:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
---
2+
comments: true
3+
difficulty: Easy
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3400-3499/3467.Transform%20Array%20by%20Parity/README_EN.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3467. Transform Array by Parity](https://leetcode.com/problems/transform-array-by-parity)
10+
11+
[中文文档](/solution/3400-3499/3467.Transform%20Array%20by%20Parity/README.md)
12+
13+
## Description
14+
15+
<!-- description:start -->
16+
17+
<p>You are given an integer array <code>nums</code>. Transform <code>nums</code> by performing the following operations in the <strong>exact</strong> order specified:</p>
18+
19+
<ol>
20+
<li>Replace each even number with 0.</li>
21+
<li>Replace each odd numbers with 1.</li>
22+
<li>Sort the modified array in <strong>non-decreasing</strong> order.</li>
23+
</ol>
24+
25+
<p>Return the resulting array after performing these operations.</p>
26+
27+
<p>&nbsp;</p>
28+
<p><strong class="example">Example 1:</strong></p>
29+
30+
<div class="example-block">
31+
<p><strong>Input:</strong> <span class="example-io">nums = [4,3,2,1]</span></p>
32+
33+
<p><strong>Output:</strong> <span class="example-io">[0,0,1,1]</span></p>
34+
35+
<p><strong>Explanation:</strong></p>
36+
37+
<ul>
38+
<li>Replace the even numbers (4 and 2) with 0 and the odd numbers (3 and 1) with 1. Now, <code>nums = [0, 1, 0, 1]</code>.</li>
39+
<li>After sorting <code>nums</code> in non-descending order, <code>nums = [0, 0, 1, 1]</code>.</li>
40+
</ul>
41+
</div>
42+
43+
<p><strong class="example">Example 2:</strong></p>
44+
45+
<div class="example-block">
46+
<p><strong>Input:</strong> <span class="example-io">nums = [1,5,1,4,2]</span></p>
47+
48+
<p><strong>Output:</strong> <span class="example-io">[0,0,1,1,1]</span></p>
49+
50+
<p><strong>Explanation:</strong></p>
51+
52+
<ul>
53+
<li>Replace the even numbers (4 and 2) with 0 and the odd numbers (1, 5 and 1) with 1. Now, <code>nums = [1, 1, 1, 0, 0]</code>.</li>
54+
<li>After sorting <code>nums</code> in non-descending order, <code>nums = [0, 0, 1, 1, 1]</code>.</li>
55+
</ul>
56+
</div>
57+
58+
<p>&nbsp;</p>
59+
<p><strong>Constraints:</strong></p>
60+
61+
<ul>
62+
<li><code>1 &lt;= nums.length &lt;= 100</code></li>
63+
<li><code>1 &lt;= nums[i] &lt;= 1000</code></li>
64+
</ul>
65+
66+
<!-- description:end -->
67+
68+
## Solutions
69+
70+
<!-- solution:start -->
71+
72+
### Solution 1: Counting
73+
74+
We can traverse the array $\textit{nums}$ and count the number of even elements $\textit{even}$. Then, we set the first $\textit{even}$ elements of the array to $0$ and the remaining elements to $1$.
75+
76+
The time complexity is $O(n)$, where $n$ is the length of the array $\textit{nums}$. The space complexity is $O(1)$.
77+
78+
<!-- tabs:start -->
79+
80+
#### Python3
81+
82+
```python
83+
class Solution:
84+
def transformArray(self, nums: List[int]) -> List[int]:
85+
even = sum(x % 2 == 0 for x in nums)
86+
for i in range(even):
87+
nums[i] = 0
88+
for i in range(even, len(nums)):
89+
nums[i] = 1
90+
return nums
91+
```
92+
93+
#### Java
94+
95+
```java
96+
class Solution {
97+
public int[] transformArray(int[] nums) {
98+
int even = 0;
99+
for (int x : nums) {
100+
even += (x & 1 ^ 1);
101+
}
102+
for (int i = 0; i < even; ++i) {
103+
nums[i] = 0;
104+
}
105+
for (int i = even; i < nums.length; ++i) {
106+
nums[i] = 1;
107+
}
108+
return nums;
109+
}
110+
}
111+
```
112+
113+
#### C++
114+
115+
```cpp
116+
class Solution {
117+
public:
118+
vector<int> transformArray(vector<int>& nums) {
119+
int even = 0;
120+
for (int x : nums) {
121+
even += (x & 1 ^ 1);
122+
}
123+
for (int i = 0; i < even; ++i) {
124+
nums[i] = 0;
125+
}
126+
for (int i = even; i < nums.size(); ++i) {
127+
nums[i] = 1;
128+
}
129+
return nums;
130+
}
131+
};
132+
```
133+
134+
#### Go
135+
136+
```go
137+
func transformArray(nums []int) []int {
138+
even := 0
139+
for _, x := range nums {
140+
even += x&1 ^ 1
141+
}
142+
for i := 0; i < even; i++ {
143+
nums[i] = 0
144+
}
145+
for i := even; i < len(nums); i++ {
146+
nums[i] = 1
147+
}
148+
return nums
149+
}
150+
```
151+
152+
#### TypeScript
153+
154+
```ts
155+
function transformArray(nums: number[]): number[] {
156+
const even = nums.filter(x => x % 2 === 0).length;
157+
for (let i = 0; i < even; ++i) {
158+
nums[i] = 0;
159+
}
160+
for (let i = even; i < nums.length; ++i) {
161+
nums[i] = 1;
162+
}
163+
return nums;
164+
}
165+
```
166+
167+
<!-- tabs:end -->
168+
169+
<!-- solution:end -->
170+
171+
<!-- problem:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
vector<int> transformArray(vector<int>& nums) {
4+
int even = 0;
5+
for (int x : nums) {
6+
even += (x & 1 ^ 1);
7+
}
8+
for (int i = 0; i < even; ++i) {
9+
nums[i] = 0;
10+
}
11+
for (int i = even; i < nums.size(); ++i) {
12+
nums[i] = 1;
13+
}
14+
return nums;
15+
}
16+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
func transformArray(nums []int) []int {
2+
even := 0
3+
for _, x := range nums {
4+
even += x&1 ^ 1
5+
}
6+
for i := 0; i < even; i++ {
7+
nums[i] = 0
8+
}
9+
for i := even; i < len(nums); i++ {
10+
nums[i] = 1
11+
}
12+
return nums
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public int[] transformArray(int[] nums) {
3+
int even = 0;
4+
for (int x : nums) {
5+
even += (x & 1 ^ 1);
6+
}
7+
for (int i = 0; i < even; ++i) {
8+
nums[i] = 0;
9+
}
10+
for (int i = even; i < nums.length; ++i) {
11+
nums[i] = 1;
12+
}
13+
return nums;
14+
}
15+
}

0 commit comments

Comments
 (0)