Skip to content

Repository files navigation

Solutions to problems on HackerRank.

HackerRank's new problem format!

If you are interested in helping or have a solution in a different language feel free to make a pull request.

Core CS AlgorithmsPoints

General Programming

  • Basic Programming
  • Object-Oriented Programming
  • RegEx

Algorithms

  • Sorting
  • Search
  • Greedy Algorithms
  • Graph Theory
  • Strings
  • Dynamic Programming
  • Bit Manipulation
  • Recursion

Implementation

  • Brute-Force

DataStructures

  • Arrays
  • Linked Lists
  • Trees
  • Balanced Trees
  • Stacks
  • Queues
  • Heap
  • Disjoint Set
  • Multiple Choice
  • Trie
  • Advanced

Math

  • Fundamentals
  • Number Theory
  • Combinatorics
  • Algebra
  • Geometry
  • Probability
  • Linear Algebra Foundations

Languages

C++

  • Introduction
  • Strings
  • Classes
  • STL
  • Inheritance
  • Other Concepts

Java

  • Introduction
  • Strings
  • BigNumber
  • Data Structures
  • Object Oriented Programming
  • Exception Handling
  • Advanced

Python

  • Introduction
  • Classes
  • Basic Data Types
  • Strings
  • Python Functionals
  • Regex and Parsing
  • XML
  • Closures and Decorators
  • Sets
  • Math
  • Itertools
  • Collections
  • Date and Time
  • Errors and Exceptions
  • Numpy

Solutions

Basic Programming

#TitleSolutionTimeSpaceDifficultyPointsNote
Solve Me FirstJavaO(1)O(1)Easy1
StaircaseJavaO(n)O(n)Easy10
Plus MinusJavaO(n)O(1)Easy10
Diagonal DifferenceJavaO(n^2)O(1)Easy10
A Very Big SumJavaO(n)O(1)Easy10
Simple Array SumJavaO(n)O(1)Easy10
Compare the TripletsJavaO(1)O(1)Easy10
Divisible Sum PairsJavaO(n^2)O(n)Easy10
KangarooJavaO(1)O(1)Easy10
Drawing BookJavaEasy10
Birthday Cake CandlesJavaO(n)O(1)Easy10
Bon AppetitJavaEasy10
Sock MerchantJavaEasy10
Apple and OrangeJavaEasy10
Between Two SetsJavaO((A^2)+B)O(1)Easy10
Mini-Max SumJavaO(1)O(1)Easy10
Grading StudentsJavaO(n)O(1)Easy10
Breaking the RecordsJavaO(n)O(1)Easy10
Migratory BirdsJavaEasy10
Birthday ChocolateJavaO(n)O(1)Easy10
Time ConversionJavaO(1)O(1)Easy15
Library FineJavaEasy15
Save the Prisoner!JavaEasy15
Jumping on the Clouds: RevisitedJavaEasy15
Counting ValleysJavaO(n)O(1)Easy15
Viral AdvertisingJavaEasy15
Beautiful Days at the MoviesJavaEasy15
Electronics ShopJavaO(n log (n))O(1)Easy15n = m+n
Cats and a MouseJavaO(1)O(1)Easy15
The Hurdle RaceJavaO(n)O(1)Easy15
Utopian TreeJavaEasy20
Service LaneJavaEasy20
Circular Array RotationJavaEasy20
Sherlock and SquaresJavaEasy20
Angry ProfessorJavaEasy20
Extra Long FactorialsJavaMedium20
Minimum DistancesJavaEasy20
Non-Divisible SubsetJavaMedium20
Beautiful TripletsJavaEasy20
Jumping on the CloudsJavaEasy20
Equalize the ArrayJavaEasy20
Designer PDF ViewerJavaEasy20
Magic Square FormingJavaEasy20
Repeated StringJavaEasy20
Bitwise ANDJavaEasy20
Divisible Pairs SumJavaEasy20
Append and DeleteJavaEasy20
Picking NumbersJavaO(n)O(n)Easy20
Climbing the LeaderboardJavaO(n+m)(n)Easy20
Sequence EquationJavaO(n)O(n)Easy20
Find DigitsJavaEasy25
Chocolate FeastJavaEasy25
Cut the sticksJavaEasy25
ACM ICPC TeamJavaEasy25
Taum and B'dayJavaEasy25
The Time in WordsJavaMedium25
Flatland Space StationsJavaEasy25
Lisa's WorkbookJavaEasy25
Fair RationsJavaEasy25
Manasa and StonesJavaEasy30
Cavity MapJavaEasy30
The Grid SearchJavaMedium30
Happy LadybugsJavaEasy30
Strange CounterJavaEasy30
Consecutive 1's in Binary NumbersJavaEasy30
Nested LogicJavaEasy30

Object-Oriented Programming

#TitleSolutionTimeSpaceDifficultyPointsNote
Class vs. InstanceJavaEasy30
InheritanceJavaO(n)O(1)Easy30
Abstract ClassesJavaEasy30

RegEx

#TitleSolutionTimeSpaceDifficultyPointsNote
UK and US: Part 2JavaEasy10
Alien UsernameJavaEasy10
Detect HTML TagsJavaEasy10
Detect HTML linksJavaEasy10
Find A Sub-WordJavaEasy10
IP Address ValidationJavaEasy10
Find HackerRankJavaEasy15
The British and American Style of SpellingJavaEasy15
Split the Phone NumbersJavaEasy15
Valid PAN formatJavaEasy15
Saying HiJavaEasy15
HackerRank TweetsJavaEasy15
HackerRank LanguageJavaEasy15
Utopian Identification NumberJavaEasy15
Find a WordJavaMedium15
Build a Stack Exchange ScraperJavaEasy15
Detect the Domain NameJavaMedium15
Detect the Email AddressesJavaMedium15
Detect HTML AttributesJavaEasy20
HackerRank in a String!JavaO(n)O(1)Easy20
Building a Smart IDE: Programming Language DetectionJavaMedium30
Count StringsJavaHard80

Sorting

#TitleSolutionTimeSpaceDifficultyPointsNote
Intro to Tutorial ChallengesJavaO(n)O(1)Easy30
Insertion Sort - Part 1JavaO(n)O(1)Easy30
Insertion Sort - Part 2JavaO(n^2)O(1)Easy30
Insertion Sort Advanced AnalysisJavaAdvanced50
Correctness and the Loop InvariantJavaO(n^2)O(1)Easy30
Running Time of AlgorithmsJavaO(n^2)O(1)Easy30
Quicksort 1 - PartitionJavaO(n)O(n)Easy10
Quicksort 2 - SortingJavaO(n^2)O(n)Easy30
Quicksort In-PlaceJavaO(n^2)O(log(n))Medium35
Running Time of QuicksortJavaO(n log(n))O(log(n))Easy35
Counting Sort 1JavaO(n+k)O(k)Easy30
Counting Sort 2JavaO(n+k)O(k)Easy30
Counting Sort 3JavaO(n+k)O(k)Easy30
The Full Counting SortJavaO(n+k)O(k)Medium40
Marc's CakewalkJavaO(n + k)O(k)Easy15
Minimum Absolute Difference in an ArrayJavaO(n log(n))O(1)Easy15
Organizing Containers of BallsJavaO(n^2)O(n^2)Medium30
Find the MedianJavaO(n log(n))O(n)Easy35
Closest NumbersJavaO(n log(n))O(n)Easy35
Mark and ToysJavaO(n log(n))O(n)Easy35
Permuting Two ArraysJavaO(n log (n))O(n)Easy40
Jim and the OrdersJavaO(n log (n))O(n)Easy40
Fraudulent Activity NotificationsJavaO(n^2)O(n)Medium40
Lily's HomeworkJavaO(n log(n))O(n)Medium40
Merge Sort: Counting InversionsJavaHard45
Mr. X and His ShotsJavaMedium50
Super Maximum Cost QueriesJavaHard60
GCD MatrixJavaHard60
A Super HeroJavaHard80
Functional PalindromesJavaAdvanced80
Super Functional StringsJavaAdvanced80
Sorted SubsegmentsJavaHard80

Search

#TitleSolutionTimeSpaceDifficultyPointsNote
Hackerland Radio TransmittersJSO(n log(n))O(1)Easy15
Lonely IntegerJavaO(n)O(1)Easy20
Bit Manipulation: Lonely IntegerJavaO(n)O(1)Easy20
Gridland MetroJavaMedium25
Ice Cream ParlorJavaO(n)O(n)Easy30
Greedy FloristJavaMedium35
Find the MedianJavaO(n log(n))O(n)Easy35
Closest NumbersJavaO(n log(n))O(n)Easy35
Binary Search: Ice Cream ParlorJavaO(n)O(n)Easy35
Minimum LossJavaO(n log(n))O(n)Medium35
KnightL on a ChessboardJavaMedium35
Sherlock and ArrayJava [C++]O(n)O(n)Easy40
Short PalindromeJavaMedium40
Missing NumbersJavaEasy45
Making CandiesJavaHard45
DFS: Connected Cell in a GridJavahard45
PairsJavaMedium50
Count LuckJavaMedium50
Cut the TreeJavaMedium50
Connected Cells in a gridJavaMedium50
Gena Playing HanoiJavaMedium50
Beautiful QuadruplesJavaMedium50
Coin on the TableJavaMedium65
Interval SelectionJavaMedium65
Bike RacersJavaHard65
Maximum Subarray SumJavaHard65
Task SchedulingJavaAdvanced70
Queens on BoardJavaHard70
Median UpdatesJavaHard70
Similar PairJavaAdvanced70
Absolute Element SumsJavaHard70
Maximizing Mission PointsJavaHard70
Arithmetic ProgressionsJavaAdvanced80
BillboardsJavaAdvanced80
RequirementJavaAdvanced80
King Richard's KnightsJavaHard80
Sorted SubsegmentsJavaHard80
Distant PairsJavaExpert80
TripletsJavaMedium20
Spies, RevisedJavaExpert100
TBS ProblemJavaExpert100

Greedy Algorithms

#TitleSolutionTimeSpaceDifficultyPointsNote
Two CharactersJavaO(n)O(1)Easy15
Marc's CakewalkJavaO(n + k)O(k)Easy15
Grid ChallengeJavaO(n*(n log (n)))O(n^2)Easy20
Luck BalanceJavaO(n log(n))O(1)Easy20
Maximum Perimeter TriangleJavaO(n log (n))O(n)Easy20
Equal StacksJavaO(n)O(n)Easy25
Sherlock and The BeastJavaO(n)O(n)Easy30
Priyanka and ToysJavaO(n log(n))O(n)Easy30
Largest PermutationJavaEasy30
Beautiful PairsJavaEasy30
Yet Another Minimax ProblemJavaMedium20
Flipping the MatrixJavaO(n^2)O(n^2)Medium30
Roads and LibrariesJavaMedium30
Greedy FloristJavaMedium35
Mark and ToysJavaO(n log(n))O(n)Easy35
Max MinJavaMedium35
Permuting Two ArraysJavaEasy40
Jim and the OrdersJavaEasy40
Goodland ElectricityJavaMedium40
Fun GameJavaMedium40
Reverse Shuffle MergeJavaAdvanced50
Cutting BoardsJavaHard60
Algorithmic CrushJavaHard60
Prim's (MST): Special SubtreeJavaMedium60
Accessory CollectionJavaHard60
Chief HopperJavaO(n)O(n)Hard65
Sherlock and MiniMaxJavaHard70
Team FormationJavaAdvanced70

Graph Theory

#TitleSolutionTimeSpaceDifficultyPointsNote
Roads and LibrariesJavaMedium30
Synchronous ShoppingJavaMedium40
Crab GraphsJavaMedium50
Even TreeJavaMedium50
Snakes and Ladders: THe Quickest Way UpJavaMedium50
Subset ComponentJavaHard50
Journey to the MoonJava Python 3O(n + i)O(n)Medium50
Kruskal (MST): Really Special SubtreeJavaHard50
Minimum Penalty PathJavaMedium50
Demanding MoneyJavaHard50

Strings

#TitleSolutionTimeSpaceDifficultyPointsNote
Super Reduced StringJavaEasy10
camelCaseJavaEasy15
Two CharactersJavaO(n)O(1)Easy15
Caesar CipherJavaEasy15
Mars ExplorationJavaEasy15
Weighted Uniform StringsJavaEasy20
Separate the NumbersJavaEasy20
Funny StringJavaEasy25
GemstonesJavaEasy20
Alternating CharactersJavaEasy20
Beautiful Binary StringJavaEasy20
The Love-Letter MysteryJavaO(n)O(1)Easy20
Determining DNA HealthJavaHard50
Palindrome IndexJavaEasy25
AnagramJavaO(n)O(1)Easy25
Game of Thrones - IJavaO(n)O(1)Easy30
Two StringsJavaO(|a| + |b|)O(1)Easy25
String ConstructionJavaEasy25
Sherlock and Valid StringJavaO(n)O(n)Hard100
Richie RichJavaMedium30
Sherlock and AnagramsJavaMedium50
Common ChildJavaHard60
Bear and Steady GeneJavaMedium50
Morgan and a StringJavaExpert100
Count StringsJavaHard80
String Function CalculationJavaAdvanced80
Build a PalindromeJavaAdvanced80
Build a StringJavaHard80
Gridland ProvincesJavaHard80
Ashton and StringJavaAdvanced100
String SimilarityJavaExpert100
Super Functional StringsJavaAdvanced80
Circular PalindromesJavaAdvanced120
Similar StringsJavaAdvanced85
Save HumanityJavaExpert100
Find StringsJavaExpert100
Palindromic BorderJavaExpert100
Two TwoJavaAdvanced150
Two Strings GameJavaExpert100
Letter IslandsJavaExpert100
Pseudo-Isomorphic SubstringsJavaExpert100
How Many Substrings?JavaExpert100

Dynamic Programming

#TitleSolutionTimeSpaceDifficultyPointsNote
EqualJavaMedium30
Cut TreeJavaMedium40
Mr K marshJavaMedium40
Sam and sub-stringsJavaMedium40
Summing PiecesJavaMedium40
Short PalindromeJavaMedium40
AbbreviationJavaMedium40
Fair CutJavaMedium40
Fibonacci ModifiedJavaMedium45
Lego BlocksJavaMedium50
CandiesJavaMedium50
Stock MaximizeJavaMedium50
Angry Childtren 2JavaHard50
The Maximum SubarrayJavaMedium50
Sherlock and CostJavaMedium50
Xor and SumJavaMedium50
Counting Special Sub-CubesJavaMedium50
Two RobotsJavaMedium50
Kingdom DivisionJavaMedium50
Prime XORJavaMedium50
HackerRank CityJavaMedium50
Nikita and the GameJavaMedium50
Prime Digit SumsJavaMedium50
Mandragora ForestJavaMedium50
LCS ReturnsJavaMedium50
Grid WalkingJavaMedium55
Bricks GameJavaMedium55
The Longest Common SubsequenceJavaMedium55
Substring DiffJavaMedium60
Brick TilingJavaHard60
Alien LanguagesJavaHard60
The Longest Increasing SubsequenceJavaAdvanced60
The Coin Change ProblemJavaHard60
KnapsackJavaMedium60
Sherlock's Array Merging AlgorithmJavaHard60
New Year GameJavaMedium60
Shashank and the Palindromic StringsJavaAdvanced60
Decibinary NumbersJavaHard60
Choosing White BallsJavaHard60
DP: Coin ChangeJavaHard60
Clues on a Binary PathJavaHard60
GCD MatrixJavaHard60
Coin on the TableJavaMedium65
Interval SelectionJavaMedium65
Red John is BackJavaMedium65
Play with wordsJavaMedium65
Queens on BoardJavaHard70
String ReductionJavaHard70
Far VerticesJavaHard70
The Indian JobJavaMedium70
Hexagonal GridJavaHard70
Longest Palindromic SubsequenceJavaHard70
Turn Off the LightsJavaHard70
Tara's Beautiful PermutationsJavaHard70
Two SubarraysJavaExpert70
MiningJavaAdvanced75
The Longest Common Subsequence (LCS)JavaHard75
Points in a PlaneJavaAdvanced80
Fairy ChessJavaAdvanced80
BillboardsJavaAdvanced80
RequirementJavaAdvanced80
A Super HeroJavaHard80
Covering the stainsJavaHard80
Superman Celebrates DiwaliJavaHard80
Wet Shark and Two SubsequencesJavaMedium80
Zurikela's GraphJavaHard80
New Year PresentJavaHard80
Suffix RotationJavaExpert80
Black and White TreeJavaHard80
Beautiful StringsJavaHard80
Longest Mod PathJavaHard80
Super Functional StringsJavaAdvanced80
Kitty's Calculations on a TreeJavaAdvanced80
LiarsJavaAdvanced85
Dorsey ThiefJavaAdvanced85
Swap PermutationJavaMedium85
Candles CountingJavaMedium85
Square SubsequencesJavaHard90
Hyper StringsJavaAdvanced90
Unique Divide And ConquerJavaAdvanced90
Super Kth LISJavaAdvanced90
Counting Road NetworksJavaExpert90
Lucky NumbersJavaExpert100
Count ScorecardsJavaExpert100
Unfair GameJavaAdvanced100
Oil WellJavaHard100
Modify The SequenceJavaAdvanced100
Divisible NumbersJavaExpert100
Ones and TwosJavaHard100
Extremum PermutationsJavaMedium100
Tree PruningJavaAdvanced100
P-sequencesJavaHard100
Best spotJavaAdvanced100
Find the SeedJavaAdvanced100
The BlacklistJavaAdvanced100
Police OperationJavaHard100
Road MaintenanceJavaHard100
King and Four SonsJavaExpert100
Counting the WaysJavaExpert100
Hard Disk DrivesJavaExpert100
Travel around the worldJavaMedium120
RobotJavaAdvanced120
Vim WarJavaAdvanced120
Dortmund DilemmaJavaAdvanced150
Separate the chocolateJavaExpert250

Bit Manipulation

#TitleSolutionTimeSpaceDifficultyPointsNote

Recursion

#TitleSolutionTimeSpaceDifficultyPointsNote
The Power SumJavaEasy20
Crossword PuzzleJavaMedium30
Recursive Digit SumJavaMedium30
Simplified Chess EngineJavaMedium40
Password CrackerJavaMedium40
Artithmetic ExpressionsJavaHard40
K FactorizationJavaHard50
Bowling PinsJavaAdvanced60
Simplified Chess Engine IIJavaHard60
Repetitive K-SumsJavaAdvanced150

Constructive Algorithms

#TitleSolutionTimeSpaceDifficultyPointsNote
Lena SortJavaMedium30
Flipping the MatrixJavaO(n^2)O(n^2)Medium30
Gaming ArrayJavaMedium35
New Year ChaosJavaMedium40
BonetrousleJavaMedium50
Yet Another KMP ProblemJavaHard60
Beautiful 3 SetJavaHard60
Inverse RMQJavaHard60
Two SubarraysJavaExpert70
Lovely TripletsJavaAdvanced80
Array ConstructionJavaAdvanced80

Brute-Force

#TitleSolutionTimeSpaceDifficultyPointsNote
PangramsJavaEasy20
Climbing the LeaderboardJavaO(n+m)(n)Easy20
Strings: Making AnagramsJavaO(|a|+|b|)O(1)Easy30
EnryptionJavaMedium30
Making AnagramsJavaEasy30
Modified Kaprekar NumbersJavaEasy30
Queen's Attack IIJavaO(k)O(1)Medium30
Organizing Containers of BallsJavaO(n^2)O(n^2)Medium30
Bigger is GreaterJavaMedium35
Ema's SupercomputerJavaMedium40
Absolute PermuationJavaMedium40
Larry's ArrayJavaMedium40
The Bomberman GameJavaO(n*m)O(n*m)Medium40
Almost SortedJavaMedium50
Beautiful QuadruplesJavaMedium50
HackerRank CityJavaMedium50
Maximizing the FunctionJavaHard70
Matrix Layer RotationJavaHard80
Gridland ProvincesJavaHard80
Fighting PitsJavaHard80
Find the permutationJavaExpert150

Missing Lines

#TitleSolutionTimeSpaceDifficultyPointsNote
Lonely Integer - Fill the key-lineJavaEasy20
Make It AnagramJavaEasy20

Data Structures

Arrays

#TitleSolutionTimeSpaceDifficultyPointsNote

Stacks

#TitleSolutionTimeSpaceDifficultyPointsNote

Trees

#TitleSolutionTimeSpaceDifficultyPointsNote

Linked Lists

#TitleSolutionTimeSpaceDifficultyPointsNote
Compare two linked listsC++O(n)O(1)Easy5

Graphs

#TitleSolutionTimeSpaceDifficultyPointsNote

Tries

#TitleSolutionTimeSpaceDifficultyPointsNote

Queues

#TitleSolutionTimeSpaceDifficultyPointsNote

Suffix Array

#TitleSolutionTimeSpaceDifficultyPointsNote

Heaps

#TitleSolutionTimeSpaceDifficultyPointsNote

Disjoint Set

#TitleSolutionTimeSpaceDifficultyPointsNote

Math

Number Theory

#TitleSolutionTimeSpaceDifficultyPointsNote

Game Theory

#TitleSolutionTimeSpaceDifficultyPointsNote

Geometry

#TitleSolutionTimeSpaceDifficultyPointsNote

Algebra

#TitleSolutionTimeSpaceDifficultyPointsNote

Fundamentals

#TitleSolutionTimeSpaceDifficultyPointsNote

Combinatorics

#TitleSolutionTimeSpaceDifficultyPointsNote

Probability

#TitleSolutionTimeSpaceDifficultyPointsNote

| | Walking the Approximate Longest Path| Java | | | Hard | 70 | || | | Sam's Puzzle (Approximate)| Java | | | Advanced | 85 | || | | Java Substring| Java | O(1) | O(1) | Easy | 5 | ||

About

hackerank solution using java programming language

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages