vault backup: 2022-09-01 13:34:17
This commit is contained in:
parent
3980d361cb
commit
79274e5a33
2
.obsidian/appearance.json
vendored
2
.obsidian/appearance.json
vendored
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"theme": "obsidian",
|
"theme": "moonstone",
|
||||||
"translucency": true,
|
"translucency": true,
|
||||||
"cssTheme": "Atom",
|
"cssTheme": "Atom",
|
||||||
"interfaceFontFamily": "IBM Plex Sans",
|
"interfaceFontFamily": "IBM Plex Sans",
|
||||||
|
|
75
Leetcode Sort-Colors.md
Normal file
75
Leetcode Sort-Colors.md
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
# Leetcode Sort-Colors
|
||||||
|
|
||||||
|
#### 2022-09-01 13:24
|
||||||
|
|
||||||
|
> ##### Algorithms:
|
||||||
|
> #algorithm #two_pointers
|
||||||
|
> ##### Data structures:
|
||||||
|
> #DS #array
|
||||||
|
> ##### Difficulty:
|
||||||
|
> #coding_problem #difficulty-medium
|
||||||
|
> ##### Additional tags:
|
||||||
|
> #leetcode
|
||||||
|
> ##### Revisions:
|
||||||
|
> N/A
|
||||||
|
|
||||||
|
##### Links:
|
||||||
|
- [Link to problem](https://leetcode.com/problems/sort-colors/)
|
||||||
|
___
|
||||||
|
### Problem
|
||||||
|
|
||||||
|
Given an array `nums` with `n` objects colored red, white, or blue, sort them **[in-place](https://en.wikipedia.org/wiki/In-place_algorithm)** so that objects of the same color are adjacent, with the colors in the order red, white, and blue.
|
||||||
|
|
||||||
|
We will use the integers `0`, `1`, and `2` to represent the color red, white, and blue, respectively.
|
||||||
|
|
||||||
|
You must solve this problem without using the library's sort function.
|
||||||
|
|
||||||
|
#### Examples
|
||||||
|
|
||||||
|
**Example 1:**
|
||||||
|
|
||||||
|
**Input:** nums = [2,0,2,1,1,0]
|
||||||
|
**Output:** [0,0,1,1,2,2]
|
||||||
|
|
||||||
|
**Example 2:**
|
||||||
|
|
||||||
|
**Input:** nums = [2,0,1]
|
||||||
|
**Output:** [0,1,2]
|
||||||
|
|
||||||
|
#### Constraints
|
||||||
|
|
||||||
|
- `n == nums.length`
|
||||||
|
- `1 <= n <= 300`
|
||||||
|
- `nums[i]` is either `0`, `1`, or `2`.
|
||||||
|
|
||||||
|
### Thoughts
|
||||||
|
|
||||||
|
> [!summary]
|
||||||
|
> This is a variant of double pointer method.
|
||||||
|
|
||||||
|
Simple double pointer method, check for cur and pointers to
|
||||||
|
avoid infinite loops.
|
||||||
|
|
||||||
|
### Solution
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
class Solution {
|
||||||
|
public:
|
||||||
|
void sortColors(vector<int> &nums) {
|
||||||
|
// Double pointer
|
||||||
|
int lowptr = 0;
|
||||||
|
int highptr = nums.size() - 1;
|
||||||
|
int cur = 0;
|
||||||
|
|
||||||
|
for (int size = nums.size(); cur < size; cur++) {
|
||||||
|
if (nums[cur] == 0 && cur != lowptr) {
|
||||||
|
swap(nums[lowptr++], nums[cur]);
|
||||||
|
cur--;
|
||||||
|
} else if (nums[cur] == 2 && cur < highptr) {
|
||||||
|
swap(nums[highptr--], nums[cur]);
|
||||||
|
cur--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
Loading…
Reference in a new issue