Skip to content

Commit f909409

Browse files
committed
5 problems solved.
1 parent 3028f46 commit f909409

File tree

5 files changed

+168
-0
lines changed

5 files changed

+168
-0
lines changed

src/1260.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) {
2+
int row = grid.size();
3+
int col = grid[0].size();
4+
int sz = row*col;
5+
k %= sz;
6+
if (k == 0)
7+
return grid;
8+
vector<vector<int>> res(row, vector<int>(col, 0));
9+
for (int i = 0; i < row; ++i)
10+
{
11+
for (int j = 0; j < col; ++j)
12+
{
13+
int t = (i*col+j+k)%sz;
14+
int r = t/col, c = t%col;
15+
res[r][c] = grid[i][j];
16+
}
17+
}
18+
19+
return res;
20+
}

src/1331.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
vector<int> arrayRankTransform(vector<int>& arr) {
2+
int len = arr.size();
3+
if (len == 0)
4+
return {};
5+
if (len == 1)
6+
return {1};
7+
8+
struct Elem
9+
{
10+
int val;
11+
int pos;
12+
int rank;
13+
Elem(int v = 0, int p = -1, int r = 1):val(v), pos(p), rank(r){}
14+
};
15+
16+
vector<Elem> vec(len);
17+
for (int i = 0; i < len; ++i)
18+
{
19+
vec[i].val = arr[i];
20+
vec[i].pos = i;
21+
}
22+
23+
auto cmp = [](const Elem& a, const Elem& b) {
24+
return a.val < b.val;
25+
};
26+
27+
sort(vec.begin(), vec.end(), cmp);
28+
vector<int> res(len, 1);
29+
int rank = 1;
30+
for (int i = 1; i < len; ++i)
31+
{
32+
if (vec[i].val > vec[i-1].val)
33+
{
34+
++rank;
35+
}
36+
vec[i].rank = rank;
37+
}
38+
for (int i = 0; i < len; ++i)
39+
res[vec[i].pos] = vec[i].rank;
40+
41+
return res;
42+
}

src/341.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
class NestedIterator {
2+
public:
3+
NestedIterator(vector<NestedInteger> &nestedList) {
4+
skF.push(nestedList.begin());
5+
skL.push(nestedList.end());
6+
}
7+
8+
int next() {
9+
nit iter = skF.top();
10+
int res = iter->getInteger();
11+
++iter;
12+
skF.pop();
13+
skF.push(iter);
14+
return res;
15+
}
16+
17+
bool hasNext() {
18+
int sz = skF.size();
19+
while (sz != 0)
20+
{
21+
if (skF.top() == skL.top())
22+
{
23+
skF.pop();
24+
skL.pop();
25+
sz--;
26+
if (sz > 0)
27+
{
28+
nit iter = skF.top();
29+
iter++;
30+
skF.pop();
31+
skF.push(iter);
32+
}
33+
else
34+
break;
35+
}
36+
else
37+
{
38+
nit iter = skF.top();
39+
if (iter->isInteger())
40+
return true;
41+
else
42+
{
43+
auto& t = iter->getList();
44+
if (t.size() == 0)
45+
{
46+
iter++;
47+
skF.pop();
48+
skF.push(iter);
49+
}
50+
else
51+
{
52+
skF.push(t.begin());
53+
skL.push(t.end());
54+
++sz;
55+
}
56+
}
57+
}
58+
}
59+
60+
return false;
61+
}
62+
63+
using nit = vector<NestedInteger>::iterator;
64+
stack<nit> skF, skL;
65+
};

src/454.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
2+
vector<int> sum;
3+
int len = A.size();
4+
for (int i = 0; i < len; ++i)
5+
{
6+
for (int j = 0; j < len; ++j)
7+
sum.push_back(A[i]+B[j]);
8+
}
9+
sort(sum.begin(), sum.end());
10+
11+
int res = 0;
12+
for (int i = 0; i < len; ++i)
13+
{
14+
for (int j = 0; j < len; ++j)
15+
{
16+
int t = -(C[i]+D[j]);
17+
if (binary_search(sum.begin(), sum.end(), t))
18+
{
19+
res += upper_bound(sum.begin(), sum.end(), t) - lower_bound(sum.begin(), sum.end(), t);
20+
}
21+
}
22+
}
23+
24+
return res;
25+
}

src/944.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
int minDeletionSize(vector<string>& A) {
2+
int len = A.size();
3+
int sz = A[0].size();
4+
int ct = 0;
5+
for (int i = 0; i < sz; ++i)
6+
{
7+
for (int j = 0; j < len-1; ++j)
8+
if (A[j][i] > A[j+1][i])
9+
{
10+
++ct;
11+
break;
12+
}
13+
}
14+
15+
return ct;
16+
}

0 commit comments

Comments
 (0)