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 a994d50

Browse files
committed
feat: add solutions to lc problem: No.1409.Queries on a Permutation With Key
1 parent 537f521 commit a994d50

File tree

6 files changed

+224
-23
lines changed

6 files changed

+224
-23
lines changed

‎solution/1400-1499/1409.Queries on a Permutation With Key/README.md‎

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,104 @@
5151
<li><code>1 &lt;= queries[i] &lt;= m</code></li>
5252
</ul>
5353

54-
5554
## 解法
5655

5756
<!-- 这里可写通用的实现逻辑 -->
5857

58+
题目数据规模不大,直接模拟即可。
59+
5960
<!-- tabs:start -->
6061

6162
### **Python3**
6263

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

6566
```python
66-
67+
class Solution:
68+
def processQueries(self, queries: List[int], m: int) -> List[int]:
69+
nums = list(range(1, m + 1))
70+
res = []
71+
for num in queries:
72+
res.append(nums.index(num))
73+
nums.remove(num)
74+
nums.insert(0, num)
75+
return res
6776
```
6877

6978
### **Java**
7079

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

7382
```java
83+
class Solution {
84+
public int[] processQueries(int[] queries, int m) {
85+
List<Integer> nums = new LinkedList<>();
86+
for (int i = 0; i < m; ++i) {
87+
nums.add(i + 1);
88+
}
89+
int[] res = new int[queries.length];
90+
int i = 0;
91+
for (int num : queries) {
92+
res[i++] = nums.indexOf(num);
93+
nums.remove(Integer.valueOf(num));
94+
nums.add(0, num);
95+
}
96+
return res;
97+
}
98+
}
99+
```
100+
101+
### **C++**
102+
103+
```cpp
104+
class Solution {
105+
public:
106+
vector<int> processQueries(vector<int>& queries, int m) {
107+
vector<int> nums(m);
108+
iota(nums.begin(), nums.end(), 1);
109+
vector<int> res;
110+
for (int num : queries)
111+
{
112+
int idx = -1;
113+
for (int i = 0; i < m; ++i)
114+
{
115+
if (nums[i] == num) {
116+
idx = i;
117+
break;
118+
}
119+
}
120+
res.push_back(idx);
121+
nums.erase(nums.begin() + idx);
122+
nums.insert(nums.begin(), num);
123+
}
124+
return res;
125+
}
126+
};
127+
```
74128
129+
### **Go**
130+
131+
```go
132+
func processQueries(queries []int, m int) []int {
133+
nums := make([]int, m)
134+
for i := 0; i < m; i++ {
135+
nums[i] = i + 1
136+
}
137+
var res []int
138+
for _, num := range queries {
139+
idx := -1
140+
for i := 0; i < m; i++ {
141+
if nums[i] == num {
142+
idx = i
143+
break
144+
}
145+
}
146+
res = append(res, idx)
147+
nums = append(nums[:idx], nums[idx+1:]...)
148+
nums = append([]int{num}, nums...)
149+
}
150+
return res
151+
}
75152
```
76153

77154
### **...**

‎solution/1400-1499/1409.Queries on a Permutation With Key/README_EN.md‎

Lines changed: 77 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,17 @@
66

77
<p>Given the array <code>queries</code> of positive integers between <code>1</code> and <code>m</code>, you have to process all <code>queries[i]</code> (from <code>i=0</code> to <code>i=queries.length-1</code>) according to the following rules:</p>
88

9-
10-
119
<ul>
1210
<li>In the beginning, you have the permutation <code>P=[1,2,3,...,m]</code>.</li>
1311
<li>For the current <code>i</code>, find the position of <code>queries[i]</code> in the permutation <code>P</code> (<strong>indexing from 0</strong>) and then move this at the beginning of the permutation <code>P.</code>&nbsp;Notice that the position of <code>queries[i]</code> in <code>P</code> is the result for <code>queries[i]</code>.</li>
1412
</ul>
1513

16-
17-
1814
<p>Return an array containing the result for the given <code>queries</code>.</p>
1915

20-
21-
2216
<p>&nbsp;</p>
2317

2418
<p><strong>Example 1:</strong></p>
2519

26-
27-
2820
<pre>
2921

3022
<strong>Input:</strong> queries = [3,1,2,1], m = 5
@@ -45,12 +37,8 @@ Therefore, the array containing the result is [2,1,2,1].
4537

4638
</pre>
4739

48-
49-
5040
<p><strong>Example 2:</strong></p>
5141

52-
53-
5442
<pre>
5543

5644
<strong>Input:</strong> queries = [4,1,2,2], m = 4
@@ -59,12 +47,8 @@ Therefore, the array containing the result is [2,1,2,1].
5947

6048
</pre>
6149

62-
63-
6450
<p><strong>Example 3:</strong></p>
6551

66-
67-
6852
<pre>
6953

7054
<strong>Input:</strong> queries = [7,5,5,8,3], m = 8
@@ -73,14 +57,10 @@ Therefore, the array containing the result is [2,1,2,1].
7357

7458
</pre>
7559

76-
77-
7860
<p>&nbsp;</p>
7961

8062
<p><strong>Constraints:</strong></p>
8163

82-
83-
8464
<ul>
8565
<li><code>1 &lt;= m &lt;= 10^3</code></li>
8666
<li><code>1 &lt;= queries.length &lt;= m</code></li>
@@ -94,13 +74,89 @@ Therefore, the array containing the result is [2,1,2,1].
9474
### **Python3**
9575

9676
```python
97-
77+
class Solution:
78+
def processQueries(self, queries: List[int], m: int) -> List[int]:
79+
nums = list(range(1, m + 1))
80+
res = []
81+
for num in queries:
82+
res.append(nums.index(num))
83+
nums.remove(num)
84+
nums.insert(0, num)
85+
return res
9886
```
9987

10088
### **Java**
10189

10290
```java
91+
class Solution {
92+
public int[] processQueries(int[] queries, int m) {
93+
List<Integer> nums = new LinkedList<>();
94+
for (int i = 0; i < m; ++i) {
95+
nums.add(i + 1);
96+
}
97+
int[] res = new int[queries.length];
98+
int i = 0;
99+
for (int num : queries) {
100+
res[i++] = nums.indexOf(num);
101+
nums.remove(Integer.valueOf(num));
102+
nums.add(0, num);
103+
}
104+
return res;
105+
}
106+
}
107+
```
108+
109+
### **C++**
110+
111+
```cpp
112+
class Solution {
113+
public:
114+
vector<int> processQueries(vector<int>& queries, int m) {
115+
vector<int> nums(m);
116+
iota(nums.begin(), nums.end(), 1);
117+
vector<int> res;
118+
for (int num : queries)
119+
{
120+
int idx = -1;
121+
for (int i = 0; i < m; ++i)
122+
{
123+
if (nums[i] == num) {
124+
idx = i;
125+
break;
126+
}
127+
}
128+
res.push_back(idx);
129+
nums.erase(nums.begin() + idx);
130+
nums.insert(nums.begin(), num);
131+
}
132+
return res;
133+
}
134+
};
135+
```
103136
137+
### **Go**
138+
139+
```go
140+
func processQueries(queries []int, m int) []int {
141+
nums := make([]int, m)
142+
for i := 0; i < m; i++ {
143+
nums[i] = i + 1
144+
}
145+
var res []int
146+
for _, num := range queries {
147+
idx := -1
148+
for i := 0; i < m; i++ {
149+
if nums[i] == num {
150+
idx = i
151+
break
152+
}
153+
}
154+
res = append(res, idx)
155+
nums = append(nums[:idx], nums[idx+1:]...)
156+
nums = append([]int{num}, nums...)
157+
}
158+
return res
159+
}
104160
```
105161

106162
### **...**
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public:
3+
vector<int> processQueries(vector<int>& queries, int m) {
4+
vector<int> nums(m);
5+
iota(nums.begin(), nums.end(), 1);
6+
vector<int> res;
7+
for (int num : queries)
8+
{
9+
int idx = -1;
10+
for (int i = 0; i < m; ++i)
11+
{
12+
if (nums[i] == num) {
13+
idx = i;
14+
break;
15+
}
16+
}
17+
res.push_back(idx);
18+
nums.erase(nums.begin() + idx);
19+
nums.insert(nums.begin(), num);
20+
}
21+
return res;
22+
}
23+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
func processQueries(queries []int, m int) []int {
2+
nums := make([]int, m)
3+
for i := 0; i < m; i++ {
4+
nums[i] = i + 1
5+
}
6+
var res []int
7+
for _, num := range queries {
8+
idx := -1
9+
for i := 0; i < m; i++ {
10+
if nums[i] == num {
11+
idx = i
12+
break
13+
}
14+
}
15+
res = append(res, idx)
16+
nums = append(nums[:idx], nums[idx+1:]...)
17+
nums = append([]int{num}, nums...)
18+
}
19+
return res
20+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public int[] processQueries(int[] queries, int m) {
3+
List<Integer> nums = new LinkedList<>();
4+
for (int i = 0; i < m; ++i) {
5+
nums.add(i + 1);
6+
}
7+
int[] res = new int[queries.length];
8+
int i = 0;
9+
for (int num : queries) {
10+
res[i++] = nums.indexOf(num);
11+
nums.remove(Integer.valueOf(num));
12+
nums.add(0, num);
13+
}
14+
return res;
15+
}
16+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def processQueries(self, queries: List[int], m: int) -> List[int]:
3+
nums = list(range(1, m + 1))
4+
res = []
5+
for num in queries:
6+
res.append(nums.index(num))
7+
nums.remove(num)
8+
nums.insert(0, num)
9+
return res

0 commit comments

Comments
(0)

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