Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b70cf40

Browse files
committed
feat: add solutions to lc problem: No.0442
No.0442.Find All Duplicates in an Array
1 parent 03e9f50 commit b70cf40

File tree

6 files changed

+202
-18
lines changed

6 files changed

+202
-18
lines changed

‎solution/0400-0499/0442.Find All Duplicates in an Array/README.md‎

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,88 @@
5555
<!-- 这里可写当前语言的特殊实现逻辑 -->
5656

5757
```python
58-
58+
class Solution:
59+
def findDuplicates(self, nums: List[int]) -> List[int]:
60+
for i in range(len(nums)):
61+
while nums[i] != nums[nums[i] - 1]:
62+
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]
63+
return [v for i, v in enumerate(nums) if v != i + 1]
5964
```
6065

6166
### **Java**
6267

6368
<!-- 这里可写当前语言的特殊实现逻辑 -->
6469

6570
```java
71+
class Solution {
72+
public List<Integer> findDuplicates(int[] nums) {
73+
int n = nums.length;
74+
for (int i = 0; i < n; ++i) {
75+
while (nums[i] != nums[nums[i] - 1]) {
76+
swap(nums, i, nums[i] - 1);
77+
}
78+
}
79+
List<Integer> ans = new ArrayList<>();
80+
for (int i = 0; i < n; ++i) {
81+
if (nums[i] != i + 1) {
82+
ans.add(nums[i]);
83+
}
84+
}
85+
return ans;
86+
}
87+
88+
void swap(int[] nums, int i, int j) {
89+
int t = nums[i];
90+
nums[i] = nums[j];
91+
nums[j] = t;
92+
}
93+
}
94+
```
95+
96+
### **C++**
97+
98+
```cpp
99+
class Solution {
100+
public:
101+
vector<int> findDuplicates(vector<int>& nums) {
102+
int n = nums.size();
103+
for (int i = 0; i < n; ++i)
104+
{
105+
while (nums[i] != nums[nums[i] - 1])
106+
{
107+
swap(nums[i], nums[nums[i] - 1]);
108+
}
109+
}
110+
vector<int> ans;
111+
for (int i = 0; i < n; ++i)
112+
{
113+
if (nums[i] != i + 1)
114+
{
115+
ans.push_back(nums[i]);
116+
}
117+
}
118+
return ans;
119+
}
120+
};
121+
```
66122
123+
### **Go**
124+
125+
```go
126+
func findDuplicates(nums []int) []int {
127+
for i := range nums {
128+
for nums[i] != nums[nums[i]-1] {
129+
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
130+
}
131+
}
132+
var ans []int
133+
for i, v := range nums {
134+
if v != i+1 {
135+
ans = append(ans, v)
136+
}
137+
}
138+
return ans
139+
}
67140
```
68141

69142
### **...**

‎solution/0400-0499/0442.Find All Duplicates in an Array/README_EN.md‎

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,86 @@
3636
### **Python3**
3737

3838
```python
39-
39+
class Solution:
40+
def findDuplicates(self, nums: List[int]) -> List[int]:
41+
for i in range(len(nums)):
42+
while nums[i] != nums[nums[i] - 1]:
43+
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]
44+
return [v for i, v in enumerate(nums) if v != i + 1]
4045
```
4146

4247
### **Java**
4348

4449
```java
50+
class Solution {
51+
public List<Integer> findDuplicates(int[] nums) {
52+
int n = nums.length;
53+
for (int i = 0; i < n; ++i) {
54+
while (nums[i] != nums[nums[i] - 1]) {
55+
swap(nums, i, nums[i] - 1);
56+
}
57+
}
58+
List<Integer> ans = new ArrayList<>();
59+
for (int i = 0; i < n; ++i) {
60+
if (nums[i] != i + 1) {
61+
ans.add(nums[i]);
62+
}
63+
}
64+
return ans;
65+
}
66+
67+
void swap(int[] nums, int i, int j) {
68+
int t = nums[i];
69+
nums[i] = nums[j];
70+
nums[j] = t;
71+
}
72+
}
73+
```
74+
75+
### **C++**
76+
77+
```cpp
78+
class Solution {
79+
public:
80+
vector<int> findDuplicates(vector<int>& nums) {
81+
int n = nums.size();
82+
for (int i = 0; i < n; ++i)
83+
{
84+
while (nums[i] != nums[nums[i] - 1])
85+
{
86+
swap(nums[i], nums[nums[i] - 1]);
87+
}
88+
}
89+
vector<int> ans;
90+
for (int i = 0; i < n; ++i)
91+
{
92+
if (nums[i] != i + 1)
93+
{
94+
ans.push_back(nums[i]);
95+
}
96+
}
97+
return ans;
98+
}
99+
};
100+
```
45101
102+
### **Go**
103+
104+
```go
105+
func findDuplicates(nums []int) []int {
106+
for i := range nums {
107+
for nums[i] != nums[nums[i]-1] {
108+
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
109+
}
110+
}
111+
var ans []int
112+
for i, v := range nums {
113+
if v != i+1 {
114+
ans = append(ans, v)
115+
}
116+
}
117+
return ans
118+
}
46119
```
47120

48121
### **...**
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public:
3+
vector<int> findDuplicates(vector<int>& nums) {
4+
int n = nums.size();
5+
for (int i = 0; i < n; ++i)
6+
{
7+
while (nums[i] != nums[nums[i] - 1])
8+
{
9+
swap(nums[i], nums[nums[i] - 1]);
10+
}
11+
}
12+
vector<int> ans;
13+
for (int i = 0; i < n; ++i)
14+
{
15+
if (nums[i] != i + 1)
16+
{
17+
ans.push_back(nums[i]);
18+
}
19+
}
20+
return ans;
21+
}
22+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func findDuplicates(nums []int) []int {
2+
for i := range nums {
3+
for nums[i] != nums[nums[i]-1] {
4+
nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]
5+
}
6+
}
7+
var ans []int
8+
for i, v := range nums {
9+
if v != i+1 {
10+
ans = append(ans, v)
11+
}
12+
}
13+
return ans
14+
}
Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
11
class Solution {
22
public List<Integer> findDuplicates(int[] nums) {
3-
List<Integer> ans = newArrayList<>();
4-
for(int i = 0; i < nums.length; i++) {
5-
if(nums[i] != nums[nums[i] - 1]) {
3+
intn = nums.length;
4+
for(int i = 0; i < n; ++i) {
5+
while(nums[i] != nums[nums[i] - 1]) {
66
swap(nums, i, nums[i] - 1);
7-
i--;
87
}
98
}
10-
11-
System.out.println(Arrays.toString(nums));
12-
13-
for(int i = 0; i < nums.length; i++) {
14-
if(nums[i] != i + 1) {
9+
List<Integer> ans = new ArrayList<>();
10+
for (int i = 0; i < n; ++i) {
11+
if (nums[i] != i + 1) {
1512
ans.add(nums[i]);
1613
}
1714
}
18-
1915
return ans;
2016
}
21-
22-
privatevoid swap(int[] nums, int i, int j) {
23-
int tmp = nums[i];
24-
nums[i] = nums[j];
25-
nums[j] = tmp;
26-
}
17+
18+
void swap(int[] nums, int i, int j) {
19+
int t = nums[i];
20+
nums[i] = nums[j];
21+
nums[j] = t;
22+
}
2723
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Solution:
2+
def findDuplicates(self, nums: List[int]) -> List[int]:
3+
for i in range(len(nums)):
4+
while nums[i] != nums[nums[i] - 1]:
5+
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]
6+
return [v for i, v in enumerate(nums) if v != i + 1]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /