Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // function findLongestSubstring(str){
- // if(!str) return 0
- // let j = 0
- // let charSet = new Set()
- // let total = 1
- // for (let i = 0; i < str.length; i++) {
- // let char = str[i]
- // while(charSet.has(char)){
- // charSet.delete(str[j])
- // j++
- // }
- // charSet.add(char)
- // console.log(charSet)
- // total = Math.max(total, charSet.size)
- // }
- // console.log({total})
- // var uniqueOccurrences = function (arr) {
- // const hashMap = {}
- // for (let i = 0; i < arr.length; i++) {
- // hashMap[arr[i]] = (hashMap[arr[i]] || 0) + 1
- // }
- // const uniqueValues = new Set(Object.values(hashMap))
- // console.log(uniqueValues.size === Object.values(hashMap).length)
- // }
- // uniqueOccurrences([-3, 0, 1, -3, 1, 1, 1, -3, 10, 0])
- //finding firstUnique character index
- // var firstUniqChar = function (s) {
- // for (let i = 0; i < s.length; i++) {
- // let found = true
- // for (let j = i + 1; j < s.length; j++) {
- // if (s[i] === s[j]) {
- // found = false
- // break
- // }
- // }
- // if (found) {
- // return i
- // }
- // }
- // return -1
- // }
- // var firstUniqChar = function (s) {
- // const hashMap = {}
- // for (let i = 0; i < s.length; i++) {
- // hashMap[s[i]] = (hashMap[s[i]] || 0) + 1
- // }
- // for (let i = 0; i < s.length; i++) {
- // if (hashMap[s[i]] === 1) {
- // return i
- // }
- // }
- // return -1
- // console.log(hashMap)
- // }
- // console.log(firstUniqChar('leetcode'))
- // console.log(firstUniqChar('loveleetcode'))
- // console.log(firstUniqChar('aabb'))
- //unique number of occurrences
- // var uniqueOccurrences = function (arr) {
- // const hashMap = {}
- // for (let i = 0; i < arr.length; i++) {
- // hashMap[arr[i]] = (hashMap[arr[i]] || 0) + 1
- // }
- // const uniqueValues = new Set(Object.values(hashMap))
- // return uniqueValues.size === Object.values(hashMap).length
- // }
- //anagram
- //finding all duplicates in a array
- // var findDuplicates = function(nums) {
- // const outputArr = []
- // for(let i = 0; i < nums.length; i++){
- // const index = Math.abs(nums[i]) - 1
- // if(nums[index] < 0 ){
- // outputArr.push(index + 1)
- // }else{
- // nums[index] = -nums[index]
- // }
- // }
- // return outputArr
- // };
- //sum zero problem
- // let left = 0
- // let right = arr.length - 1
- // while (left < right) {
- // let sum = arr[left] + arr[right]
- // if (sum === 0) {
- // return [arr[left], arr[right]]
- // } else if (sum < 0) {
- // left++
- // } else {
- // right--
- // }
- // }
- //1304- Find Unique integers sum up to zero
- // const sumZero = (n) => {
- // const arr = []
- // if (n === 1) {
- // return [0]
- // }
- // if (n % 2 !== 0) {
- // arr.push(0)
- // }
- // for (let i = 1; i <= n / 2; i++) {
- // console.log(i)
- // arr.push(i, -i)
- // }
- // return arr
- // }
- // sumZero(5)
- // // [1, -1, 2, -2]
- // var subarraySum = function (nums, k) {
- // const hashMap = {
- // 0: 1,
- // }
- // let result = 0
- // let sum = 0
- // for (let i = 0; i < nums.length; i++) {
- // sum += nums[i]
- // console.log(sum - k)
- // if (hashMap[sum - k] in hashMap) {
- // result += hashMap[sum - k]
- // }
- // hashMap[sum] = (hashMap[sum] || 0) + 1
- // }
- // console.log(result)
- // console.log(hashMap)
- // }
- // subarraySum([1, 2, 3], 3)
- // var findDuplicates = function (nums) {
- // let outputArr = []
- // for (let i = 0; i < nums.length; i++) {
- // const index = Math.abs(nums[i]) - 1
- // if (nums[index] < 0) {
- // outputArr.push(index + 1)
- // } else {
- // nums[index] = -nums[index]
- // }
- // }
- // return outputArr
- // }
- // var lengthOfLongestSubstring = function (s) {
- // let i = 0
- // let j = 0
- // let max = 0
- // const uniqueCharSet = new Set()
- // while (j < s.length) {
- // if (!uniqueCharSet.has(s[j])) {
- // uniqueCharSet.add(s[j])
- // max = Math.max(max, uniqueCharSet.size)
- // j++
- // } else {
- // uniqueCharSet.delete(s[i])
- // i++
- // }
- // console.log(uniqueCharSet)
- // }
- // console.log(max)
- // return max
- // }
- // lengthOfLongestSubstring('abcabcbb')
- // var maxSubArray = function (nums) {
- // let current_sum = nums[0]
- // let max_sum = current_sum
- // for (let i = 1; i < nums.length; i++) {
- // console.log(current_sum, nums[i], current_sum + nums[i], max_sum)
- // current_sum = Math.max(current_sum + nums[i], nums[i])
- // max_sum = Math.max(current_sum, max_sum)
- // }
- // console.log(max_sum)
- // // return max_sum
- // }
- // maxSubArray([-2, 1, -3, 4, -1, 2, 1, -5, 4])
- // maxSubArray([5, 4, -1, 7, 8])
- // function palindrome(str) {
- // let left = 0
- // let right = str.length - 1
- // while (left < right) {
- // console.log(str[left], str[right])
- // if (str[left] !== str[right]) return false
- // left++
- // right--
- // }
- // return true
- // }
- // console.log(palindrome('raceecar'))
- var isPalindrome = function (s) {
- const normalizeStr = s.replace(/[\W_]/g, '').toLowerCase()
- let left = 0
- let right = normalizeStr.length - 1
- while (left < right) {
- console.log(normalizeStr[left], normalizeStr[right])
- if (normalizeStr[left] !== normalizeStr[right]) return false
- left++
- right--
- }
- return true
- }
- console.log(isPalindrome('A man, a plan, a canal: Panama'))
- // var isAnagram = function (s, t) {
- // const hashTableS = {}
- // const hashTableT = {}
- // for (let elm of s) {
- // hashTableS[elm] = (hashTableS[elm] || 0) + 1
- // }
- // for (let elm of t) {
- // hashTableT[elm] = (hashTableT[elm] || 0) + 1
- // }
- // if (Object.keys(hashTableS).length !== Object.keys(hashTableT).length)
- // return false
- // for (let char in hashTableS) {
- // if (hashTableS[char] !== hashTableT[char]) return false
- // }
- // return true
- // }
- // console.log(isAnagram('anagram', 'nagaram'))
- //Group Anagram
- // var groupAnagrams = function (strs) {
- // const ht = {}
- // for (elm of strs) {
- // const sorted = elm.split('').sort().join('')
- // if (ht[sorted]) {
- // ht[sorted].push(elm)
- // } else {
- // ht[sorted] = [elm]
- // }
- // }
- // return Object.values(ht)
- // console.log(ht)
- // }
- // console.log(groupAnagrams(['eat', 'tea', 'tan', 'ate', 'nat', 'bat']))
- // function maxSubarraySum(nums, k) {
- // if (k > nums.length) {
- // return null
- // }
- // var max = -Infinity
- // for (let i = 0; i < nums.length - k + 1; i++) {
- // temp = 0
- // for (let j = 0; j < k; j++) {
- // temp += nums[i + j]
- // }
- // if (temp > max) {
- // max = temp
- // }
- // }
- // return max
- // }
- // function maxSubarraySum(arr, num) {
- // let maxSum = 0
- // let tempSum = 0
- // if (arr.length < num) return null
- // for (let i = 0; i < num; i++) {
- // maxSum += arr[i]
- // }
- // tempSum = maxSum
- // for (let i = num; i < arr.length; i++) {
- // tempSum = tempSum - arr[i - num] + arr[i]
- // maxSum = Math.max(maxSum, tempSum)
- // }
- // return maxSum
- // }
- // console.log(maxSubarraySum([1, 2, 3, 4], 2))
- // var minSubArrayLen = function (target, nums) {
- // let result = Infinity
- // let left = 0
- // let val_sum = 0
- // for (let i = 0; i < nums.length; i++) {
- // val_sum += nums[i]
- // console.log(val_sum, i + 1 - nums[i])
- // while (val_sum >= target) {
- // result = Math.min(result, i + 1 - left)
- // console.log(result)
- // val_sum -= nums[left]
- // left++
- // }
- // }
- // return result !== Infinity ? result : 0
- // }
- // nums = [1,1,1], k = 2
- var subarraySum = function (nums, k) {
- const hash = {
- 0: 1,
- }
- let sum = 0
- let result = 0
- for (let elm of nums) {
- sum += elm
- console.log(sum, sum - k)
- if ([sum - k] in hash) {
- console.log(true)
- result += hash[sum - k]
- }
- hash[sum] = (hash[sum] || 0) + 1
- }
- console.log(hash, result)
- return result
- }
- subarraySum([1, -1, 0], 0)
- // --- Directions
- // Write a function that accepts a positive number N.
- // The function should console log a step shape
- // with N levels using the # character. Make sure the
- // step has spaces on the right hand side!
- // --- Examples
- // steps(2)
- // '# '
- // '##'
- // steps(3)
- // '# '
- // '## '
- // '###'
- // steps(4)
- // '# '
- // '## '
- // '### '
- // '####'
- // function steps(n) {
- // for (let row = 0; row < n; row++) {
- // let stair = ''
- // for (let column = 0; column < n; column++) {
- // if (column <= row) {
- // stair += '#'
- // } else {
- // stair += ' '
- // }
- // }
- // console.log(stair)
- // }
- // }
- //recursive solution
- function steps(n, row = 0, stair = '') {
- if (row === n) {
- return
- }
- if (stair.length === n) {
- console.log(stair)
- return steps(n, row + 1)
- }
- const add = stair.length <= row ? '#' : ' '
- steps(n, row, stair + add)
- // console.log(stair)
- }
- console.log(steps(3))
- // --- Directions
- // Write a function that accepts a positive number N.
- // The function should console log a pyramid shape
- // with N levels using the # character. Make sure the
- // pyramid has spaces on both the left *and* right hand sides
- // --- Examples
- // pyramid(1)
- // '#'
- // pyramid(2)
- // ' # '
- // '###'
- // pyramid(3)
- // ' # '
- // ' ### '
- // '#####'
- // function pyramid(n) {
- // //midpoint of proposed column
- // const midPoint = Math.floor((2 * n - 1) / 2)
- // for (let row = 0; row < n; row++) {
- // let level = ''
- // for (let column = 0; column < 2 * n - 1; column++) {
- // if (midPoint - row <= column && midPoint + row >= column) {
- // level += '#'
- // } else {
- // level += ' '
- // }
- // }
- // console.log(level)
- // }
- // console.log(midPoint)
- // }
- //recursive solution
- function pyramid(n, row = 0, level = '') {
- if (row == n) return
- if (level.length === 2 * n - 1) {
- console.log(level)
- return pyramid(n, row + 1)
- }
- const midpoint = Math.floor((2 * (n - 1)) / 2)
- let add = ''
- if (midpoint - row <= level.length && midpoint + row >= level.length) {
- add += '#'
- } else {
- add += ' '
- }
- pyramid(n, row, level + add)
- }
- pyramid(3)
- // --- Directions
- // Write a function that accepts an integer N
- // and returns a NxN spiral matrix.
- // --- Examples
- // matrix(2)
- // [[undefined, undefined],
- // [undefined, undefined]]
- // matrix(3)
- // [[1, 2, 3],
- // [8, 9, 4],
- // [7, 6, 5]]
- // matrix(4)
- // [[1, 2, 3, 4],
- // [12, 13, 14, 5],
- // [11, 16, 15, 6],
- // [10, 9, 8, 7]]
- function matrix(n) {
- const results = []
- for (let i = 0; i < n; i++) {
- results.push([])
- }
- let counter = 1
- let startColumn = 0
- let endColumn = n - 1
- let startRow = 0
- let endRow = n - 1
- while (startColumn <= endColumn && startRow <= endRow) {
- //top row
- for (let i = startColumn; i <= endColumn; i++) {
- results[startRow][i] = counter
- counter++
- }
- startRow++
- //right column
- for (let i = startRow; i <= endRow; i++) {
- results[i][endColumn] = counter
- counter++
- }
- endColumn--
- console.log(endColumn)
- //Bottom row
- for (let i = endColumn; i >= startColumn; i--) {
- results[endRow][i] = counter
- counter++
- }
- endRow--
- console.log(endRow)
- //start column
- for (let i = endRow; i >= startRow; i--) {
- results[i][startColumn] = counter
- counter++
- }
- startColumn++
- // if (startColumn === endColumn && startRow === endRow) {
- // results[startColumn][startRow] = counter
- // }
- console.log(startColumn, endColumn, startRow, endRow)
- }
- console.log(results)
- }
- matrix(4)
- // log₂⁸ = 3 // 2³
- //2 * 2 * 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement