Skip to content

Commit d35da00

Browse files
committed
easy problems
1 parent 5e5d51f commit d35da00

15 files changed

+347
-0
lines changed

assign-cookies_1_AC.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#include <algorithm>
2+
using std::sort;
3+
4+
class Solution {
5+
public:
6+
int findContentChildren(vector<int>& g, vector<int>& s) {
7+
int ng = g.size();
8+
int ns = s.size();
9+
sort(g.begin(), g.end());
10+
sort(s.begin(), s.end());
11+
int i = 0;
12+
int j = 0;
13+
while (i < ns && j < ng) {
14+
if (s[i] >= g[j]) {
15+
++j;
16+
}
17+
++i;
18+
}
19+
return j;
20+
}
21+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode(int x) : val(x), next(NULL) {}
7+
* };
8+
*/
9+
class Solution {
10+
public:
11+
void deleteNode(ListNode* node) {
12+
// Except the tail node.
13+
// The value shall be deep-copied, or there will be problems.
14+
ListNode* ptr = node->next;
15+
node->val = ptr->val;
16+
node->next = ptr->next;
17+
delete ptr;
18+
}
19+
};

excel-sheet-column-number_1_AC.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
int titleToNumber(string s) {
4+
const int R = 26;
5+
int res = 1;
6+
int i;
7+
int n = s.size();
8+
int b = 1;
9+
10+
for (i = 1; i < n; ++i) {
11+
b *= R;
12+
res += b;
13+
}
14+
b = 0;
15+
for (i = 0; i < n; ++i) {
16+
b = b * R + (s[i] - 'A');
17+
}
18+
res += b;
19+
return res;
20+
}
21+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include <cstring>
2+
using std::memset;
3+
4+
class Solution {
5+
public:
6+
int firstUniqChar(string s) {
7+
// Only lowercase letters.
8+
const int DICT_SIZE = 26;
9+
int idx[DICT_SIZE];
10+
memset(idx, -1, DICT_SIZE * sizeof(int));
11+
12+
int i;
13+
int n = s.size();
14+
const int DUP = -2; // For "duplicated".
15+
for (i = 0; i < n; ++i) {
16+
if (idx[s[i] - 'a'] == -1) {
17+
idx[s[i] - 'a'] = i;
18+
} else {
19+
idx[s[i] - 'a'] = DUP;
20+
}
21+
}
22+
int res = -1;
23+
for (i = 0; i < DICT_SIZE; ++i) {
24+
if (idx[i] < 0) {
25+
continue;
26+
}
27+
if (res == -1 || res > idx[i]) {
28+
res = idx[i];
29+
}
30+
}
31+
return res;
32+
}
33+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include <unordered_set>
2+
using std::unordered_set;
3+
4+
class Solution {
5+
public:
6+
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
7+
int n1 = nums1.size();
8+
int n2 = nums2.size();
9+
if (n1 > n2) {
10+
return intersection(nums2, nums1);
11+
}
12+
13+
vector<int> res;
14+
unordered_set<int> s1, s2;
15+
int i;
16+
for (i = 0; i < n1; ++i) {
17+
s1.insert(nums1[i]);
18+
}
19+
for (i = 0; i < n2; ++i) {
20+
s2.insert(nums2[i]);
21+
}
22+
unordered_set<int>::const_iterator it;
23+
for (it = s1.begin(); it != s1.end(); ++it) {
24+
if (s2.find(*it) != s2.end()) {
25+
res.push_back(*it);
26+
}
27+
}
28+
s1.clear();
29+
s2.clear();
30+
return res;
31+
}
32+
};

invert-binary-tree_1_AC.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include <algorithm>
2+
using std::swap;
3+
/**
4+
* Definition for a binary tree node.
5+
* struct TreeNode {
6+
* int val;
7+
* TreeNode *left;
8+
* TreeNode *right;
9+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
TreeNode* invertTree(TreeNode* root) {
15+
if (root == NULL) {
16+
return root;
17+
}
18+
swap(root->left, root->right);
19+
invertTree(root->left);
20+
invertTree(root->right);
21+
return root;
22+
}
23+
};

majority-element_1_AC.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int majorityElement(vector<int> &nums) {
4+
vector<int> &a = nums;
5+
int n = a.size();
6+
7+
int i, res = a[0], cnt = 1;
8+
for (i = 1; i < n; ++i) {
9+
res == a[i] ? ++cnt : (cnt == 1 ? res = a[i] : --cnt);
10+
}
11+
12+
// Majority element is guaranteed to exist, so skip the checking.
13+
return res;
14+
}
15+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#include <algorithm>
2+
using std::min;
3+
4+
class Solution {
5+
public:
6+
int minMoves(vector<int>& nums) {
7+
int n = nums.size();
8+
if (n == 0) {
9+
return 0;
10+
}
11+
int min_val = nums[0];
12+
int i;
13+
for (i = 1; i < n; ++i) {
14+
min_val = min(min_val, nums[i]);
15+
}
16+
int res = 0;
17+
for (i = 0; i < n; ++i) {
18+
res += nums[i] - min_val;
19+
}
20+
return res;
21+
}
22+
};

move-zeroes_1_AC.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public:
3+
void moveZeroes(vector<int>& nums) {
4+
int n = nums.size();
5+
int i, j;
6+
i = j = 0;
7+
while (i < n) {
8+
if (nums[i] != 0) {
9+
nums[j++] = nums[i];
10+
}
11+
++i;
12+
}
13+
while (j < n) {
14+
nums[j++] = 0;
15+
}
16+
}
17+
};

ransom-note_1_AC.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <cstring>
2+
using std::memset;
3+
4+
class Solution {
5+
public:
6+
bool canConstruct(string ransomNote, string magazine) {
7+
const int DICT_SIZE = 26;
8+
int cnt[DICT_SIZE];
9+
memset(cnt, 0, DICT_SIZE * sizeof(int));
10+
11+
int nr = ransomNote.size();
12+
int i;
13+
for (i = 0; i < nr; ++i) {
14+
--cnt[ransomNote[i] - 'a'];
15+
}
16+
int nm = magazine.size();
17+
for (i = 0; i < nm; ++i) {
18+
++cnt[magazine[i] - 'a'];
19+
}
20+
for (i = 0; i < DICT_SIZE; ++i) {
21+
if (cnt[i] < 0) {
22+
return false;
23+
}
24+
}
25+
return true;
26+
}
27+
};

0 commit comments

Comments
 (0)