|
9 | 9 | "language": "rust", |
10 | 10 | "snippet": "fn binary_search(nums: &[i32], target: i32) -> Option<usize> {\n let mut lo = 0;\n let mut hi = nums.len();\n while lo < hi {\n let mid = (lo + hi) / 2;\n if nums[mid] == target {\n return Some(mid);\n } else if nums[mid] < target {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n None\n}" |
11 | 11 | }, |
| 12 | + { |
| 13 | + "id": "factorial", |
| 14 | + "language": "rust", |
| 15 | + "snippet": "fn factorial(n: u64) -> u64 {\n match n {\n 0 | 1 => 1,\n _ => n * factorial(n - 1),\n }\n}" |
| 16 | + }, |
| 17 | + { |
| 18 | + "id": "is_palindrome", |
| 19 | + "language": "rust", |
| 20 | + "snippet": "fn is_palindrome(s: &str) -> bool {\n let cleaned: Vec<char> = s\n .chars()\n .filter(|c| c.is_alphanumeric())\n .map(|c| c.to_ascii_lowercase())\n .collect();\n let mut left = 0;\n let mut right = cleaned.len().saturating_sub(1);\n while left < right {\n if cleaned[left] != cleaned[right] {\n return false;\n }\n left += 1;\n right -= 1;\n }\n true\n}" |
| 21 | + }, |
| 22 | + { |
| 23 | + "id": "reverse_string", |
| 24 | + "language": "rust", |
| 25 | + "snippet": "fn reverse_string(s: &str) -> String {\n s.chars().rev().collect()\n}" |
| 26 | + }, |
| 27 | + { |
| 28 | + "id": "find_max", |
| 29 | + "language": "rust", |
| 30 | + "snippet": "fn find_max(nums: &[i32]) -> Option<i32> {\n nums.iter().max().copied()\n}" |
| 31 | + }, |
| 32 | + { |
| 33 | + "id": "fizzbuzz", |
| 34 | + "language": "rust", |
| 35 | + "snippet": "fn fizzbuzz(n: u32) -> Vec<String> {\n (1..=n)\n .map(|i| match (i % 3, i % 5) {\n (0, 0) => \"FizzBuzz\".to_string(),\n (0, _) => \"Fizz\".to_string(),\n (_, 0) => \"Buzz\".to_string(),\n _ => i.to_string(),\n })\n .collect()\n}" |
| 36 | + }, |
| 37 | + { |
| 38 | + "id": "gcd", |
| 39 | + "language": "rust", |
| 40 | + "snippet": "fn gcd(mut a: u64, mut b: u64) -> u64 {\n while b != 0 {\n let temp = b;\n b = a % b;\n a = temp;\n }\n a\n}" |
| 41 | + }, |
| 42 | + { |
| 43 | + "id": "is_prime", |
| 44 | + "language": "rust", |
| 45 | + "snippet": "fn is_prime(n: u64) -> bool {\n if n < 2 {\n return false;\n }\n for i in 2..=(n as f64).sqrt() as u64 {\n if n % i == 0 {\n return false;\n }\n }\n true\n}" |
| 46 | + }, |
| 47 | + { |
| 48 | + "id": "count_vowels", |
| 49 | + "language": "rust", |
| 50 | + "snippet": "fn count_vowels(s: &str) -> usize {\n s.chars()\n .filter(|&c| matches!(c.to_ascii_lowercase(), 'a' | 'e' | 'i' | 'o' | 'u'))\n .count()\n}" |
| 51 | + }, |
| 52 | + { |
| 53 | + "id": "sum_array", |
| 54 | + "language": "rust", |
| 55 | + "snippet": "fn sum_array(nums: &[i32]) -> i32 {\n nums.iter().sum()\n}" |
| 56 | + }, |
12 | 57 | { |
13 | 58 | "id": "two_sum", |
14 | 59 | "language": "typescript", |
15 | 60 | "snippet": "export function twoSum(nums: number[], target: number): [number, number] | null {\n const seen = new Map<number, number>();\n for (let i = 0; i < nums.length; i += 1) {\n const complement = target - nums[i];\n const match = seen.get(complement);\n if (match != null) {\n return [match, i];\n }\n seen.set(nums[i], i);\n }\n return null;\n}" |
16 | 61 | }, |
17 | 62 | { |
18 | | - "id": "merge_sort", |
19 | | - "language": "python", |
20 | | - "snippet": "def merge_sort(values: list[int]) -> list[int]:\n if len(values) <= 1:\n return values\n mid = len(values) // 2\n left = merge_sort(values[:mid])\n right = merge_sort(values[mid:])\n return merge(left, right)\n\n\ndef merge(left: list[int], right: list[int]) -> list[int]:\n result: list[int] = []\n i = j = 0\n while i < len(left) and j < len(right):\n if left[i] <= right[j]:\n result.append(left[i])\n i += 1\n else:\n result.append(right[j])\n j += 1\n result.extend(left[i:])\n result.extend(right[j:])\n return result" |
| 63 | + "id": "fibonacci", |
| 64 | + "language": "typescript", |
| 65 | + "snippet": "export function fibonacci(n: number): number {\n if (n <= 1) {\n return n;\n }\n let a = 0;\n let b = 1;\n for (let i = 2; i <= n; i += 1) {\n const temp = a + b;\n a = b;\n b = temp;\n }\n return b;\n}" |
21 | 66 | }, |
22 | 67 | { |
23 | | - "id": "dijkstra", |
24 | | - "language": "go", |
25 | | - "snippet": "func Dijkstra(graph map[string]map[string]int, source string) map[string]int {\n dist := make(map[string]int)\n visited := make(map[string]bool)\n for node := range graph {\n dist[node] = math.MaxInt\n }\n dist[source] = 0\n pq := &priorityQueue{}\n heap.Init(pq)\n heap.Push(pq, &item{node: source, cost: 0})\n\n for pq.Len() > 0 {\n current := heap.Pop(pq).(*item)\n if visited[current.node] {\n continue\n }\n visited[current.node] = true\n for neighbor, weight := range graph[current.node] {\n newDist := dist[current.node] + weight\n if newDist < dist[neighbor] {\n dist[neighbor] = newDist\n heap.Push(pq, &item{node: neighbor, cost: newDist})\n }\n }\n }\n return dist\n}" |
| 68 | + "id": "valid_parens", |
| 69 | + "language": "typescript", |
| 70 | + "snippet": "export function isValidParens(s: string): boolean {\n const stack: string[] = [];\n const pairs: Record<string, string> = { ')': '(', '}': '{', ']': '[' };\n for (const char of s) {\n if (char === '(' || char === '{' || char === '[') {\n stack.push(char);\n } else if (char in pairs) {\n if (stack.pop() !== pairs[char]) {\n return false;\n }\n }\n }\n return stack.length === 0;\n}" |
26 | 71 | }, |
27 | 72 | { |
28 | | - "id": "factorial", |
29 | | - "language": "rust", |
30 | | - "snippet": "fn factorial(n: u64) -> u64 {\n match n {\n 0 | 1 => 1,\n _ => n * factorial(n - 1),\n }\n}" |
| 73 | + "id": "capitalize_words", |
| 74 | + "language": "typescript", |
| 75 | + "snippet": "export function capitalizeWords(s: string): string {\n return s\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n}" |
31 | 76 | }, |
32 | 77 | { |
33 | | - "id": "is_palindrome", |
| 78 | + "id": "is_anagram", |
34 | 79 | "language": "typescript", |
35 | | - "snippet": "export function isPalindrome(s: string): boolean {\n const cleaned = s.toLowerCase().replace(/[^a-z0-9]/g, '');\n let left = 0;\n let right = cleaned.length - 1;\n while (left < right) {\n if (cleaned[left] !== cleaned[right]) {\n return false;\n }\n left += 1;\n right -= 1;\n }\n return true;\n}" |
| 80 | + "snippet": "export function isAnagram(s1: string, s2: string): boolean {\n if (s1.length !== s2.length) {\n return false;\n }\n const sorted1 = s1.split('').sort().join('');\n const sorted2 = s2.split('').sort().join('');\n return sorted1 === sorted2;\n}" |
36 | 81 | }, |
37 | 82 | { |
38 | | - "id": "fibonacci", |
| 83 | + "id": "chunk_array", |
| 84 | + "language": "typescript", |
| 85 | + "snippet": "export function chunkArray<T>(arr: T[], size: number): T[][] {\n const result: T[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size));\n }\n return result;\n}" |
| 86 | + }, |
| 87 | + { |
| 88 | + "id": "flatten_array", |
| 89 | + "language": "typescript", |
| 90 | + "snippet": "export function flattenArray<T>(arr: (T | T[])[]): T[] {\n return arr.reduce<T[]>((acc, val) => {\n return acc.concat(Array.isArray(val) ? flattenArray(val) : val);\n }, []);\n}" |
| 91 | + }, |
| 92 | + { |
| 93 | + "id": "unique_elements", |
| 94 | + "language": "typescript", |
| 95 | + "snippet": "export function uniqueElements<T>(arr: T[]): T[] {\n return Array.from(new Set(arr));\n}" |
| 96 | + }, |
| 97 | + { |
| 98 | + "id": "merge_arrays", |
| 99 | + "language": "typescript", |
| 100 | + "snippet": "export function mergeSortedArrays(arr1: number[], arr2: number[]): number[] {\n const result: number[] = [];\n let i = 0;\n let j = 0;\n while (i < arr1.length && j < arr2.length) {\n if (arr1[i] <= arr2[j]) {\n result.push(arr1[i]);\n i += 1;\n } else {\n result.push(arr2[j]);\n j += 1;\n }\n }\n return result.concat(arr1.slice(i)).concat(arr2.slice(j));\n}" |
| 101 | + }, |
| 102 | + { |
| 103 | + "id": "range", |
| 104 | + "language": "typescript", |
| 105 | + "snippet": "export function range(start: number, end: number, step = 1): number[] {\n const result: number[] = [];\n for (let i = start; i < end; i += step) {\n result.push(i);\n }\n return result;\n}" |
| 106 | + }, |
| 107 | + { |
| 108 | + "id": "quick_select", |
39 | 109 | "language": "python", |
40 | | - "snippet": "def fibonacci(n: int) -> int:\n if n <= 1:\n return n\n a, b = 0, 1\n for _ in range(2, n + 1):\n a, b = b, a + b\n return b" |
| 110 | + "snippet": "def quick_select(nums: list[int], k: int) -> int:\n pivot = nums[len(nums) // 2]\n left = [x for x in nums if x < pivot]\n mid = [x for x in nums if x == pivot]\n right = [x for x in nums if x > pivot]\n if k < len(left):\n return quick_select(left, k)\n elif k < len(left) + len(mid):\n return mid[0]\n else:\n return quick_select(right, k - len(left) - len(mid))" |
41 | 111 | }, |
42 | 112 | { |
43 | | - "id": "valid_parens", |
| 113 | + "id": "bubble_sort", |
| 114 | + "language": "python", |
| 115 | + "snippet": "def bubble_sort(nums: list[int]) -> list[int]:\n n = len(nums)\n for i in range(n):\n for j in range(0, n - i - 1):\n if nums[j] > nums[j + 1]:\n nums[j], nums[j + 1] = nums[j + 1], nums[j]\n return nums" |
| 116 | + }, |
| 117 | + { |
| 118 | + "id": "longest_common_prefix", |
| 119 | + "language": "python", |
| 120 | + "snippet": "def longest_common_prefix(strs: list[str]) -> str:\n if not strs:\n return ''\n prefix = strs[0]\n for s in strs[1:]:\n while not s.startswith(prefix):\n prefix = prefix[:-1]\n if not prefix:\n return ''\n return prefix" |
| 121 | + }, |
| 122 | + { |
| 123 | + "id": "remove_duplicates", |
| 124 | + "language": "python", |
| 125 | + "snippet": "def remove_duplicates(nums: list[int]) -> int:\n if not nums:\n return 0\n i = 0\n for j in range(1, len(nums)):\n if nums[j] != nums[i]:\n i += 1\n nums[i] = nums[j]\n return i + 1" |
| 126 | + }, |
| 127 | + { |
| 128 | + "id": "rotate_array", |
| 129 | + "language": "python", |
| 130 | + "snippet": "def rotate_array(nums: list[int], k: int) -> None:\n k = k % len(nums)\n nums[:] = nums[-k:] + nums[:-k]" |
| 131 | + }, |
| 132 | + { |
| 133 | + "id": "missing_number", |
| 134 | + "language": "python", |
| 135 | + "snippet": "def missing_number(nums: list[int]) -> int:\n n = len(nums)\n expected_sum = n * (n + 1) // 2\n actual_sum = sum(nums)\n return expected_sum - actual_sum" |
| 136 | + }, |
| 137 | + { |
| 138 | + "id": "power", |
| 139 | + "language": "python", |
| 140 | + "snippet": "def power(x: float, n: int) -> float:\n if n == 0:\n return 1.0\n if n < 0:\n x = 1 / x\n n = -n\n half = power(x, n // 2)\n if n % 2 == 0:\n return half * half\n else:\n return half * half * x" |
| 141 | + }, |
| 142 | + { |
| 143 | + "id": "digit_sum", |
| 144 | + "language": "python", |
| 145 | + "snippet": "def digit_sum(n: int) -> int:\n return sum(int(digit) for digit in str(abs(n)))" |
| 146 | + }, |
| 147 | + { |
| 148 | + "id": "is_perfect_square", |
| 149 | + "language": "python", |
| 150 | + "snippet": "def is_perfect_square(n: int) -> bool:\n if n < 0:\n return False\n left, right = 0, n\n while left <= right:\n mid = (left + right) // 2\n sq = mid * mid\n if sq == n:\n return True\n elif sq < n:\n left = mid + 1\n else:\n right = mid - 1\n return False" |
| 151 | + }, |
| 152 | + { |
| 153 | + "id": "string_compression", |
| 154 | + "language": "python", |
| 155 | + "snippet": "def compress_string(s: str) -> str:\n if not s:\n return s\n result = []\n count = 1\n for i in range(1, len(s)):\n if s[i] == s[i - 1]:\n count += 1\n else:\n result.append(s[i - 1] + str(count))\n count = 1\n result.append(s[-1] + str(count))\n compressed = ''.join(result)\n return compressed if len(compressed) < len(s) else s" |
| 156 | + }, |
| 157 | + { |
| 158 | + "id": "insertion_sort", |
| 159 | + "language": "go", |
| 160 | + "snippet": "func InsertionSort(nums []int) {\n for i := 1; i < len(nums); i++ {\n key := nums[i]\n j := i - 1\n for j >= 0 && nums[j] > key {\n nums[j+1] = nums[j]\n j--\n }\n nums[j+1] = key\n }\n}" |
| 161 | + }, |
| 162 | + { |
| 163 | + "id": "contains_duplicate", |
| 164 | + "language": "go", |
| 165 | + "snippet": "func ContainsDuplicate(nums []int) bool {\n seen := make(map[int]bool)\n for _, num := range nums {\n if seen[num] {\n return true\n }\n seen[num] = true\n }\n return false\n}" |
| 166 | + }, |
| 167 | + { |
| 168 | + "id": "reverse_words", |
| 169 | + "language": "go", |
| 170 | + "snippet": "func ReverseWords(s string) string {\n words := strings.Fields(s)\n for i, j := 0, len(words)-1; i < j; i, j = i+1, j-1 {\n words[i], words[j] = words[j], words[i]\n }\n return strings.Join(words, \" \")\n}" |
| 171 | + }, |
| 172 | + { |
| 173 | + "id": "max_subarray_sum", |
| 174 | + "language": "go", |
| 175 | + "snippet": "func MaxSubarraySum(nums []int) int {\n maxSum := nums[0]\n currentSum := nums[0]\n for i := 1; i < len(nums); i++ {\n currentSum = max(nums[i], currentSum+nums[i])\n maxSum = max(maxSum, currentSum)\n }\n return maxSum\n}" |
| 176 | + }, |
| 177 | + { |
| 178 | + "id": "product_except_self", |
| 179 | + "language": "go", |
| 180 | + "snippet": "func ProductExceptSelf(nums []int) []int {\n n := len(nums)\n result := make([]int, n)\n result[0] = 1\n for i := 1; i < n; i++ {\n result[i] = result[i-1] * nums[i-1]\n }\n right := 1\n for i := n - 1; i >= 0; i-- {\n result[i] *= right\n right *= nums[i]\n }\n return result\n}" |
| 181 | + }, |
| 182 | + { |
| 183 | + "id": "move_zeros", |
| 184 | + "language": "go", |
| 185 | + "snippet": "func MoveZeros(nums []int) {\n pos := 0\n for i := 0; i < len(nums); i++ {\n if nums[i] != 0 {\n nums[pos], nums[i] = nums[i], nums[pos]\n pos++\n }\n }\n}" |
| 186 | + }, |
| 187 | + { |
| 188 | + "id": "single_number", |
| 189 | + "language": "go", |
| 190 | + "snippet": "func SingleNumber(nums []int) int {\n result := 0\n for _, num := range nums {\n result ^= num\n }\n return result\n}" |
| 191 | + }, |
| 192 | + { |
| 193 | + "id": "plus_one", |
| 194 | + "language": "go", |
| 195 | + "snippet": "func PlusOne(digits []int) []int {\n for i := len(digits) - 1; i >= 0; i-- {\n if digits[i] < 9 {\n digits[i]++\n return digits\n }\n digits[i] = 0\n }\n return append([]int{1}, digits...)\n}" |
| 196 | + }, |
| 197 | + { |
| 198 | + "id": "sqrt_binary", |
| 199 | + "language": "go", |
| 200 | + "snippet": "func Sqrt(x int) int {\n if x < 2 {\n return x\n }\n left, right := 1, x/2\n for left <= right {\n mid := (left + right) / 2\n if mid*mid == x {\n return mid\n } else if mid*mid < x {\n left = mid + 1\n } else {\n right = mid - 1\n }\n }\n return right\n}" |
| 201 | + }, |
| 202 | + { |
| 203 | + "id": "hamming_distance", |
44 | 204 | "language": "go", |
45 | | - "snippet": "func IsValidParens(s string) bool {\n stack := []rune{}\n pairs := map[rune]rune{')': '(', '}': '{', ']': '['}\n for _, char := range s {\n if char == '(' || char == '{' || char == '[' {\n stack = append(stack, char)\n } else if open, ok := pairs[char]; ok {\n if len(stack) == 0 || stack[len(stack)-1] != open {\n return false\n }\n stack = stack[:len(stack)-1]\n }\n }\n return len(stack) == 0\n}" |
| 205 | + "snippet": "func HammingDistance(x, y int) int {\n xor := x ^ y\n count := 0\n for xor != 0 {\n count += xor & 1\n xor >>= 1\n }\n return count\n}" |
46 | 206 | } |
47 | 207 | ] |
48 | 208 | } |
0 commit comments