File tree 1 file changed +47
-0
lines changed
1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ struct Query {
4
+ int k,t,id;
5
+ bool operator <(const Query& rhs)const {
6
+ return t > rhs.t ;
7
+ }
8
+ };
9
+ struct Item {
10
+ string s;
11
+ int idx;
12
+ bool operator <(const Item& rhs)const {
13
+ if (s == rhs.s ) return idx < rhs.idx ;
14
+ return s < rhs.s ;
15
+ }
16
+ };
17
+ vector<int > smallestTrimmedNumbers (vector<string>& nums, vector<vector<int >>& queries) {
18
+ vector<int > ans (queries.size (), 0 );
19
+ vector<Query> vec;
20
+ int cnt = 0 ;
21
+ for (auto & q: queries) {
22
+ vec.emplace_back ((Query){q[0 ], q[1 ], cnt++});
23
+ }
24
+ sort (vec.begin (), vec.end ());
25
+ vector<Item> it;
26
+ for (int i = 0 ; i < nums.size (); ++i) {
27
+ it.emplace_back ((Item){nums[i], i});
28
+ }
29
+
30
+ for (int i = 0 ; i < vec.size (); ++i) {
31
+ int t = vec[i].t ;
32
+ int k = vec[i].k ;
33
+ int id = vec[i].id ;
34
+ if (i == 0 || t != vec[i-1 ].t ) {
35
+ int pn = 0 ;
36
+ int len = it[0 ].s .length ();
37
+ for (int j = 0 ; j < it.size (); ++j) {
38
+ it[j].s = it[j].s .substr (len - t);
39
+ }
40
+ sort (it.begin (), it.end ());
41
+ }
42
+ ans[id] = it[k-1 ].idx ;
43
+ }
44
+ return ans;
45
+ }
46
+ };
47
+
You can’t perform that action at this time.
0 commit comments