Skip to content

Commit 34f56dd

Browse files
committed
11 problems solved.
1 parent 27f87e2 commit 34f56dd

File tree

11 files changed

+268
-0
lines changed

11 files changed

+268
-0
lines changed

src/1009.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
int bitwiseComplement(int N) {
2+
if (N <= 1)
3+
return 1-N;
4+
int ct = 0;
5+
int i = 0;
6+
while (N != 0)
7+
{
8+
int tmp = N%2;
9+
if (tmp == 0)
10+
ct += pow(2, i);
11+
N /= 2;
12+
++i;
13+
}
14+
15+
return ct;
16+
}

src/1017.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
string baseNeg2(int N) {
2+
if (N <= 1)
3+
return to_string(N);
4+
string res;
5+
while (N != 1)
6+
{
7+
if (abs(N)%2 == 0)
8+
{
9+
N /= -2;
10+
res.push_back('0');
11+
}
12+
else
13+
{
14+
if (N > 0)
15+
N = -N/2;
16+
else
17+
N = (-N)/2+1;
18+
res.push_back('1');
19+
}
20+
}
21+
res.push_back('1');
22+
reverse(res.begin(), res.end());
23+
return res;
24+
}

src/1089.cpp

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
void duplicateZeros(vector<int>& arr) {
2+
int len = arr.size();
3+
if (len <= 1)
4+
return;
5+
if (len == 2)
6+
{
7+
if (arr[0] == 0)
8+
arr[1] = 0;
9+
return;
10+
}
11+
12+
int pos = 0;
13+
int ct = 0;
14+
int i = 0;
15+
while (i < len && ct < len)
16+
{
17+
if (arr[i] != 0)
18+
++ct;
19+
else
20+
ct += 2;
21+
++i;
22+
}
23+
if (i == len)
24+
return;
25+
--i;
26+
int j = len-1;
27+
if (ct == len && arr[i] == 0)
28+
{
29+
arr[j] = 0;
30+
arr[j-1] = 0;
31+
j -= 2;
32+
--i;
33+
}
34+
else
35+
{
36+
arr[j] = arr[i];
37+
--j;
38+
--i;
39+
}
40+
41+
while (j >= 0 && i >= 0)
42+
{
43+
if (arr[i] != 0)
44+
arr[j--] = arr[i];
45+
else
46+
{
47+
arr[j] = 0;
48+
arr[j-1] = 0;
49+
j -= 2;
50+
}
51+
--i;
52+
}
53+
}

src/1160.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
int countCharacters(vector<string>& words, string chars) {
2+
int sz = words.size();
3+
int len = chars.size();
4+
5+
char num[26] = {0};
6+
for (int i = 0; i < len; ++i)
7+
num[chars[i]-'a']++;
8+
9+
char tmp[26];
10+
int sum = 0;
11+
for (int i = 0; i < sz; ++i)
12+
{
13+
memset(tmp, 0, 26*sizeof(char));
14+
int wsz = words[i].size();
15+
int j = 0;
16+
for (j = 0; j < wsz; ++j)
17+
{
18+
int p = words[i][j]-'a';
19+
tmp[p]++;
20+
if (tmp[p] > num[p])
21+
break;
22+
}
23+
if (j == wsz)
24+
sum += wsz;
25+
}
26+
27+
return sum;
28+
}

src/1207.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
bool uniqueOccurrences(vector<int>& arr) {
2+
int len = arr.size();
3+
if (len <= 1)
4+
return true;
5+
if (len == 2)
6+
return arr[0] == arr[1];
7+
8+
char num[1001] = {0};
9+
sort(arr.begin(), arr.end());
10+
int i = 1;
11+
int last = arr[0];
12+
int ct = 1;
13+
while (i < len)
14+
{
15+
if (arr[i] == last)
16+
++ct;
17+
else
18+
{
19+
if (num[ct] == 0)
20+
{
21+
num[ct] = 1;
22+
last = arr[i];
23+
ct = 1;
24+
}
25+
else
26+
return false;
27+
}
28+
++i;
29+
}
30+
31+
return true;
32+
}

src/1282.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
vector<vector<int>> groupThePeople(vector<int>& groupSizes) {
2+
int len = groupSizes.size();
3+
vector<vector<int>> res;
4+
map<int, vector<int>> mp;
5+
for (int i = 0; i < len; ++i)
6+
mp[groupSizes[i]].push_back(i);
7+
8+
for (auto iter = mp.begin(); iter != mp.end(); ++iter)
9+
{
10+
int sz = (iter->second).size();
11+
vector<int> tmp(iter->first, 0);
12+
for (int i = 0; i < sz; i += iter->first)
13+
{
14+
for (int j = i; j < i+iter->first; ++j)
15+
tmp[j-i] = (iter->second)[j];
16+
res.push_back(tmp);
17+
}
18+
}
19+
20+
return res;
21+
}

src/1287.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
int findSpecialInteger(vector<int>& arr) {
2+
int len = arr.size();
3+
if (len <= 3)
4+
return arr[0];
5+
int n = int(len*0.25)+1;
6+
int i = len-1;
7+
int j = len*0.25;
8+
while(i >= j)
9+
{
10+
if (arr[i] != arr[i-n+1])
11+
{
12+
auto iter = lower_bound(arr.begin()+i-n+1, arr.begin()+i+1, arr[i]);
13+
i = iter-1-arr.begin();
14+
}
15+
else
16+
break;
17+
}
18+
19+
return arr[i];
20+
}

src/5296.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
2+
vector<int> res;
3+
midtravel(root1, res);
4+
midtravel(root2, res);
5+
6+
sort(res.begin(), res.end());
7+
8+
return move(res);
9+
}
10+
11+
void midtravel(TreeNode* node, vector<int>& vec)
12+
{
13+
if (node != nullptr)
14+
{
15+
midtravel(node->left, vec);
16+
vec.push_back(node->val);
17+
midtravel(node->right, vec);
18+
}
19+
}

src/5297.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
bool canReach(vector<int>& arr, int start) {
2+
int len = arr.size();
3+
if (len == 1)
4+
return arr[0] == 0;
5+
vector<int> flag(len, 0);
6+
7+
return search(arr, start, len, flag);
8+
}
9+
10+
bool search(vector<int>& arr, int pos, int len, vector<int>& flag)
11+
{
12+
if (pos < 0 || pos >= len)
13+
return false;
14+
if (arr[pos] == 0)
15+
return true;
16+
if (flag[pos] == 1)
17+
return false;
18+
19+
flag[pos] = 1;
20+
int p1 = pos + arr[pos];
21+
int p2 = pos - arr[pos];
22+
return search(arr, p1, len, flag) || search(arr, p2, len, flag);
23+
}

src/912.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
vector<int> sortArray(vector<int>& nums) {
2+
sort(nums.begin(), nums.end());
3+
return move(nums);
4+
}

src/922.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
vector<int> sortArrayByParityII(vector<int>& A) {
2+
int len = A.size();
3+
int i = 0, j = len-1;
4+
while (i < j)
5+
{
6+
if ((i%2 == 0 && A[i]%2 == 0) || (i%2 == 1 && A[i]%2 == 1))
7+
++i;
8+
else
9+
{
10+
while ((j%2 == 0 && A[j]%2 == 0) || (j%2 == 1 && A[j]%2 == 1))
11+
--j;
12+
int t = j;
13+
while (i < t)
14+
{
15+
if ((i%2 == 0 && A[t]%2 == 0) || (i%2 == 1 && A[t]%2 == 1))
16+
{
17+
swap(A[i], A[t]);
18+
break;
19+
}
20+
else
21+
--t;
22+
}
23+
++i;
24+
}
25+
}
26+
27+
return move(A);
28+
}

0 commit comments

Comments
 (0)