Advertisement
amt

DSJSAppRaw

amt
Aug 12th, 2021
1,259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // let strForNumber = "234";
  2. // resStrForNumber = (5 * 10) + (strForNumber[2] - 0);
  3. // console.log(strForNumber[1] + strForNumber[2]); // 34
  4. // console.log(resStrForNumber); // 54
  5.  
  6. // console.log(-11 - 0); // 54
  7.  
  8. // console.log('Nana'.repeat(7));
  9.  
  10. // let numbers = [4, 2, 5, 1, 3];
  11. // numbers.sort((a, b) => a - b);
  12. // console.log('sorted numbers', numbers);
  13.  
  14. // let value = 3
  15. // let arr = [1, 2, 3, 4, 5, 3]
  16. // arr = arr.filter(item => item !== value)
  17. // console.log('after filter', arr); // [ 1, 2, 4, 5 ]
  18.  
  19. // const animals = ['pigs', 'goats', 'sheep'];
  20. // console.log(animals.push('chickens', 'cats', 'dogs')); // 6
  21. // console.log(animals.pop()); // dogs
  22.  
  23. // let a, b, rest;
  24. // [a, b] = [10, 20];
  25. // console.log(a);// 10
  26. // console.log(b);// 20
  27. // const [a, b, ...resting] = [10, 20, 30, 40, 50];
  28. // console.log(resting);// [30,40,50]
  29.  
  30. // reverse array
  31. function reverseHelper(arr, start, end) {
  32.   while (start < end) {
  33.     [arr[start], arr[end]] = [arr[end], arr[start]];
  34.     start++;
  35.     end--;
  36.   }
  37.   return arr;
  38. }
  39.  
  40. // console.log(reverseHelper([3,4,2], 0, ([3,4,2].length - 1)));
  41. // console.log(reverseHelper([3,4,2], 0, ([3,4,2].length - 1)));
  42. // console.log(reverseHelper([3,4,2], 0, ([3,4,2].length - 1)));
  43.  
  44.  
  45. // 1
  46. let twoSum = function(nums, target) {
  47.     const seenNumsWithIndexes = {};
  48.    
  49.     for (let i = 0; i < nums.length; i++) {
  50.       const num = nums[i];
  51.       if (seenNumsWithIndexes[target - num] !== undefined) {
  52.         return [seenNumsWithIndexes[target - num], i];
  53.       }
  54.       seenNumsWithIndexes[num] = i;
  55.     }
  56.   };
  57.    
  58. //   console.log(twoSum([2,8,3,7],9)); // [ 0, 3 ]
  59.  
  60. /** 2 @param {ListNode} l1 | @param {ListNode} l2 | @return {ListNode} */
  61. var addTwoNumbers = function(l1, l2) {
  62.     var carry = 0;
  63.     var digitSum = 0;
  64.     var head = new ListNode();
  65.     var now = head;
  66.     while (l1 || l2) {
  67.       digitSum = (l1 ? l1.val : 0) + (l2 ? l2.val : 0) + carry;
  68.       carry = digitSum > 9 ? 1 : 0;
  69.       now.next = new ListNode(digitSum % 10);
  70.       now = now.next;
  71.       l1 = l1 ? l1.next : null;
  72.       l2 = l2 ? l2.next : null;
  73.     }
  74.     if (carry) now.next = new ListNode(carry);
  75.     return head.next;
  76.   };
  77.   //  Time complexity : O(max(m,n)). Space complexity : O(max(m,n)).
  78.    
  79. //   console.log(listToArray(addTwoNumbers(arrToList([2,4,3]), arrToList([5,6,4])))); // [ 7, 0, 8 ]
  80. //   // listToArray(addTwoNumbers(arrToList([9,9,9,9,9,9,9]), arrToList([9,9,9,9]))); // [8,9,9,9,0,0,0,1]
  81.    
  82.   // Helper functions
  83.   function ListNode(val, next) {
  84.        this.val = (val ? val : 0)
  85.        this.next = (next ? next : null);
  86.    }
  87.    
  88.   function listToArray(list) {
  89.     let arr = []; // Initialise an array to return
  90.      while (list) {
  91.       arr = [...arr, list.val];
  92.       list = list.next;
  93.     };
  94.     return arr;
  95.   }
  96.    
  97.   function arrToList (arr) {
  98.     let obj = null;
  99.     for(i=0;i<arr.length;i++){
  100.       obj = {val: arr[i], next: arrToList(arr.slice(i+1,arr.length))}
  101.     }
  102.     return obj;
  103.   }
  104.  
  105. /** 3 @param {string} s| @return {number} */
  106. let lengthOfLongestSubstring = function(s) {
  107.     let map = {};
  108.     let max = 0;
  109.     let start = 0;
  110.     for (let i = 0; i < s.length; i++) {
  111.       if (map[s[i]] !== undefined) {
  112.         start = Math.max(start, map[s[i]] + 1); // start from latest instance of char
  113.       }
  114.       map[s[i]] = i;
  115.       max = Math.max(max, i - start + 1);
  116.     }
  117.     return max;
  118.   };
  119.    
  120. //   console.log(lengthOfLongestSubstring("pwwkew")); // 3
  121.  
  122. /** 8 @param {string} str | @return {number} */
  123. let myAtoi = function(str) {
  124.     let i = 0;
  125.     let sign = 1;
  126.     let res = 0;
  127.     // str = str.trim();
  128.     let INT_MAX = Math.pow(2, 31) - 1;
  129.     let INT_MIN = - Math.pow(2, 31); // 2147483648
  130.    
  131.     while (str[i] === ' ') i++; // str.trim();
  132.    
  133.     if (str[i] === '+' || str[i] === '-') {
  134.       sign = str[i] === '+' ? 1 : -1;
  135.       i++;
  136.     }
  137.    
  138.     while (str[i] >= '0' && str[i] <= '9') {
  139.       res = (res * 10) + (str[i] - 0);
  140.       if (sign === 1 && res > INT_MAX) return INT_MAX;
  141.       if (sign === -1 && res > INT_MIN) return INT_MIN;
  142.       i++;
  143.     }
  144.    
  145.     return res * sign;
  146.   };
  147.   //  Time complexity : O(n). Space complexity : O(1).
  148.    
  149. //   console.log(myAtoi("-2147483649")); // -2147483648
  150. //   console.log(myAtoi("lala -2147483649")); // 0
  151. //   console.log(myAtoi("83649 jin")); // 0
  152.  
  153. /** 11 | @param {number[]} height |@return {number} */
  154. var maxArea = function(height) {
  155.     var max = 0;
  156.     var l = 0; // left
  157.     var r = height.length - 1; // right
  158.     while (l < r) {
  159.       max = Math.max(max, Math.min(height[l], height[r]) * (r - l));
  160.       if (height[l] < height[r]) {
  161.         l++;
  162.       } else {
  163.         r--;
  164.       }
  165.     }
  166.     return max;
  167.   };  
  168.   // Time complexity : O(n) | Space complexity : O(1).
  169.  
  170. //   console.log(maxArea([1,8,6,2,5,4,8,3,7]));
  171.  
  172.  
  173.  
  174. /** 12 2 @param {number} num | @return {string} */
  175.  var intToRoman1 = function(num) {
  176.   var str = [
  177.     ['I', 'V'], // 1s
  178.     ['X', 'L'], // 10s
  179.     ['C', 'D'], // 100s
  180.     ['M'] // 1000s
  181.   ];
  182.   var res = '';
  183.   var i = 0;
  184.   var digit = 0;
  185.   for ( let i = 0 ; num > 0; i++) {
  186.     digit = num % 10;
  187.     if (digit === 9) {
  188.       res = str[i][0] + str[i + 1][0] + res; // IX + res
  189.     } else if (digit >= 5) {
  190.       res = str[i][1] + str[i][0].repeat(digit - 5) + res;
  191.     } else if (digit === 4) {
  192.       res = str[i][0] + str[i][1] + res; // IV + res
  193.     } else { // 0, 1, 2, 3
  194.       res = str[i][0].repeat(digit) + res;
  195.     }
  196.     num = Math.floor(num / 10);
  197.     // i++;
  198.   }
  199.   return res;
  200. };
  201.  
  202. // Time complexity : O(log(n)) | Space complexity : O(1).
  203.  
  204. // console.log(intToRoman1(402)); // CDII
  205. // console.log(intToRoman1(3000)); // MMM
  206. // console.log(intToRoman1(93)); // XCIII
  207. // console.log(intToRoman1(48)); // XLVIII
  208. // console.log(intToRoman1(4)); // IV
  209. // console.log(intToRoman1(900)); // CMXCIX
  210.  
  211. /**  12 @param {number} num | @return {string} */
  212. var intToRoman2 = function(num) {
  213.   var map = [
  214.     [1, "I"],
  215.     [4, "IV"],
  216.     [5, "V"],
  217.     [9, "IX"],
  218.     [10, "X"],
  219.     [40, "XL"],
  220.     [50, "L"],
  221.     [90, "XC"],
  222.     [100, "C"],
  223.     [400, "CD"],
  224.     [500, "D"],
  225.     [900, "CM"],
  226.     [1000, "M"]
  227.   ];
  228.   var res = '';
  229.   var i = 12;
  230.   var tmp = 0;
  231.   while (num > 0) {
  232.     res += map[i][1].repeat(Math.floor(num / map[i][0]));
  233.     num %= map[i][0];
  234.     console.log(map[i][0]);
  235.     i--;
  236.   }
  237.   return res;
  238. };
  239.  
  240. //Time complexity : O(log(n)) | Space complexity : O(1).
  241.  
  242. // console.log(intToRoman2(402)); // CDII
  243. // console.log(intToRoman2(3000)); // MMM
  244. // console.log(intToRoman2(93)); // XCIII
  245. // console.log(intToRoman2(4)); // IV
  246.  
  247. /** 15 @param {number[]} nums | @return {number[][]} */
  248. var threeSum = function(nums) {
  249.   var len = nums.length;
  250.   var res = [];
  251.   var l = 0; // left
  252.   var r = 0; // right
  253.   nums.sort((a, b) => (a - b));
  254.   for (var i = 0; i < len; i++) {
  255.     if (i > 0 && nums[i] === nums[i - 1]) continue;
  256.     l = i + 1;
  257.     r = len - 1;
  258.     while (l < r) {
  259.       if (nums[i] + nums[l] + nums[r] < 0) {
  260.         l++;
  261.       } else if (nums[i] + nums[l] + nums[r] > 0) {
  262.         r--;
  263.       } else {
  264.         res.push([nums[i], nums[l], nums[r]]);
  265.         while (l < r && nums[l] === nums[l + 1]) l++;
  266.         while (l < r && nums[r] === nums[r - 1]) r--;
  267.         l++;
  268.         r--;
  269.       }
  270.     }
  271.   }
  272.   return res;
  273. };
  274. //Time complexity : O(n^2) | Space complexity : O(1)
  275. // console.log(threeSum([-1,0,1,2,-1,-4]));
  276.  
  277. /** 16  @param {number[]} nums | @param {number} target | @return {number} */
  278.  var threeSumClosest = function(nums, target) {
  279.   var len = nums.length;
  280.   var res = nums[0] + nums[1] + nums[2];
  281.   var sum = 0;
  282.   var l = 0; // left
  283.   var r = 0; // right
  284.   nums.sort((a, b) => (a - b));
  285.   for (var i = 0; i < len - 2; i++) {
  286.     if (i > 0 && nums[i] === nums[i - 1]) continue;
  287.     l = i + 1;
  288.     r = len - 1;
  289.     while (l < r) {
  290.       sum = nums[i] + nums[l] + nums[r];
  291.       if (sum < target) {
  292.         l++;
  293.       } else if (sum > target) {
  294.         r--;
  295.       } else {
  296.         return sum;
  297.       }
  298.       if (Math.abs(sum - target) < Math.abs(res - target)) res = sum;
  299.     }
  300.   }
  301.   return res;
  302. };
  303. // Time complexity : O(n^2) Space complexity : O(1)
  304. // console.log(threeSumClosest([-1, 2, 1, -4],1));
  305.  
  306. /** 20 @param {string} s | @return {boolean} */
  307.  var isPranthesisValid = function(s) {
  308.   var stack = [];
  309.   var len = s.length;
  310.   var map = {
  311.     '(': ')',
  312.     '[': ']',
  313.     '{': '}'
  314.   };
  315.   for (var i = 0; i < len; i++) {
  316.     if (stack.length > 0 && map[stack[stack.length - 1]] === s[i]) { // value at map's key complements s[i]
  317.     // if (stack.length > 0 && s[i] != s[i+1]) { // generic solution
  318.       stack.pop();
  319.     } else {
  320.       stack.push(s[i]);
  321.     }
  322.   }
  323.   return stack.length === 0;
  324. };
  325. // Time complexity : O(n) Space complexity : O(n)
  326. // console.log(isPranthesisValid("()[]{}}"));
  327. // console.log(isPranthesisValid("([{}])"));
  328.  
  329. /** 21 @param {ListNode} l1 | @param {ListNode} l2 | @return {ListNode} */
  330. var mergeTwoLists = function(l1, l2) {
  331.   var head = new ListNode();
  332.   var now = head;
  333.   while (l1 || l2) {
  334.     if (l1 === null || (l2 !== null && l2.val < l1.val)) {
  335.       now.next = l2;
  336.       l2 = l2.next;
  337.     } else {
  338.       now.next = l1;
  339.       l1 = l1.next;
  340.     }
  341.     now = now.next;
  342.   }
  343.   return head.next;
  344. };
  345. // Time complexity : O(m+n) | Space complexity : O(m+n)
  346.  
  347. // console.log(listToArray(mergeTwoLists(arrToList([1,2,4]), arrToList([1,3,4])))); // [ 1,1,2,3,4,4 ]
  348.  
  349.  
  350. /** 28 @param {string} haystack | @param {string} needle | @return {number} */
  351.  var strStr = function(haystack, needle) {
  352.   var len1 = haystack.length;
  353.   var len2 = needle.length;
  354.   if (!len2) return 0;
  355.   for (var i = 0; i < len1; i++) {
  356.     for (var j = 0; j < len2; j++) {
  357.       if (i + j === len1) return -1;
  358.       if (haystack[i + j] !== needle[j]) break; // chars don't match
  359.       if (j === len2 - 1) return i;
  360.     }
  361.   }
  362.   return -1; // not found
  363. };
  364. // Time complexity : O(n*m) | Space complexity : O(1)
  365. // console.log(strStr('Hello', 'llp')); // 2
  366.  
  367. /* 42 @param {number[]} height | @return {number} */
  368. var trap = function(height) {
  369.   var res = 0;
  370.   var left = 0;
  371.   var right = height.length - 1;
  372.   var leftMax = 0;
  373.   var rightMax = 0;
  374.  
  375.   while (left < right) {
  376.     if (height[left] < height[right]) {
  377.       if (height[left] >= leftMax) {
  378.         leftMax = height[left];
  379.       } else {
  380.         res += leftMax - height[left];
  381.       }
  382.       left++;
  383.     } else {
  384.       if (height[right] >= rightMax) {
  385.         rightMax = height[right];
  386.       } else {
  387.         res += rightMax - height[right];
  388.       }
  389.       right--;
  390.     }
  391.   }
  392.  
  393.   return res;
  394. };
  395. // Time complexity : O(n) | Space complexity : O(1)
  396. // console.log(trap([0,1,0,2,1,0,1,3,2,1,2,1])); // 6
  397. // console.log(trap([1,0,1]));
  398.  
  399. /** 48 @param {number[][]} matrix | @return {void} Do not return anything, modify matrix in-place instead. */
  400.  var rotate = function(matrix) {
  401.   var n = matrix.length;
  402.   var n2 = Math.floor(n / 2);
  403.   // 1 2 3     7 8 9
  404.   // 4 5 6  => 4 5 6
  405.   // 7 8 9     1 2 3
  406.   for (var i = 0; i < n2; i++) {
  407.     for (var j = 0; j < n; j++) {
  408.       swap(matrix, i, j, n - 1 - i, j);
  409.     }
  410.   }
  411.   // 7 8 9     7 4 1
  412.   // 4 5 6  => 8 5 2
  413.   // 1 2 3     9 6 3
  414.   for (var i = 0; i < n; i++) {
  415.     for (var j = i + 1; j < n; j++) {
  416.       swap(matrix, i, j, j, i);
  417.     }
  418.   }
  419.   return matrix;
  420. };
  421.  
  422. var swap = function (matrix, x1, y1, x2, y2) {
  423.   var tmp = matrix[x1][y1];
  424.   matrix[x1][y1] = matrix[x2][y2];
  425.   matrix[x2][y2] = tmp;
  426. };
  427. // Clockwise 90°: first upside down, then diagonally upside down
  428. // Counterclockwise 90°: first inverted left and right, and then diagonally inverted
  429. // Time complexity : O(n^2) | Space complexity : O(1).
  430. console.log(rotate([
  431.   [ 5, 1, 9,11],
  432.   [ 2, 4, 8,10],
  433.   [13, 3, 6, 7],
  434.   [15,14,12,16]
  435. ]));
  436.  
  437. /** 206 | @param {ListNode} head |@return {ListNode} */
  438. var reverseList = function(head) {
  439.     var newHead = null;
  440.     var tmp = null;
  441.     while (head) {
  442.       tmp = head.next;
  443.       head.next = newHead;
  444.       newHead = head;
  445.       head = tmp;
  446.     }
  447.     return newHead;
  448.   };
  449.  
  450. // console.log(listToArray(reverseList(arrToList([2,4,3]))));
  451.  
  452. /* @param {ListNode} head | @return {ListNode} */
  453. var reverseListRecursion = function(head) {
  454.   return reverse(null, head);
  455. };
  456.  
  457. var reverseRecursion = function (newHead, head) {
  458.   if (!head) return newHead;
  459.   var tmp = head.next;
  460.   head.next = newHead;
  461.   return reverse(head, tmp);
  462. };
  463.  
  464. // Time complexity : O(n). Space complexity : O(n).
  465.  
  466. // console.log(listToArray(reverseListRecursion(arrToList([2,4,3]))));
  467.  
  468.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement