├── 20. Valid Parentheses [Javascript] - LeetCode [20] ├── 202. LeetCode Happy Number solution with javascript ├── 258. Leetcode add digits solution with javascript ├── 28. Leetcode Solution of implement strStr in JavaScript ├── LeetCode 13. Roman to Integer | solved with JS ├── LeetCode Median of Two Sorted Arrays | solved with JavaScript ├── Two Sum problem with js add alternatives ├── add two numbers leetcode solution javascript ├── divide two integers leetcode solution javascript ├── longest substring without repeating characters leetcode solution javascript ├── string to integer (atoi) leetcode solution javascript └── time needed to buy tickets leetcode solution javascript /20. Valid Parentheses [Javascript] - LeetCode [20]: -------------------------------------------------------------------------------- 1 | var isValid = function(s) { 2 | 3 | const stack = [] 4 | 5 | 6 | for (i=0; i < s.length; i++){ 7 | 8 | let curChar = s[i]; 9 | 10 | switch (curChar) { 11 | case '(': stack.push (')'); 12 | 13 | break; 14 | 15 | case '[': stack.push (']'); 16 | 17 | break; 18 | 19 | case '{': stack.push ('}'); 20 | break; 21 | 22 | 23 | default: 24 | topElement = stack.pop() 25 | if (curChar !== topElement) return false; 26 | } 27 | 28 | } 29 | return stack.length == 0; 30 | }; 31 | -------------------------------------------------------------------------------- /202. LeetCode Happy Number solution with javascript: -------------------------------------------------------------------------------- 1 | var isHappy = function(n) { 2 | var map = {}; 3 | var tmp = 0; 4 | 5 | if (n < 1) return false; 6 | 7 | while (n !== 1 && !map[n]) { 8 | map[n] = true; 9 | tmp = 0; 10 | 11 | while (n > 0) { 12 | tmp += Math.pow(n % 10, 2); 13 | n = Math.floor(n / 10); 14 | } 15 | 16 | n = tmp; 17 | } 18 | 19 | return n === 1; 20 | }; 21 | -------------------------------------------------------------------------------- /258. Leetcode add digits solution with javascript: -------------------------------------------------------------------------------- 1 | var addDigits = function(num) { 2 | return 1 + (num - 1) % 9; 3 | }; 4 | 5 | Given an integer num, repeatedly add all its digits until the result has only one digit, and return it. 6 | -------------------------------------------------------------------------------- /28. Leetcode Solution of implement strStr in JavaScript: -------------------------------------------------------------------------------- 1 | var strStr = function(haystack, needle) { 2 | if (haystack == null || needle == null){ 3 | return -1; 4 | } 5 | 6 | if (haystack === needle ){ 7 | return 0; 8 | } 9 | 10 | const needleLength = needle.length; 11 | 12 | for (let i = 0; i < haystack.length - needleLength + 1; i++){ 13 | 14 | if (haystack.substring (i, i +needleLength)=== needle){ 15 | return i; 16 | } 17 | } 18 | 19 | return -1; 20 | }; 21 | -------------------------------------------------------------------------------- /LeetCode 13. Roman to Integer | solved with JS: -------------------------------------------------------------------------------- 1 | 2 | const roman = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} 3 | 4 | var romanToInt = function(S) { 5 | let ans = 0 6 | for (let i = S.length-1; ~i; i--) { 7 | let num = roman[S.charAt(i)] 8 | if (4 * num < ans) ans -= num 9 | else ans += num 10 | } 11 | return ans 12 | }; 13 | -------------------------------------------------------------------------------- /LeetCode Median of Two Sorted Arrays | solved with JavaScript: -------------------------------------------------------------------------------- 1 | var findMedianSortedArrays = function (nums1, nums2) { 2 | if (nums1.length > nums2.length) { 3 | return findMedianSortedArrays(nums2, nums1); 4 | } 5 | const m = nums1.length; 6 | const n = nums2.length; 7 | let start = 0; 8 | let end = m; 9 | while (start <= end) { 10 | let partitionNums1 = Math.floor((start + end) / 2); 11 | let partitionNums2 = Math.floor((m + n + 1) / 2) - partitionNums1; 12 | let maxLeftNums1 = partitionNums1 == 0 ? Number.MIN_SAFE_INTEGER : nums1[partitionNums1 - 1]; 13 | let minRightNums1 = partitionNums1 == m ? Number.MAX_SAFE_INTEGER : nums1[partitionNums1]; 14 | let maxLeftNums2 = partitionNums2 == 0 ? Number.MIN_SAFE_INTEGER : nums2[partitionNums2 - 1]; 15 | let minRightNums2 = partitionNums2 == n ? Number.MAX_SAFE_INTEGER : nums2[partitionNums2]; 16 | if (maxLeftNums1 <= minRightNums2 && maxLeftNums2 <= minRightNums1) { 17 | if ((m + n) % 2 == 0) { 18 | return (Math.max(maxLeftNums1, maxLeftNums2) + Math.min(minRightNums1, minRightNums2)) / 2.0; 19 | } else { 20 | return Math.max(maxLeftNums1, maxLeftNums2); 21 | } 22 | } 23 | else if (maxLeftNums1 > minRightNums2) { 24 | end = partitionNums1 - 1; 25 | } 26 | else { 27 | start = partitionNums1 + 1; 28 | } 29 | } 30 | }; 31 | -------------------------------------------------------------------------------- /Two Sum problem with js add alternatives: -------------------------------------------------------------------------------- 1 | function twoSum(nums, target) { 2 | let numObj = {}; 3 | for (let i = 0; i < nums.length; i++) { 4 | let complement = target - nums[i]; 5 | if (numObj[complement] !== undefined) { 6 | return [numObj[complement], i]; 7 | } 8 | numObj[nums[i]] = i; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /add two numbers leetcode solution javascript: -------------------------------------------------------------------------------- 1 | var addTwoNumbers = function(l1, l2) { 2 | var carry = 0; 3 | var sum = 0; 4 | var head = new ListNode(0); 5 | var now = head; 6 | var a = l1; 7 | var b = l2; 8 | while (a !== null || b !== null) { 9 | sum = (a ? a.val : 0) + (b ? b.val : 0) + carry; 10 | carry = Math.floor(sum / 10); 11 | now.next = new ListNode(sum % 10); 12 | now = now.next; 13 | a = a ? a.next : null; 14 | b = b ? b.next : null; 15 | } 16 | if (carry) now.next = new ListNode(carry); 17 | return head.next; 18 | }; 19 | -------------------------------------------------------------------------------- /divide two integers leetcode solution javascript: -------------------------------------------------------------------------------- 1 | var divide = function(dividend, divisor) { 2 | var did = Math.abs(dividend); 3 | var dis = Math.abs(divisor); 4 | var sign = (divisor > 0 && dividend > 0) || (divisor < 0 && dividend < 0); 5 | var res = 0; 6 | var arr = [dis]; 7 | 8 | if (dividend === 0 || did < dis) return 0; 9 | if (divisor === -1 && dividend === -2147483648) return 2147483647; 10 | if (dis === 1) return divisor > 0 ? dividend : -dividend; 11 | 12 | while (arr[arr.length - 1] < did) arr.push(arr[arr.length - 1] + arr[arr.length - 1]); 13 | 14 | for (var i = arr.length - 1; i >= 0; i--) { 15 | if (did >= arr[i]) { 16 | did -= arr[i]; 17 | res += i === 0 ? 1 : 2 << (i - 1); 18 | } 19 | } 20 | 21 | return sign ? res : -res; 22 | }; 23 | -------------------------------------------------------------------------------- /longest substring without repeating characters leetcode solution javascript: -------------------------------------------------------------------------------- 1 | var lengthOfLongestSubstring = function(s) { 2 | var map = {}; 3 | var len = s.length; 4 | var max = 0; 5 | var start = 0; 6 | for (var i = 0; i < len; i++) { 7 | if (map[s[i]] !== undefined) { 8 | start = Math.max(start, map[s[i]] + 1); 9 | } 10 | map[s[i]] = i; 11 | max = Math.max(max, i - start + 1); 12 | } 13 | return max; 14 | }; 15 | -------------------------------------------------------------------------------- /string to integer (atoi) leetcode solution javascript: -------------------------------------------------------------------------------- 1 | var myAtoi = function(str) { 2 | var i = 0; 3 | var sign = 1; 4 | var res = 0; 5 | var len = str.length; 6 | var INT_MAX = 2147483647; 7 | var INT_MIN = - INT_MAX - 1; 8 | 9 | while (str[i] === ' ') i++; 10 | 11 | if (str[i] === '+' || str[i] === '-') { 12 | sign = str[i] === '+' ? 1 : -1; 13 | i++; 14 | } 15 | 16 | while (str[i] >= '0' && str[i] <= '9') { 17 | res = (res * 10) + (str[i] - 0); 18 | if (sign === 1 && res > INT_MAX) return INT_MAX; 19 | if (sign === -1 && res > INT_MAX + 1) return INT_MIN; 20 | i++; 21 | } 22 | 23 | return res * sign; 24 | }; 25 | -------------------------------------------------------------------------------- /time needed to buy tickets leetcode solution javascript: -------------------------------------------------------------------------------- 1 | const timeRequiredToBuy = function(tickets, k) { 2 | let res = 0 3 | 4 | while(tickets[k] !== 0) { 5 | res += helper(tickets, k) 6 | } 7 | 8 | return res 9 | 10 | function helper(arr, k) { 11 | let tmp = 0 12 | for(let i = 0; i < arr.length; i++) { 13 | if(arr[i] > 0) { 14 | arr[i]-- 15 | tmp++ 16 | } 17 | if(arr[k] === 0) break 18 | } 19 | return tmp 20 | } 21 | 22 | }; 23 | --------------------------------------------------------------------------------