Skip to content

Commit 4bb0eda

Browse files
authored
Add files via upload
1 parent 79330f4 commit 4bb0eda

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# 27.Remove Element
2+
3+
**<font color=red>难度Easy</font>**
4+
5+
## 刷题内容
6+
> 原题连接
7+
8+
* https://leetcode.com/problems/remove-element/
9+
10+
> 内容描述
11+
12+
```
13+
Given an array nums and a value val, remove all instances of that value in-place and return the new length.
14+
15+
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
16+
17+
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
18+
19+
Example 1:
20+
21+
Given nums = [3,2,2,3], val = 3,
22+
23+
Your function should return length = 2, with the first two elements of nums being 2.
24+
25+
It doesn't matter what you leave beyond the returned length.
26+
Example 2:
27+
28+
Given nums = [0,1,2,2,3,0,4,2], val = 2,
29+
30+
Your function should return length = 5, with the first five elements of nums containing 0, 1, 3, 0, and 4.
31+
32+
Note that the order of those five elements can be arbitrary.
33+
34+
It doesn't matter what values are set beyond the returned length.
35+
Clarification:
36+
37+
Confused why the returned value is an integer but your answer is an array?
38+
39+
Note that the input array is passed in by reference, which means modification to the input array will be known to the caller as well.
40+
41+
Internally you can think of this:
42+
43+
// nums is passed in by reference. (i.e., without making a copy)
44+
int len = removeElement(nums, val);
45+
46+
// any modification to nums in your function would be known by the caller.
47+
// using the length returned by your function, it prints the first len elements.
48+
for (int i = 0; i < len; i++) {
49+
print(nums[i]);
50+
}
51+
```
52+
> 思路
53+
******- 时间复杂度: O(n)******- 空间复杂度: O(1)******
54+
55+
我们可以遍历数组,把等于 val 的数放到数组的后半部分就行。我们可以用双指针实现。当 nums[i] != val 时,nums[j++] = nums[i]
56+
```cpp
57+
class Solution {
58+
public:
59+
int removeElement(vector<int>& nums, int val) {
60+
int i ,count = 0,j = 0,numsSize = nums.size();
61+
for(i = 0;i < numsSize;i++)
62+
{
63+
if(nums[i] == val)
64+
{
65+
count++;
66+
}
67+
else
68+
nums[j++] = nums[i];
69+
}
70+
return numsSize - count;
71+
}
72+
};
73+
```
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# 31.Next Permutatio
2+
3+
**<font color=red>难度Medium</font>**
4+
5+
## 刷题内容
6+
> 原题连接
7+
8+
* https://leetcode.com/problems/next-permutation/
9+
10+
> 内容描述
11+
12+
```
13+
Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.
14+
15+
If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).
16+
17+
The replacement must be in-place and use only constant extra memory.
18+
19+
Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.
20+
21+
1,2,3 → 1,3,2
22+
3,2,1 → 1,2,3
23+
1,1,5 → 1,5,1
24+
```
25+
> 思路
26+
******- 时间复杂度: O(n)******- 空间复杂度: O(1)******
27+
28+
我们可以用两个指针表示需要交换的两个数,遍历数组。这题的最坏的情况下,数组降序排列,排序算法的复杂度也是O(n)。
29+
30+
```cpp
31+
class Solution {
32+
public:
33+
void nextPermutation(vector<int>& nums) {
34+
int n1 = 0,n2 = 0;
35+
for(int i = 1;i < nums.size();++i)
36+
if(nums[i] > nums[n2])
37+
{
38+
n1 = n2;
39+
n2 = i;
40+
}
41+
else if((nums[i] < nums[n2] && nums[i] > nums[n1]) || nums[i] == nums[n2])
42+
n2 = i;
43+
else if(nums[i] <= nums[n1])
44+
{
45+
int j = i;
46+
for(;j < nums.size() - 1;++j)
47+
if(nums[j + 1] > nums[j])
48+
{
49+
n1 = j;
50+
n2 = j + 1;
51+
break;
52+
}
53+
i = j + 1;
54+
}
55+
if(n1 == n2)
56+
sort(nums.begin(),nums.end());
57+
else
58+
{
59+
swap(nums[n1],nums[n2]);
60+
sort(nums.begin() + n1 + 1,nums.end());
61+
}
62+
}
63+
};
64+
```

0 commit comments

Comments
 (0)