Skip to content

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)