Skip to content

Commit 313ffaf

Browse files
committed
6 problems solved.
1 parent b73b12d commit 313ffaf

File tree

6 files changed

+185
-0
lines changed

6 files changed

+185
-0
lines changed

src/1175.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
int numPrimeArrangements(int n) {
2+
if (n == 1)
3+
return 1;
4+
5+
int prime[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,
6+
67,71,73,79,83,89,97};
7+
int len = sizeof(prime)/sizeof(prime[0]);
8+
int ct = 0;
9+
for (int i = 0; i < len; ++i)
10+
{
11+
if (prime[i] <= n)
12+
++ct;
13+
else
14+
break;
15+
}
16+
17+
int mod = 1e9+7;
18+
long long res = 1;
19+
for (int i = 1; i <= ct; ++i)
20+
{
21+
res = (res*i)%mod;
22+
}
23+
ct = n-ct;
24+
for (int i = 1; i <= ct; ++i)
25+
{
26+
res = (res*i)%mod;
27+
}
28+
29+
return res;
30+
}

src/1356.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
vector<int> sortByBits(vector<int>& arr) {
2+
int len = arr.size();
3+
if (len == 1)
4+
return arr;
5+
vector<bitset<32>> vec;
6+
for (int i = 0; i < len; ++i)
7+
vec.push_back(arr[i]);
8+
auto cmp = [](const bitset<32>& a, const bitset<32>& b) {
9+
int m = a.count(), n = b.count();
10+
return m < n || (m == n && a.to_ulong() < b.to_ulong());
11+
};
12+
13+
sort(vec.begin(), vec.end(), cmp);
14+
vector<int> res(len);
15+
for (int i = 0; i < len; ++i)
16+
res[i] = vec[i].to_ulong();
17+
18+
return res;
19+
}

src/733.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
2+
int row = image.size();
3+
int col = image[0].size();
4+
vector<vector<int>> flag(row, vector<int>(col, 0));
5+
vector<vector<int>> res(image);
6+
7+
deque<pair<int, int>> dq;
8+
dq.push_back(make_pair(sr, sc));
9+
int color = image[sr][sc];
10+
11+
int len = 1;
12+
while (len != 0)
13+
{
14+
for (int i = 0; i < len; ++i)
15+
{
16+
int m = dq[i].first, n = dq[i].second;
17+
res[m][n] = newColor;
18+
flag[m][n] = 1;
19+
if (m > 0 && flag[m-1][n] == 0 && image[m-1][n] == color)
20+
dq.push_back(make_pair(m-1, n));
21+
if (m < row-1 && flag[m+1][n] == 0 && image[m+1][n] == color)
22+
dq.push_back(make_pair(m+1, n));
23+
if (n > 0 && flag[m][n-1] == 0 && image[m][n-1] == color)
24+
dq.push_back(make_pair(m, n-1));
25+
if (n < col-1 && flag[m][n+1] == 0 && image[m][n+1] == color)
26+
dq.push_back(make_pair(m, n+1));
27+
}
28+
dq.erase(dq.begin(), dq.begin()+len);
29+
len = dq.size();
30+
}
31+
32+
return res;
33+
}

src/762.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
int countPrimeSetBits(int L, int R) {
2+
bitset<32> num(L);
3+
string s = num.to_string();
4+
set<int> prime{2,3,5,7,11,13,17,19,23,29,31};
5+
int ct = num.count();
6+
7+
int res = 0;
8+
while (L <= R)
9+
{
10+
if (prime.find(ct) != prime.end())
11+
++res;
12+
int t = 1;
13+
for (int i = 31; i >= 0; --i)
14+
{
15+
char c = s[i] + t;
16+
if (c == '1')
17+
{
18+
++ct;
19+
s[i] = '1';
20+
break;
21+
}
22+
else
23+
{
24+
--ct;
25+
s[i] = '0';
26+
}
27+
}
28+
++L;
29+
}
30+
31+
return res;
32+
}

src/993.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
bool isCousins(TreeNode* root, int x, int y) {
2+
deque<TreeNode*> dq;
3+
dq.push_back(root);
4+
int ct = 1;
5+
int n = 0;
6+
int p[2] = {-1,-1};
7+
while (ct != 0)
8+
{
9+
ct = 0;
10+
int len = dq.size();
11+
for (int i = 0; i < len; ++i)
12+
{
13+
if (dq[i] == nullptr)
14+
{
15+
dq.push_back(nullptr);
16+
dq.push_back(nullptr);
17+
}
18+
else if (dq[i]->val == x || dq[i]->val == y)
19+
{
20+
p[n++] = i;
21+
}
22+
else
23+
{
24+
dq.push_back(dq[i]->left);
25+
dq.push_back(dq[i]->right);
26+
++ct;
27+
}
28+
}
29+
if (n == 1 || n == 2 || ct == 0)
30+
break;
31+
dq.erase(dq.begin(), dq.begin()+len);
32+
}
33+
34+
if (n == 1)
35+
return false;
36+
if (n == 2)
37+
return p[0]/2 != p[1]/2;
38+
return false;
39+
}

src/997.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
int findJudge(int N, vector<vector<int>>& trust) {
2+
vector<list<int>> vec(N);
3+
int len = trust.size();
4+
for (int i = 0; i < len; ++i)
5+
{
6+
vec[trust[i][1]-1].push_back(trust[i][0]);
7+
}
8+
9+
int judge = -1;
10+
int ct = 0;
11+
for (int i = 0; i < N; ++i)
12+
if (vec[i].size() == N-1)
13+
{
14+
judge = i+1;
15+
++ct;
16+
}
17+
if (ct != 1)
18+
return -1;
19+
for (int i = 0; i < N; ++i)
20+
{
21+
if (i != judge-1 && vec[i].size() != 0)
22+
{
23+
for (auto iter = vec[i].begin(); iter != vec[i].end(); ++iter)
24+
{
25+
if (*iter == judge)
26+
return -1;
27+
}
28+
}
29+
}
30+
31+
return judge;
32+
}

0 commit comments

Comments
 (0)