leet-tui 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/scripts/test_languages.sh +813 -0
- package/scripts/test_solutions/001_two_sum.c +15 -0
- package/scripts/test_solutions/001_two_sum.cpp +14 -0
- package/scripts/test_solutions/001_two_sum.js +11 -0
- package/scripts/test_solutions/001_two_sum.py +8 -0
- package/scripts/test_solutions/007_reverse_integer.c +9 -0
- package/scripts/test_solutions/007_reverse_integer.cpp +12 -0
- package/scripts/test_solutions/007_reverse_integer.js +12 -0
- package/scripts/test_solutions/007_reverse_integer.py +11 -0
- package/scripts/test_solutions/049_group_anagrams.c +14 -0
- package/scripts/test_solutions/049_group_anagrams.cpp +16 -0
- package/scripts/test_solutions/049_group_anagrams.js +9 -0
- package/scripts/test_solutions/049_group_anagrams.py +8 -0
- package/scripts/test_solutions/190_reverse_bits.c +8 -0
- package/scripts/test_solutions/190_reverse_bits.cpp +11 -0
- package/scripts/test_solutions/190_reverse_bits.js +8 -0
- package/scripts/test_solutions/190_reverse_bits.py +6 -0
- package/scripts/test_solutions/217_contains_duplicate.c +17 -0
- package/scripts/test_solutions/217_contains_duplicate.cpp +11 -0
- package/scripts/test_solutions/217_contains_duplicate.js +8 -0
- package/scripts/test_solutions/217_contains_duplicate.py +2 -0
- package/scripts/test_solutions/242_valid_anagram.c +14 -0
- package/scripts/test_solutions/242_valid_anagram.cpp +15 -0
- package/scripts/test_solutions/242_valid_anagram.js +10 -0
- package/scripts/test_solutions/242_valid_anagram.py +11 -0
- package/scripts/test_solutions/268_missing_number.c +7 -0
- package/scripts/test_solutions/268_missing_number.cpp +10 -0
- package/scripts/test_solutions/268_missing_number.js +8 -0
- package/scripts/test_solutions/268_missing_number.py +6 -0
- package/scripts/test_solutions/338_counting_bits.c +8 -0
- package/scripts/test_solutions/338_counting_bits.cpp +10 -0
- package/scripts/test_solutions/338_counting_bits.js +7 -0
- package/scripts/test_solutions/338_counting_bits.py +5 -0
- package/scripts/test_solutions/347_top_k_frequent.c +29 -0
- package/scripts/test_solutions/347_top_k_frequent.cpp +19 -0
- package/scripts/test_solutions/347_top_k_frequent.js +11 -0
- package/scripts/test_solutions/347_top_k_frequent.py +13 -0
- package/scripts/test_solutions/371_sum_of_two_integers.c +8 -0
- package/scripts/test_solutions/371_sum_of_two_integers.cpp +11 -0
- package/scripts/test_solutions/371_sum_of_two_integers.js +8 -0
- package/scripts/test_solutions/371_sum_of_two_integers.py +8 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
|
|
2
|
+
*returnSize = 2;
|
|
3
|
+
int* result = (int*)malloc(2 * sizeof(int));
|
|
4
|
+
for (int i = 0; i < numsSize; i++) {
|
|
5
|
+
for (int j = i + 1; j < numsSize; j++) {
|
|
6
|
+
if (nums[i] + nums[j] == target) {
|
|
7
|
+
result[0] = i;
|
|
8
|
+
result[1] = j;
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
*returnSize = 0;
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class Solution {
|
|
2
|
+
public:
|
|
3
|
+
vector<int> twoSum(vector<int>& nums, int target) {
|
|
4
|
+
unordered_map<int, int> seen;
|
|
5
|
+
for (int i = 0; i < nums.size(); i++) {
|
|
6
|
+
int complement = target - nums[i];
|
|
7
|
+
if (seen.count(complement)) {
|
|
8
|
+
return {seen[complement], i};
|
|
9
|
+
}
|
|
10
|
+
seen[nums[i]] = i;
|
|
11
|
+
}
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
var reverse = function(x) {
|
|
2
|
+
const sign = x < 0 ? -1 : 1;
|
|
3
|
+
let result = 0;
|
|
4
|
+
x = Math.abs(x);
|
|
5
|
+
while (x > 0) {
|
|
6
|
+
result = result * 10 + (x % 10);
|
|
7
|
+
x = Math.floor(x / 10);
|
|
8
|
+
}
|
|
9
|
+
result *= sign;
|
|
10
|
+
if (result < -(2**31) || result > 2**31 - 1) return 0;
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Note: C implementation requires complex memory management
|
|
2
|
+
// This is a simplified version for reference
|
|
3
|
+
char*** groupAnagrams(char** strs, int strsSize, int* returnSize, int** returnColumnSizes) {
|
|
4
|
+
// Simplified: return input as single group for testing scaffold
|
|
5
|
+
*returnSize = strsSize;
|
|
6
|
+
*returnColumnSizes = (int*)malloc(strsSize * sizeof(int));
|
|
7
|
+
char*** result = (char***)malloc(strsSize * sizeof(char**));
|
|
8
|
+
for (int i = 0; i < strsSize; i++) {
|
|
9
|
+
result[i] = (char**)malloc(sizeof(char*));
|
|
10
|
+
result[i][0] = strs[i];
|
|
11
|
+
(*returnColumnSizes)[i] = 1;
|
|
12
|
+
}
|
|
13
|
+
return result;
|
|
14
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Solution {
|
|
2
|
+
public:
|
|
3
|
+
vector<vector<string>> groupAnagrams(vector<string>& strs) {
|
|
4
|
+
unordered_map<string, vector<string>> groups;
|
|
5
|
+
for (const string& s : strs) {
|
|
6
|
+
string key = s;
|
|
7
|
+
sort(key.begin(), key.end());
|
|
8
|
+
groups[key].push_back(s);
|
|
9
|
+
}
|
|
10
|
+
vector<vector<string>> result;
|
|
11
|
+
for (auto& [key, group] : groups) {
|
|
12
|
+
result.push_back(group);
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
int compare(const void* a, const void* b) {
|
|
2
|
+
return (*(int*)a - *(int*)b);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
bool containsDuplicate(int* nums, int numsSize) {
|
|
6
|
+
int* sorted = (int*)malloc(numsSize * sizeof(int));
|
|
7
|
+
memcpy(sorted, nums, numsSize * sizeof(int));
|
|
8
|
+
qsort(sorted, numsSize, sizeof(int), compare);
|
|
9
|
+
for (int i = 1; i < numsSize; i++) {
|
|
10
|
+
if (sorted[i] == sorted[i-1]) {
|
|
11
|
+
free(sorted);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
free(sorted);
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
bool isAnagram(char* s, char* t) {
|
|
2
|
+
int count[26] = {0};
|
|
3
|
+
int sLen = strlen(s);
|
|
4
|
+
int tLen = strlen(t);
|
|
5
|
+
if (sLen != tLen) return false;
|
|
6
|
+
for (int i = 0; i < sLen; i++) {
|
|
7
|
+
count[s[i] - 'a']++;
|
|
8
|
+
count[t[i] - 'a']--;
|
|
9
|
+
}
|
|
10
|
+
for (int i = 0; i < 26; i++) {
|
|
11
|
+
if (count[i] != 0) return false;
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class Solution {
|
|
2
|
+
public:
|
|
3
|
+
bool isAnagram(string s, string t) {
|
|
4
|
+
if (s.length() != t.length()) return false;
|
|
5
|
+
int count[26] = {0};
|
|
6
|
+
for (int i = 0; i < s.length(); i++) {
|
|
7
|
+
count[s[i] - 'a']++;
|
|
8
|
+
count[t[i] - 'a']--;
|
|
9
|
+
}
|
|
10
|
+
for (int i = 0; i < 26; i++) {
|
|
11
|
+
if (count[i] != 0) return false;
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
typedef struct { int num; int count; } Pair;
|
|
2
|
+
|
|
3
|
+
int cmpPair(const void* a, const void* b) {
|
|
4
|
+
return ((Pair*)b)->count - ((Pair*)a)->count;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
int* topKFrequent(int* nums, int numsSize, int k, int* returnSize) {
|
|
8
|
+
Pair* pairs = (Pair*)calloc(20001, sizeof(Pair));
|
|
9
|
+
int uniqueCount = 0;
|
|
10
|
+
for (int i = 0; i < numsSize; i++) {
|
|
11
|
+
int idx = nums[i] + 10000;
|
|
12
|
+
if (pairs[idx].count == 0) {
|
|
13
|
+
pairs[idx].num = nums[i];
|
|
14
|
+
uniqueCount++;
|
|
15
|
+
}
|
|
16
|
+
pairs[idx].count++;
|
|
17
|
+
}
|
|
18
|
+
Pair* sorted = (Pair*)malloc(uniqueCount * sizeof(Pair));
|
|
19
|
+
int j = 0;
|
|
20
|
+
for (int i = 0; i < 20001; i++) {
|
|
21
|
+
if (pairs[i].count > 0) sorted[j++] = pairs[i];
|
|
22
|
+
}
|
|
23
|
+
qsort(sorted, uniqueCount, sizeof(Pair), cmpPair);
|
|
24
|
+
*returnSize = k;
|
|
25
|
+
int* result = (int*)malloc(k * sizeof(int));
|
|
26
|
+
for (int i = 0; i < k; i++) result[i] = sorted[i].num;
|
|
27
|
+
free(pairs); free(sorted);
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class Solution {
|
|
2
|
+
public:
|
|
3
|
+
vector<int> topKFrequent(vector<int>& nums, int k) {
|
|
4
|
+
unordered_map<int, int> freq;
|
|
5
|
+
for (int n : nums) freq[n]++;
|
|
6
|
+
vector<vector<int>> bucket(nums.size() + 1);
|
|
7
|
+
for (auto& [num, count] : freq) {
|
|
8
|
+
bucket[count].push_back(num);
|
|
9
|
+
}
|
|
10
|
+
vector<int> result;
|
|
11
|
+
for (int i = bucket.size() - 1; i >= 0 && result.size() < k; i--) {
|
|
12
|
+
for (int num : bucket[i]) {
|
|
13
|
+
result.push_back(num);
|
|
14
|
+
if (result.size() == k) break;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var topKFrequent = function(nums, k) {
|
|
2
|
+
const freq = new Map();
|
|
3
|
+
for (const n of nums) freq.set(n, (freq.get(n) || 0) + 1);
|
|
4
|
+
const bucket = Array.from({length: nums.length + 1}, () => []);
|
|
5
|
+
for (const [num, count] of freq) bucket[count].push(num);
|
|
6
|
+
const result = [];
|
|
7
|
+
for (let i = bucket.length - 1; i >= 0 && result.length < k; i--) {
|
|
8
|
+
result.push(...bucket[i]);
|
|
9
|
+
}
|
|
10
|
+
return result.slice(0, k);
|
|
11
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
def topKFrequent(nums, k):
|
|
2
|
+
freq = {}
|
|
3
|
+
for n in nums:
|
|
4
|
+
freq[n] = freq.get(n, 0) + 1
|
|
5
|
+
bucket = [[] for _ in range(len(nums) + 1)]
|
|
6
|
+
for num, count in freq.items():
|
|
7
|
+
bucket[count].append(num)
|
|
8
|
+
result = []
|
|
9
|
+
for i in range(len(bucket) - 1, -1, -1):
|
|
10
|
+
result.extend(bucket[i])
|
|
11
|
+
if len(result) >= k:
|
|
12
|
+
break
|
|
13
|
+
return result[:k]
|