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.
Files changed (42) hide show
  1. package/package.json +1 -1
  2. package/scripts/test_languages.sh +813 -0
  3. package/scripts/test_solutions/001_two_sum.c +15 -0
  4. package/scripts/test_solutions/001_two_sum.cpp +14 -0
  5. package/scripts/test_solutions/001_two_sum.js +11 -0
  6. package/scripts/test_solutions/001_two_sum.py +8 -0
  7. package/scripts/test_solutions/007_reverse_integer.c +9 -0
  8. package/scripts/test_solutions/007_reverse_integer.cpp +12 -0
  9. package/scripts/test_solutions/007_reverse_integer.js +12 -0
  10. package/scripts/test_solutions/007_reverse_integer.py +11 -0
  11. package/scripts/test_solutions/049_group_anagrams.c +14 -0
  12. package/scripts/test_solutions/049_group_anagrams.cpp +16 -0
  13. package/scripts/test_solutions/049_group_anagrams.js +9 -0
  14. package/scripts/test_solutions/049_group_anagrams.py +8 -0
  15. package/scripts/test_solutions/190_reverse_bits.c +8 -0
  16. package/scripts/test_solutions/190_reverse_bits.cpp +11 -0
  17. package/scripts/test_solutions/190_reverse_bits.js +8 -0
  18. package/scripts/test_solutions/190_reverse_bits.py +6 -0
  19. package/scripts/test_solutions/217_contains_duplicate.c +17 -0
  20. package/scripts/test_solutions/217_contains_duplicate.cpp +11 -0
  21. package/scripts/test_solutions/217_contains_duplicate.js +8 -0
  22. package/scripts/test_solutions/217_contains_duplicate.py +2 -0
  23. package/scripts/test_solutions/242_valid_anagram.c +14 -0
  24. package/scripts/test_solutions/242_valid_anagram.cpp +15 -0
  25. package/scripts/test_solutions/242_valid_anagram.js +10 -0
  26. package/scripts/test_solutions/242_valid_anagram.py +11 -0
  27. package/scripts/test_solutions/268_missing_number.c +7 -0
  28. package/scripts/test_solutions/268_missing_number.cpp +10 -0
  29. package/scripts/test_solutions/268_missing_number.js +8 -0
  30. package/scripts/test_solutions/268_missing_number.py +6 -0
  31. package/scripts/test_solutions/338_counting_bits.c +8 -0
  32. package/scripts/test_solutions/338_counting_bits.cpp +10 -0
  33. package/scripts/test_solutions/338_counting_bits.js +7 -0
  34. package/scripts/test_solutions/338_counting_bits.py +5 -0
  35. package/scripts/test_solutions/347_top_k_frequent.c +29 -0
  36. package/scripts/test_solutions/347_top_k_frequent.cpp +19 -0
  37. package/scripts/test_solutions/347_top_k_frequent.js +11 -0
  38. package/scripts/test_solutions/347_top_k_frequent.py +13 -0
  39. package/scripts/test_solutions/371_sum_of_two_integers.c +8 -0
  40. package/scripts/test_solutions/371_sum_of_two_integers.cpp +11 -0
  41. package/scripts/test_solutions/371_sum_of_two_integers.js +8 -0
  42. 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,11 @@
1
+ var twoSum = function(nums, target) {
2
+ const map = new Map();
3
+ for (let i = 0; i < nums.length; i++) {
4
+ const complement = target - nums[i];
5
+ if (map.has(complement)) {
6
+ return [map.get(complement), i];
7
+ }
8
+ map.set(nums[i], i);
9
+ }
10
+ return [];
11
+ };
@@ -0,0 +1,8 @@
1
+ def twoSum(nums, target):
2
+ seen = {}
3
+ for i, num in enumerate(nums):
4
+ complement = target - num
5
+ if complement in seen:
6
+ return [seen[complement], i]
7
+ seen[num] = i
8
+ return []
@@ -0,0 +1,9 @@
1
+ int reverse(int x) {
2
+ long result = 0;
3
+ while (x != 0) {
4
+ result = result * 10 + x % 10;
5
+ x /= 10;
6
+ }
7
+ if (result < INT_MIN || result > INT_MAX) return 0;
8
+ return (int)result;
9
+ }
@@ -0,0 +1,12 @@
1
+ class Solution {
2
+ public:
3
+ int reverse(int x) {
4
+ long result = 0;
5
+ while (x != 0) {
6
+ result = result * 10 + x % 10;
7
+ x /= 10;
8
+ }
9
+ if (result < INT_MIN || result > INT_MAX) return 0;
10
+ return (int)result;
11
+ }
12
+ };
@@ -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,11 @@
1
+ def reverse(x):
2
+ sign = -1 if x < 0 else 1
3
+ x = abs(x)
4
+ result = 0
5
+ while x > 0:
6
+ result = result * 10 + x % 10
7
+ x //= 10
8
+ result *= sign
9
+ if result < -(2**31) or result > 2**31 - 1:
10
+ return 0
11
+ return result
@@ -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,9 @@
1
+ var groupAnagrams = function(strs) {
2
+ const map = new Map();
3
+ for (const s of strs) {
4
+ const key = s.split('').sort().join('');
5
+ if (!map.has(key)) map.set(key, []);
6
+ map.get(key).push(s);
7
+ }
8
+ return Array.from(map.values());
9
+ };
@@ -0,0 +1,8 @@
1
+ def groupAnagrams(strs):
2
+ groups = {}
3
+ for s in strs:
4
+ key = ''.join(sorted(s))
5
+ if key not in groups:
6
+ groups[key] = []
7
+ groups[key].append(s)
8
+ return list(groups.values())
@@ -0,0 +1,8 @@
1
+ uint32_t reverseBits(uint32_t n) {
2
+ uint32_t result = 0;
3
+ for (int i = 0; i < 32; i++) {
4
+ result = (result << 1) | (n & 1);
5
+ n >>= 1;
6
+ }
7
+ return result;
8
+ }
@@ -0,0 +1,11 @@
1
+ class Solution {
2
+ public:
3
+ uint32_t reverseBits(uint32_t n) {
4
+ uint32_t result = 0;
5
+ for (int i = 0; i < 32; i++) {
6
+ result = (result << 1) | (n & 1);
7
+ n >>= 1;
8
+ }
9
+ return result;
10
+ }
11
+ };
@@ -0,0 +1,8 @@
1
+ var reverseBits = function(n) {
2
+ let result = 0;
3
+ for (let i = 0; i < 32; i++) {
4
+ result = (result << 1) | (n & 1);
5
+ n >>>= 1;
6
+ }
7
+ return result >>> 0;
8
+ };
@@ -0,0 +1,6 @@
1
+ def reverseBits(n):
2
+ result = 0
3
+ for _ in range(32):
4
+ result = (result << 1) | (n & 1)
5
+ n >>= 1
6
+ return result
@@ -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,11 @@
1
+ class Solution {
2
+ public:
3
+ bool containsDuplicate(vector<int>& nums) {
4
+ unordered_set<int> seen;
5
+ for (int num : nums) {
6
+ if (seen.count(num)) return true;
7
+ seen.insert(num);
8
+ }
9
+ return false;
10
+ }
11
+ };
@@ -0,0 +1,8 @@
1
+ var containsDuplicate = function(nums) {
2
+ const seen = new Set();
3
+ for (const num of nums) {
4
+ if (seen.has(num)) return true;
5
+ seen.add(num);
6
+ }
7
+ return false;
8
+ };
@@ -0,0 +1,2 @@
1
+ def containsDuplicate(nums):
2
+ return len(nums) != len(set(nums))
@@ -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,10 @@
1
+ var isAnagram = function(s, t) {
2
+ if (s.length !== t.length) return false;
3
+ const count = {};
4
+ for (const c of s) count[c] = (count[c] || 0) + 1;
5
+ for (const c of t) {
6
+ if (!count[c]) return false;
7
+ count[c]--;
8
+ }
9
+ return true;
10
+ };
@@ -0,0 +1,11 @@
1
+ def isAnagram(s, t):
2
+ if len(s) != len(t):
3
+ return False
4
+ count = {}
5
+ for c in s:
6
+ count[c] = count.get(c, 0) + 1
7
+ for c in t:
8
+ if c not in count or count[c] == 0:
9
+ return False
10
+ count[c] -= 1
11
+ return True
@@ -0,0 +1,7 @@
1
+ int missingNumber(int* nums, int numsSize) {
2
+ int xorVal = numsSize;
3
+ for (int i = 0; i < numsSize; i++) {
4
+ xorVal ^= i ^ nums[i];
5
+ }
6
+ return xorVal;
7
+ }
@@ -0,0 +1,10 @@
1
+ class Solution {
2
+ public:
3
+ int missingNumber(vector<int>& nums) {
4
+ int xorVal = nums.size();
5
+ for (int i = 0; i < nums.size(); i++) {
6
+ xorVal ^= i ^ nums[i];
7
+ }
8
+ return xorVal;
9
+ }
10
+ };
@@ -0,0 +1,8 @@
1
+ var missingNumber = function(nums) {
2
+ const n = nums.length;
3
+ let xor = n;
4
+ for (let i = 0; i < n; i++) {
5
+ xor ^= i ^ nums[i];
6
+ }
7
+ return xor;
8
+ };
@@ -0,0 +1,6 @@
1
+ def missingNumber(nums):
2
+ n = len(nums)
3
+ xor = n
4
+ for i in range(n):
5
+ xor ^= i ^ nums[i]
6
+ return xor
@@ -0,0 +1,8 @@
1
+ int* countBits(int n, int* returnSize) {
2
+ *returnSize = n + 1;
3
+ int* ans = (int*)calloc(n + 1, sizeof(int));
4
+ for (int i = 1; i <= n; i++) {
5
+ ans[i] = ans[i >> 1] + (i & 1);
6
+ }
7
+ return ans;
8
+ }
@@ -0,0 +1,10 @@
1
+ class Solution {
2
+ public:
3
+ vector<int> countBits(int n) {
4
+ vector<int> ans(n + 1, 0);
5
+ for (int i = 1; i <= n; i++) {
6
+ ans[i] = ans[i >> 1] + (i & 1);
7
+ }
8
+ return ans;
9
+ }
10
+ };
@@ -0,0 +1,7 @@
1
+ var countBits = function(n) {
2
+ const ans = new Array(n + 1).fill(0);
3
+ for (let i = 1; i <= n; i++) {
4
+ ans[i] = ans[i >> 1] + (i & 1);
5
+ }
6
+ return ans;
7
+ };
@@ -0,0 +1,5 @@
1
+ def countBits(n):
2
+ ans = [0] * (n + 1)
3
+ for i in range(1, n + 1):
4
+ ans[i] = ans[i >> 1] + (i & 1)
5
+ return ans
@@ -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]
@@ -0,0 +1,8 @@
1
+ int getSum(int a, int b) {
2
+ while (b != 0) {
3
+ unsigned carry = (unsigned)(a & b) << 1;
4
+ a = a ^ b;
5
+ b = carry;
6
+ }
7
+ return a;
8
+ }
@@ -0,0 +1,11 @@
1
+ class Solution {
2
+ public:
3
+ int getSum(int a, int b) {
4
+ while (b != 0) {
5
+ unsigned carry = (unsigned)(a & b) << 1;
6
+ a = a ^ b;
7
+ b = carry;
8
+ }
9
+ return a;
10
+ }
11
+ };
@@ -0,0 +1,8 @@
1
+ var getSum = function(a, b) {
2
+ while (b !== 0) {
3
+ const carry = (a & b) << 1;
4
+ a = a ^ b;
5
+ b = carry;
6
+ }
7
+ return a;
8
+ };
@@ -0,0 +1,8 @@
1
+ def getSum(a, b):
2
+ MASK = 0xFFFFFFFF
3
+ MAX_INT = 0x7FFFFFFF
4
+ while b != 0:
5
+ carry = ((a & b) << 1) & MASK
6
+ a = (a ^ b) & MASK
7
+ b = carry
8
+ return a if a <= MAX_INT else ~(a ^ MASK)