Skip to content

Commit 243fef6

Browse files
committed
12 problems solved.
1 parent 4e67506 commit 243fef6

File tree

12 files changed

+245
-0
lines changed

12 files changed

+245
-0
lines changed

src/1114.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Foo {
2+
public:
3+
Foo() {
4+
flag1 = 0;
5+
flag2 = 0;
6+
}
7+
8+
void first(function<void()> printFirst) {
9+
10+
// printFirst() outputs "first". Do not change or remove this line.
11+
printFirst();
12+
flag1 = 1;
13+
}
14+
15+
void second(function<void()> printSecond) {
16+
17+
// printSecond() outputs "second". Do not change or remove this line.
18+
while (flag1 == 0)
19+
;
20+
printSecond();
21+
flag2 = 1;
22+
}
23+
24+
void third(function<void()> printThird) {
25+
26+
// printThird() outputs "third". Do not change or remove this line.
27+
while (flag2 == 0)
28+
;
29+
printThird();
30+
}
31+
private:
32+
volatile int flag1;
33+
volatile int flag2;
34+
};

src/1418.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
vector<vector<string>> displayTable(vector<vector<string>>& orders) {
2+
int len = orders.size();
3+
map<int, map<string,int>> mp;
4+
set<string> st;
5+
6+
for (int i = 0; i < len; ++i)
7+
{
8+
mp[atoi(orders[i][1].c_str())][orders[i][2]]++;
9+
st.insert(orders[i][2]);
10+
}
11+
12+
int reslen = mp.size()+1;
13+
int foodnum = st.size();
14+
vector<vector<string>> res(reslen, vector<string>(foodnum+1, "0"));
15+
res[0][0] = "Table";
16+
17+
int i = 1;
18+
for (auto iter = st.begin(); iter != st.end(); ++iter)
19+
{
20+
res[0][i++] = *iter;
21+
}
22+
23+
i = 1;
24+
for (auto iter = mp.begin(); iter != mp.end(); ++iter)
25+
{
26+
res[i][0] = to_string(iter->first);
27+
int j = 1;
28+
for (auto iterJ = st.begin(); iterJ != st.end(); ++iterJ)
29+
{
30+
if ((iter->second).find(*iterJ) == iter->second.end())
31+
res[i][j++] = "0";
32+
else
33+
res[i][j++] = to_string((iter->second)[*iterJ]);
34+
}
35+
++i;
36+
}
37+
38+
return res;
39+
}

src/1913.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
int maxProductDifference(vector<int>& nums) {
2+
sort(nums.begin(), nums.end());
3+
int len = nums.size();
4+
5+
return nums[len-1]*nums[len-2] - nums[0]*nums[1];
6+
}

src/1929.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
vector<int> getConcatenation(vector<int>& nums) {
2+
int len = nums.size();
3+
vector<int> res(2*len);
4+
res.assign(nums.begin(), nums.end());
5+
res.insert(res.end(), nums.begin(), nums.end());
6+
7+
return res;
8+
}

src/1935.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
int canBeTypedWords(string text, string brokenLetters) {
2+
int flag[26] = {0};
3+
int len = brokenLetters.size();
4+
for (int i = 0; i < len; ++i)
5+
{
6+
flag[brokenLetters[i]-'a'] = 1;
7+
}
8+
9+
int textlen = text.size();
10+
int res = 0;
11+
int i = 0;
12+
bool isbroke = false;
13+
while (i < textlen)
14+
{
15+
if (text[i] == ' ')
16+
{
17+
if (isbroke == false)
18+
++res;
19+
isbroke = false;
20+
}
21+
else if (!isbroke && flag[text[i]-'a'] == 1)
22+
{
23+
isbroke = true;
24+
}
25+
++i;
26+
}
27+
if (isbroke == false)
28+
++res;
29+
30+
return res;
31+
}

src/1941.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
bool areOccurrencesEqual(string s) {
2+
int counts[26] = {0};
3+
int len = s.size();
4+
for (int i = 0; i < len; ++i)
5+
{
6+
++counts[s[i]-'a'];
7+
}
8+
9+
int num = 0;
10+
for (int i = 0; i < 26; ++i)
11+
{
12+
if (counts[i] > 0)
13+
{
14+
if (num == 0)
15+
num = counts[i];
16+
else if (counts[i] != num)
17+
return false;
18+
}
19+
}
20+
21+
return true;
22+
}

src/1967.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
int numOfStrings(vector<string>& patterns, string word) {
2+
int len = patterns.size();
3+
int res = 0;
4+
for (int i = 0; i < len; ++i)
5+
{
6+
if (word.find(patterns[i]) != string::npos)
7+
++res;
8+
}
9+
10+
return res;
11+
}

src/1979.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
int findGCD(vector<int>& nums) {
2+
int len = nums.size();
3+
int minval = nums[0], maxval = nums[0];
4+
for (int i = 1; i < len; ++i)
5+
{
6+
if (nums[i] < minval)
7+
minval = nums[i];
8+
if (nums[i] > maxval)
9+
maxval = nums[i];
10+
}
11+
12+
return gcd(minval, maxval);
13+
}
14+
15+
int gcd(int a, int b)
16+
{
17+
if (a > b)
18+
{
19+
int tmp = a;
20+
a = b;
21+
b = tmp;
22+
}
23+
24+
if (b%a == 0)
25+
return a;
26+
else
27+
{
28+
b %= a;
29+
return gcd(b, a);
30+
}
31+
}

src/1991.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
int findMiddleIndex(vector<int>& nums) {
2+
int len = nums.size();
3+
vector<int> subsum(len+1, 0);
4+
int sum = 0;
5+
subsum[0] = 0;
6+
for (int i = 1; i < len+1; ++i)
7+
{
8+
sum += nums[i-1];
9+
subsum[i] = sum;
10+
}
11+
12+
int tmp = subsum[len];
13+
for (int i = 0; i < len; ++i)
14+
{
15+
if (subsum[i] == tmp-nums[i])
16+
return i;
17+
tmp -= nums[i];
18+
}
19+
20+
return -1;
21+
}

src/2000.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
string reversePrefix(string word, char ch) {
2+
int index = word.find(ch);
3+
if (index != string::npos)
4+
{
5+
int i = 0, j = index;
6+
while (i < j)
7+
{
8+
swap(word[i], word[j]);
9+
++i;
10+
--j;
11+
}
12+
}
13+
14+
return word;
15+
}

src/2006.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
int countKDifference(vector<int>& nums, int k) {
2+
int res = 0;
3+
int len = nums.size();
4+
for (int i = 0; i < len-1; ++i)
5+
{
6+
for (int j = i+1; j < len; ++j)
7+
{
8+
if (abs(nums[i]-nums[j]) == k)
9+
++res;
10+
}
11+
}
12+
13+
return res;
14+
}

src/2011.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
int finalValueAfterOperations(vector<string>& operations) {
2+
int len = operations.size();
3+
int result = 0;
4+
for (int i = 0; i < len; ++i)
5+
{
6+
if (operations[i].find('+') != string::npos)
7+
++result;
8+
else
9+
--result;
10+
}
11+
12+
return result;
13+
}

0 commit comments

Comments
 (0)