samueosborn / data-structures-and-algorithms

Optimal solutions to data structure & algorithm questions from variety of sources.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Data Structures and Algorithms - Exercises

This repository hosts several exercises from different resources, grouped as packages:

Package 1: algoexpert.io

https://www.algoexpert.io/questions
100 Data Structures and Algorithm problems

Easy problems

  • @Test TwoNumberSum
  • @Test ValidateSubsequence
  • @Test FindClosestValueInBST
  • @Test BranchSums
  • @Test NodeDepths
  • @Test DepthFirstSearch
  • @Test NthFibonacci
  • @Test BinarySearch
  • @Test ProductSum
  • @Test FindThreeLargestNumbers
  • @Test BubbleSort
  • @Test InsertionSort
  • @Test SelectionSort
  • @Test PalindromeCheck
  • @Test CaesarCipherEncryptor
  • @Test RunLengthEncoding
  • @Test MinimumWaitingTime
  • @Test RemoveDuplicatesFromLinkedList
  • @Test ClassPhotos
  • @Test NonConstructibleChange
  • @Test TournamentWinner
  • @Test GenerateDocument
  • @Test SortedSquaredArray
  • @Test TandemBicycle
  • @Test FirstNonRepeatingCharacter

Medium problems

  • @Test ThreeNumberSum
  • @Test SmallestDifference
  • @Test MoveElementToEnd
  • @Test MonotonicArray
  • @Test LongestPeak
  • @Test ValidateBST
  • @Test BSTTraversal
  • @Test SpiralTraverse
  • @Test BSTConstruction
  • @Test MinHeightBST
  • @Test InvertBinaryTree
  • @Test MaxSubsetSumNoAdjacent
  • @Test NumberOfWayToMakeChange
  • @Test MinNumberOfCoinsForChange
  • @Test LevenshteinDistance
  • @Test KadanesAlgorithm
  • @Test SingleCycleCheck
  • @Test BreadthFirstSearch
  • @Test RiverSize
  • @Test YoungestCommonAncestor
  • @Test MinHeapConstruction
  • @Test LinkedListConstruction
  • @Test RemoveKthNodeFromEnd
  • @Test Permutations
  • @Test Powerset
  • @Test SearchInSortedMatrix
  • @Test MinMaxStackConstruction
  • @Test BalancedBrackets
  • @Test LongestPalindromicSubstring
  • @Test GroupAnagrams
  • @Test SuffixTrieConstruction
  • @Test ArrayOfProducts
  • @Test BinaryTreeDiameter
  • @Test ThreeNumberSort
  • @Test FirstDuplicateValue
  • @Test FindSuccessor
  • @Test PhoneNumberMnemonics
  • @Test TaskAssignment
  • @Test SunsetViews
  • @Test ValidIPAddress
  • @Test RemoveIslands (BFS)
  • @Test RemoveIslands (DFS)
  • @Test CycleInGraph
  • @Test ReverseWordsInString
  • @Test StaircaseTraversal
  • @Test SumOfLinkedLists
  • @Test ValidStartingCity
  • @Test FindKthLargestValueInBst
  • @Test HeightBalancedBinaryTree
  • @Test NumberOfWaysToTraverseGraph
  • @Test ReconstructBST
  • @Test MergeOverlappingIntervals
  • @Test SortStack

Hard problems

  • @Test FourNumberSum
  • @Test SubarraySort
  • @Test LargestRange
  • @Test MinRewards
  • @Test ZigzagTraverse
  • @Test SameBST
  • @Test MaxPathSumInBinaryTree
  • @Test MaxSumIncreasingSubsequence
  • @Test LongestCommonSubsequence
  • @Test MinNumberOfJumps
  • @Test WaterArea
  • @Test KnapsackProblem
  • @Test DiskStacking
  • @Test NumbersInPI
  • @Test DijkstrasAlgorithm
  • @Test TopologicalSort
  • @Test BoggleBoard
  • @Test ContinuousMedian
  • @Test FindLoop
  • @Test ReverseLinkedList
  • @Test ShiftLinkedList
  • @Test LowestCommonManager
  • @Test InterweavingStrings
  • @Test ShiftedBinarySearch
  • @Test SearchForRange
  • @Test QuickSelect
  • @Test IndexEqualsValue
  • @Test QuickSort
  • @Test HeapSort
  • @Test ShortenPath
  • @Test LongestSubstringWithoutDuplication
  • @Test UnderscorifySubstring
  • @Test PatternMatcher
  • @Test MultiStringSearch
  • @Test FindNodesDistanceK
  • @Test SortKSortedArray
  • @Test GenerateDivTags
  • @Test LaptopRentals
  • @Test MaximumSumSubMatrix
  • @Test LargestRectangleUnderSkyline
  • @Test SolveSudoku

Very hard problems

  • @Test ApartmentHunting
  • @Test CalendarMatching
  • @Test MergeSort
  • @Test MergeSortedArrays
  • @Test MaxProfitWithKTransactions
  • @Test RightSmallerThan
  • @Test WaterfallStreams
  • @Test LRUCache
  • @Test LongestStringChain

Package 2: Leetcode.com

https://leetcode.com/problemset/all/

Easy problems

  • @Test TwoSum
  • @Test ReverseInteger
  • @Test ClimbingStairs
  • @Test PalindromeNumber
  • @Test DivisorGame
  • @Test BestTimeToBuyAndSellStock
  • @Test BestTimeToBuyAndSellStockMultiple
  • @Test RomanToInteger
  • @Test ValidParentheses
  • @Test MergeTwoSortedLists
  • @Test FindTheTownJudge
  • @Test RomanToInteger
  • @Test RemoveElement
  • @Test RemoveDuplicatesFromSortedArray
  • @Test ImplementStrStr
  • @Test FindFirstAndLastPositionOfElementInSortedArray
  • @Test SearchInsertPosition
  • @Test RansomNote
  • @Test SummaryRanges
  • @Test RelativeRanks
  • @Test MaximumSubarray
  • @Test RangeSumQuery
  • @Test IsSubsequence
  • @Test MinCostClimbingStairs
  • @Test LoggerRateLimiter
  • @Test FibonacciNumber
  • @Test MovingAverageFromDataStream
  • @Test EmployeeImportance
  • @Test ThirdMaximumNumber
  • @Test InvertBinaryTree
  • @Test DiameterOfBinaryTree
  • @Test LongestContinuousIncreasingSubsequence
  • @Test VerifyingAnAlienDictionary
  • @Test ValidPalindrome2
  • @Test AddStrings
  • @Test AddBinary
  • @Test ValidPalindrome
  • @Test RangeSumOfBST
  • @Test FirstBadVersion
  • @Test ClosestBinarySearchTreeValue
  • @Test IntersectionOfTwoArraysII
  • @Test BinaryTreePaths
  • @Test MergeSortedArray
  • @Test KthMissingPositiveNumber
  • @Test PalindromePermutation
  • @Test ReadNCharactersGivenRead4
  • @Test MonotonicArray
  • @Test RemoveLinkedListElements
  • @Test SquaresOfASortedArray
  • @Test RemoveAllAdjacentDuplicatesInString
  • @Test MissingRanges
  • @Test MoveZeroes
  • @Test StrobogrammaticNumber
  • @Test SymmetricTree
  • @Test SqrtX
  • @Test SameTree
  • @Test MaximumDepthOfBinaryTree
  • @Test PathSum
  • @Test ValidPerfectSquare

Medium problems

  • @Test AddTwoNumbers
  • @Test LongestSubstringWithoutRepeatingCharacters
  • @Test LongestPalindromicSubstring
  • @Test ZigZagConversion
  • @Test StringToInteger
  • @Test ContainerWithMostWater
  • @Test IntegerToRoman
  • @Test BinarySearchTreeToGreaterSumTree
  • @Test ThreeSum
  • @Test ValidateBinarySearchTree
  • @Test LetterCombinationsOfAPhoneNumber
  • @Test FourSum
  • @Test SwapNodesInPairs
  • @Test SearchInRotatedSortedArray
  • @Test PowXN
  • @Test GroupAnagrams
  • @Test Permutations
  • @Test PermutationsUnique
  • @Test RotateImage
  • @Test MaximumPointsYouCanObtainFromCards
  • @Test ArithmeticSlices
  • @Test WordSearch
  • @Test LRUCache
  • @Test RandomPickWithWeight
  • @Test MaxAreaOfIsland
  • @Test ClosedIslands
  • @Test LongestStringChain
  • @Test ValidateStackSequences
  • @Test MyCalendar
  • @Test ExpressiveWords
  • @Test HandOfStraights
  • @Test TwoKeysKeyboard
  • @Test AlphabetBoardPath
  • @Test FindAndReplaceInString
  • @Test SnapshotArray
  • @Test WordBreak
  • @Test JumpGame1
  • @Test MergeIntervals
  • @Test CarFleet
  • @Test AccountsMerge
  • @Test MinimumPathSum
  • @Test CoinChange
  • @Test CoinChangeDifferentCombinations
  • @Test CourseSchedule
  • @Test ProductOfArrayExceptSelf
  • @Test LongestIncreasingSubsequence
  • @Test DecodeString
  • @Test CountSquares
  • @Test MaximumFontToFit
  • @Test LeftmostColumnWithAtLeastAOne
  • @Test KClosestPointsToOrigin
  • @Test SparseVector
  • @Test SubarraySumEqualsK
  • @Test MinimumRemoveToMakeValidParentheses
  • @Test MaximumProductSubarray
  • @Test BinaryTreeVerticalOrderTraversal
  • @Test KthLargestElementInAnArray
  • @Test BinaryTreeRightSideView
  • @Test DesignAddAndSearchWordsDataStructure
  • @Test ConvertBinarySearchTreeToSortedDoublyLinkedList
  • @Test ExclusiveTimeOfFunctions
  • @Test IntervalListIntersections
  • @Test ContinuousSubArraySum
  • @Test BinarySearchTreeIterator
  • @Test TaskScheduler
  • @Test CountAndSay
  • @Test RandomPickIndex
  • @Test LowestCommonAncestorOfABinaryTree
  • @Test LowestCommonAncestorOfABinaryTreeIII
  • @Test LongestSubstringWithAtMostKDistinctCharacters
  • @Test BuildingsWithAnOceanView
  • @Test NextPermutation
  • @Test CloneGraph
  • @Test GroupShiftedStrings
  • @Test AsFarFromLandAsPossible
  • @Test InsertIntoASortedCircularLinkedList
  • @Test SimplifyPath
  • @Test NestedListWeightSum
  • @Test LargestBSTSubTree
  • @Test AllNodesDistanceKInBinaryTree
  • @Test FindKClosestElements
  • @Test MaxConsecutiveOnesIII
  • @Test MaximumSwap
  • @Test FriendsOfAppropriateAges
  • @Test RemoveAllAdjacentDuplicatesInStringII
  • @Test RemoveSubFoldersFromTheFilesystem
  • @Test StrobogrammaticNumberII
  • @Test ConstructBinaryTreeFromString
  • @Test FindLargestValueInEachTreeRow
  • @Test TopKFrequentElements
  • @Test MinimumAddToMakeParenthesesValid
  • @Test MeetingRooms2
  • @Test BinaryTreeLevelOrderTraversal
  • @Test AllPathsFromSourceToTarget
  • @Test CombinationSum
  • @Test Subset
  • @Test SearchIn2DMatrix
  • @Test LongestSubstringWithAtLeastKRepeatingCharacters
  • @Test FindKLengthSubstringsWithNoRepeatedCharacters
  • @Test PathSum2
  • @Test NumberOfIslands
  • @Test HouseRobber
  • @Test HouseRobber2
  • @Test TargetSum
  • @Test OnesAndZeros
  • @Test PathWithMinimumEffort
  • @Test MinDiffInThreeMoves
  • @Test InsertInterval
  • @Test ValidSquare
  • @Test RangeSumQuery2D
  • @Test RLEIterator
  • @Test SurroundedRegions
  • @Test FindDuplicateSubtrees
  • @Test BullsAndCows
  • @Test NumberOfMatchingSubsequences
  • @Test DeleteNodesAndReturnForest
  • @Test PathWithMaximumGold
  • @Test SentenceScreenFitting
  • @Test FindTwoNonOverlappingSubArraysEachWithTargetSum
  • @Test FlipEquivalentBinaryTrees
  • @Test TimeNeededToInformAllEmployees
  • @Test StoneGame
  • @Test Subsets

Hard problems

  • @Test MedianOfTwoSortedArrays
  • @Test RegularExpressionMatching (WIP)
  • @Test TrappingRainWater
  • @Test BestTimeToBuyAndSellStock: (2 transactions)
  • @Test BestTimeToBuyAndSellStock (k Transactions)
  • @Test LongestValidParentheses
  • @Test MaximumSumBSTInBinaryTree (WIP)
  • @Test MergeKSortedLists
  • @Test SubstringWithConcatenationOfAllWords
  • @Test LFUCache - O(n) put()
  • @Test LFUCacheOptimized - O(1) put()
  • @Test RobotRoomCleaner
  • @Test MedianFinder - O(n)
  • @Test SlidingWindowMaximum
  • @Test SlidingWindowMaximumWithDequeue - O(n)
  • @Test LongestContinuousSubArray - With Heap (O(nlog(n)))
  • @Test MinimumWindowSubsequence
  • @Test GuessTheWord
  • @Test BinaryTreeMaximumPathSum
  • @Test JumpGame2
  • @Test LargestRectangleInHistogram
  • @Test StringTransformsIntoAnotherString
  • @Test RussianDollEnvelopes
  • @Test LongestIncreasingPathInAMatrix
  • @Test CountOfSmallerNumbersAfterSelf
  • @Test EncodeStringWithShortestLengthJava
  • @Test VerticalOrderTraversalOfABinaryTree
  • @Test ValidPalindrome3
  • @Test MinimumNumberOfIncrementsOnSubArraysToFormATargetArray
  • @Test StoneGame3

Package 3: hackerRank

Kotlin implementation of Hacker Rank interview preparation kit

Algorithms Challenges

https://www.hackerrank.com/domains/algorithms

  • @Test BetweenTwoSets
  • @Test MinimumDistances

Array Challenges

https://www.hackerrank.com/interview/interview-preparation-kit/arrays/challenges

  • @Test ArrayManipulation
  • @Test LeftRotation
  • @Test MinimumSwaps2
  • @Test NewYearChaos
  • @Test TwoDArrayDS (Hourglass)

Dictionaries and Hashmaps

https://www.hackerrank.com/interview/interview-preparation-kit/dictionaries-hashmaps/challenges

  • @Test CountTriplets (WIP)
  • @Test SherlockAndAnagrams (WIP)
  • @Test TwoStrings

String Challenges

https://www.hackerrank.com/interview/interview-preparation-kit/strings/challenges

  • @Test AlternatingCharacters
  • @Test CommonChild
  • @Test MakingAnagrams (WIP)
  • @Test SherlockAndTheValidString
  • @Test MarsExploration
  • @Test HackerRankInAString
  • @Test SpecialStringAgain

Tree Challenges

https://www.hackerrank.com/interview/interview-preparation-kit/trees/challenges

  • @Test LowestCommonAncestor (on BST)
  • @Test IsThisABinarySearchTree (Java implementation)
  • @Test IsThisABinarySearchTreeK (Kotlin implementation)
  • @Test BalancedForest (WIP)

Warm-up Challenges

https://www.hackerrank.com/interview/interview-preparation-kit/warmup/challenges

  • @Test sock_merchant
  • @Test sock_merchant_without_collection_functions
  • @Test jumping_on_the_clouds
  • @Test counting_valleys
  • @Test repeated_strings

Package 4: crackingTheCodingInterview

The exercises of the book 'Cracking the coding interview' by Gayle Laakmann McDowell (the 'green' book)

Arrays and Strings

  • @Test IsUnique
  • @Test CheckPermutation
  • @Test URLify
  • @Test PalindromePermutation
  • @Test OneAway
  • @Test StringCompression
  • @Test WeekCount

Package 5: other

Exercises from all other sources ie. GeekForGeeks.com

  • @Test SeparateZeros
  • @Test TreeSetPractice
  • @Test MaxHouseBuy
  • @Test WordDice
  • @Test RotationalCipher
  • @Test HeapPractice

About

Optimal solutions to data structure & algorithm questions from variety of sources.


Languages

Language:Kotlin 97.5%Language:Java 2.5%