Skip to content

Commit e5bd611

Browse files
authored
Add files via upload
1 parent 577dce8 commit e5bd611

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# 26、删除有序数组中的重复项
2+
3+
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
4+
5+
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
6+
7+
8+
9+
说明:
10+
11+
为什么返回数值是整数,但输出的答案是数组呢?
12+
13+
请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
14+
15+
你可以想象内部操作如下:
16+
17+
```
18+
// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
19+
int len = removeDuplicates(nums);
20+
21+
// 在函数里修改输入数组对于调用者是可见的。
22+
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
23+
for (int i = 0; i < len; i++) {
24+
print(nums[i]);
25+
}
26+
```
27+
28+
示例 1:
29+
30+
```
31+
输入:nums = [1,1,2]
32+
输出:2, nums = [1,2]
33+
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。
34+
```
35+
36+
37+
示例 2:
38+
39+
```
40+
输入:nums = [0,0,1,1,1,2,2,3,3,4]
41+
输出:5, nums = [0,1,2,3,4]
42+
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。
43+
```
44+
45+
46+
提示:
47+
48+
0 <= nums.length <= 3 * 104
49+
-104 <= nums[i] <= 104
50+
nums 已按升序排列
51+
52+
来源:力扣(LeetCode)
53+
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
54+
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
55+
56+
java实现
57+
58+
```java
59+
class Solution {
60+
public static int removeDuplicates(int[] nums) {
61+
int length = nums.length;
62+
for(int i = 0;i<length;i++){
63+
for(int j = i+1;j<length;){
64+
if(nums[i]==nums[j]){
65+
nums=deletenum(nums,j,length);
66+
length--;
67+
}else {
68+
j++;
69+
}
70+
}
71+
}
72+
return length;
73+
}
74+
public static int[] deletenum(int []nums,int i,int length){
75+
for(int j = i+1;j<length;j++){
76+
nums[j-1]=nums[j];
77+
}
78+
79+
return nums;
80+
}
81+
}
82+
```
83+

0 commit comments

Comments
 (0)