Posts

Call, Apply and Bind in Javascript

    Call is a function that helps you change the context of the invoking function. In layperson's terms, it helps you replace the value of this inside a function with whatever value you want.     Apply is very similar to the call function. The only difference is that in apply you can pass an array as an argument list.     Bind is a function that helps you create another function that you can execute later with the new context of this that is provided. Examples:- let name1 = { firstName : "Fahad" , lastName : "C" , printFullName : function () { console . log ( this . firstName + " " + this . lastName ); }, }; name1 . printFullName (); let name2 = { firstName : "Schin" , lastName : "Tendulkar" , }; // Function borrowing name1 . printFullName . call ( name2 ); // Another example const name3 = { firstName : "John" , lastName : "Doe" , }; let printFullName = function () { conso...

LeetCode 35: Search Insert Position

 Question Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You must write an algorithm with  O(log n)  runtime complexity.   Example 1: Input: nums = [1,3,5,6], target = 5 Output: 2 Example 2: Input: nums = [1,3,5,6], target = 2 Output: 1 Example 3: Input: nums = [1,3,5,6], target = 7 Output: 4   Solution 1- Javascript /** * @param {number[]} nums * @param {number} target * @return {number} */ var searchInsert = function ( nums , target ) { let left = 0 ; let right = nums . length ; while ( left < right ) { const middle = Math . floor (( left + right ) / 2 ); if ( nums [ middle ] < target ) { left = middle + 1 ; } else { right = middle ; } } return left ; };

LeetCode 278: First Bad Version

Question You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the previous version, all the versions after a bad version are also bad. Suppose you have  n  versions  [1, 2, ..., n]  and you want to find out the first bad one, which causes all the following ones to be bad. You are given an API  bool isBadVersion(version)  which returns whether  version  is bad. Implement a function to find the first bad version. You should minimize the number of calls to the API.   Example 1: Input: n = 5, bad = 4 Output: 4 Explanation: call isBadVersion(3) -> false call isBadVersion(5) -> true call isBadVersion(4) -> true Then 4 is the first bad version. Example 2: Input: n = 1, bad = 1 Output: 1   Solution /** * Definition for isBadVersion() * * @param {integer} version number * @r...

LeetCode 704: Binary Search

Question Given an array of integers  nums  which is sorted in ascending order, and an integer  target , write a function to search  target  in  nums . If  target  exists, then return its index. Otherwise, return  -1 . You must write an algorithm with  O(log n)  runtime complexity.   Example 1: Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4 Example 2: Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums so return -1      Solution   1-Javascript /** * @param {number[]} nums * @param {number} target * @return {number} */ function binarySearch ( nums , target , start , end ) { if ( start > end ) return - 1 ; const middle = parseInt (( start + end ) / 2 ); if ( nums [ middle ] === target ) return middle ; if ( target < nums [ middle ]) return binarySearch ( nums , target , start , ...

LeetCode 53: Maximum Subarray

  Question Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. A subarray is a contiguous part of an array. Example 1: Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. Example 2: Input: nums = [1] Output: 1 Example 3: Input: nums = [5,4,-1,7,8] Output: 23   Solutions 1) Go func Max ( x , y int ) int {     if x < y {         return y     }     return x } func maxSubArray ( nums [] int ) int {     solution := nums [ 0 ];     for i := 1 ; i < len ( nums ); i ++{         nums [ i ]= Max ( nums [ i ], nums [ i ]+ nums [ i - 1 ]);         solution = Max ( solution , nums [ i ])     }     return solution ; } 2) Javascript function maxSubArray ( nums ) {   let solution = nums [ 0 ];   for...

LeetCode 217: Contains Duplicate

  Question Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct. Example 1: Input: nums = [1,2,3,1] Output: true Example 2: Input: nums = [1,2,3,4] Output: false Example 3: Input: nums = [1,1,1,3,3,4,3,2,4,2] Output: true Solutions 1) Go func containsDuplicate ( nums [] int ) bool {     dict := make ( map [ int ] int )     for _ , num := range nums {         dict [ num ]= dict [ num ]+ 1         if ( dict [ num ]> 1 ){             return true ;         }             }     return false } 2) Javascript function containsDuplicate ( nums ) {   const temp = new Set ( nums );   return !( nums . length === temp . size ); }

LeetCode 53: Maximum Subarray

Question Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.  A subarray is a contiguous part of an array.  Example 1: Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. Example 2: Input: nums = [1] Output: 1 Example 3: Input: nums = [5,4,-1,7,8] Output: 23 Solutions:-     1) JavaScript       function maxSubArray ( nums ) {   let solution = nums [ 0 ];   for ( let i = 1 ; i < nums . length ; i ++) {     nums [ i ] = Math . max ( nums [ i ], nums [ i ] + nums [ i - 1 ]);     solution = Math . max ( solution , nums [ i ]);   }   return solution ; } 2) Go func Max ( x , y int ) int {     if x < y {         return y     }     return x } func maxSubArray ( nums [] int ) int {     solutio...