Skip to content

Commit 97195eb

Browse files
committed
added Perfect Squares (Medium)
1 parent 3d57dbe commit 97195eb

File tree

3 files changed

+122
-80
lines changed

3 files changed

+122
-80
lines changed

Medium/PerfectSquares/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Perfect Squares
2+
3+
[Leetcode Link](https://leetcode.com/problems/perfect-squares/)
4+
5+
## Problem:
6+
7+
Given a positive integer _n_, find the least number of perfect square numbers (for example, `1, 4, 9, 16, ...`) which sum to _n_.
8+
9+
## Example:
10+
11+
```
12+
Input: n = 12
13+
Output: 3
14+
Explanation: 12 = 4 + 4 + 4.
15+
```
16+
17+
```
18+
Input: n = 13
19+
Output: 2
20+
Explanation: 13 = 4 + 9.
21+
```

Medium/PerfectSquares/solution.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import math
2+
3+
4+
def numSquares(n: int) -> int:
5+
queue = list([(n, 0)])
6+
visited = set([n])
7+
while queue:
8+
currentNum, depth = queue.pop(0)
9+
maxSqrt = math.floor(math.sqrt(currentNum))
10+
for i in range(maxSqrt, -1, -1):
11+
remainingNum = currentNum - i * i
12+
if remainingNum == 0:
13+
return depth+1
14+
elif remainingNum not in visited:
15+
queue.append((remainingNum, depth+1))
16+
17+
18+
print(numSquares(12))
19+
print(numSquares(13))
20+
print(numSquares(61))
21+
print(numSquares(48))

README.md

Lines changed: 80 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -9,96 +9,96 @@ Languages used: Java and Python
99
## Navigation
1010

1111
- Easy
12-
- [Sum of Even Numbers After Queries](Easy/SumOfEvenNumbersAfterQueries)
13-
- [Next Greater Element 1](Easy/NextGreaterElement1)
14-
- [Longest Common Prefix](Easy/LongestCommonPrefix)
15-
- [Intersection of Two Arrays](Easy/IntersectionOfTwoArrays)
16-
- [Backspace String Compare](Easy/BackspaceStringCompare)
17-
- [Merge Two Sorted Lists](Easy/MergeTwoSortedLists)
18-
- [Climbing Stairs](Easy/ClimbingStairs)
19-
- [Fair Candy Swap](Easy/FairCandySwap)
20-
- [Maximize Distance to Closest Person](Easy/MaximizeDistanceToClosestPerson)
21-
- [Find Common Characters](Easy/FindCommonCharacters)
22-
- [Third Maximum Number](Easy/ThirdMaximumNumber)
23-
- [String Matching in an Array](Easy/StringMatchingInArray)
24-
- [Minimum Value to Get Positive Step by Step Sum](Easy/MinValStepSum)
25-
- [Maximum Product of Three Numbers](Easy/MaxProductofThreeNumbers)
26-
- [Maximize Sum Of Array After K Negations](Easy/MaximizeSumAfterKNegations)
27-
- [House Robber](Easy/HouseRobber)
28-
- [Majority Element](Easy/MajorityElement)
29-
- [Reshape the Matrix](Easy/ReshapeMatrix)
30-
- [Shortest Unsorted Continuous Subarray](Easy/ShortedUnsortedContinuousSubarray)
31-
- [Find Lucky Integer in an Array](Easy/FindLuckyIntegerInArray)
32-
- [N-Repeated Element in Size 2N Array](Easy/N_RepeatedElementInArray)
33-
- [Sort Array By Parity](Easy/SortArrayByParity)
34-
- [Isomorphic Strings](Easy/IsomorphicStrings)
35-
- [Binary Prefix Divisible By 5](Easy/BinaryPrefixDivBy5)
36-
- [Rank Transform of an Array](Easy/RankTransformArray)
37-
- [Add to Array-Form of Integer](Easy/AddToArrayFormInteger)
38-
- [Sqrt(x)](Easy/SqrtX)
39-
- [Shuffle the Array](Easy/ShuffleArray)
40-
- [Remove Duplicates from Sorted List](Easy/RemoveDuplicatesFromSortedList)
41-
- [Longest Continuous Increasing Subsequence](Easy/LongestIncreasingSubsequence)
42-
- [Happy Number](Easy/HappyNumber)
43-
- [Assign Cookies](Easy/AssignCookies)
44-
- [Rotate Array](Easy/RotateArray)
45-
- [N-ary Tree Postorder Traversal](Easy/NaryTreePostorderTraversal)
12+
- [Sum of Even Numbers After Queries](Easy/SumOfEvenNumbersAfterQueries)
13+
- [Next Greater Element 1](Easy/NextGreaterElement1)
14+
- [Longest Common Prefix](Easy/LongestCommonPrefix)
15+
- [Intersection of Two Arrays](Easy/IntersectionOfTwoArrays)
16+
- [Backspace String Compare](Easy/BackspaceStringCompare)
17+
- [Merge Two Sorted Lists](Easy/MergeTwoSortedLists)
18+
- [Climbing Stairs](Easy/ClimbingStairs)
19+
- [Fair Candy Swap](Easy/FairCandySwap)
20+
- [Maximize Distance to Closest Person](Easy/MaximizeDistanceToClosestPerson)
21+
- [Find Common Characters](Easy/FindCommonCharacters)
22+
- [Third Maximum Number](Easy/ThirdMaximumNumber)
23+
- [String Matching in an Array](Easy/StringMatchingInArray)
24+
- [Minimum Value to Get Positive Step by Step Sum](Easy/MinValStepSum)
25+
- [Maximum Product of Three Numbers](Easy/MaxProductofThreeNumbers)
26+
- [Maximize Sum Of Array After K Negations](Easy/MaximizeSumAfterKNegations)
27+
- [House Robber](Easy/HouseRobber)
28+
- [Majority Element](Easy/MajorityElement)
29+
- [Reshape the Matrix](Easy/ReshapeMatrix)
30+
- [Shortest Unsorted Continuous Subarray](Easy/ShortedUnsortedContinuousSubarray)
31+
- [Find Lucky Integer in an Array](Easy/FindLuckyIntegerInArray)
32+
- [N-Repeated Element in Size 2N Array](Easy/N_RepeatedElementInArray)
33+
- [Sort Array By Parity](Easy/SortArrayByParity)
34+
- [Isomorphic Strings](Easy/IsomorphicStrings)
35+
- [Binary Prefix Divisible By 5](Easy/BinaryPrefixDivBy5)
36+
- [Rank Transform of an Array](Easy/RankTransformArray)
37+
- [Add to Array-Form of Integer](Easy/AddToArrayFormInteger)
38+
- [Sqrt(x)](Easy/SqrtX)
39+
- [Shuffle the Array](Easy/ShuffleArray)
40+
- [Remove Duplicates from Sorted List](Easy/RemoveDuplicatesFromSortedList)
41+
- [Longest Continuous Increasing Subsequence](Easy/LongestIncreasingSubsequence)
42+
- [Happy Number](Easy/HappyNumber)
43+
- [Assign Cookies](Easy/AssignCookies)
44+
- [Rotate Array](Easy/RotateArray)
45+
- [N-ary Tree Postorder Traversal](Easy/NaryTreePostorderTraversal)
4646
- Medium
47-
- [Minimum Add to Make Parentheses Valid](Medium/MinimumAddtoMakeParenthesesValid)
48-
- [Distribute Coins in Binary Tree](Medium/DistributionCoinsInBinaryTree)
49-
- [Find Minimum Number of Fibonacci Numbers Whose Sum is K](Medium/FindMinNumFibNumSumK)
50-
- [Find the Duplicate Number](Medium/FindDuplicateNumber)
51-
- [Unique Paths](Medium/UniquePaths)
52-
- [Apply Discount Every n Orders](Medium/ApplyDiscountEveryNOrders)
53-
- [All Elements in Two Binary Search Trees](Medium/AllElementsInTwoBSTs)
54-
- [Elimination Game](Medium/EliminationGame)
55-
- [Increasing Triplet Subsequence](Medium/IncreasingTripletSubsequence)
56-
- [Design Browser History](Medium/DesignBrowserHistory)
57-
- [Rearrange Words in a Sentence](Medium/RearrangeWordsInSentence)
58-
- [Diagonal Traverse II](Medium/DiagonalTraverse2)
59-
- [Total Hamming Distance](Medium/TotalHammingDistance)
60-
- [Partition Array into Disjoint Intervals](Medium/PartitionArrayIntoDisjointIntervals)
61-
- [Search in Rotated Sorted Array](Medium/SearchInRotatedSortedArray)
62-
- [Car Pooling](Medium/CarPooling)
63-
- [Palindromic Substrings](Medium/PalindromicSubstrings)
64-
- [Prison Cells After N Days](Medium/PrisonCellsAfterNDays)
65-
- [Minimum Number of Steps to Make Two Strings Anagram](Medium/MinStepsToMakeTwoStringsAnagram)
66-
- [Maximum Length of Pair Chain](Medium/MaximumLengthPairChain)
67-
- [Linked List Cycle II](Medium/LinkedListCycle2)
68-
- [Swap Nodes in Pairs](Medium/SwapNodesInPairs)
69-
- [All Paths From Source to Target](Medium/AllPathsFromSrcToTarget)
70-
- [Queens That Can Attack The King](Medium/QueensThatCanAttackKing)
71-
- [Reverse Substrings Between Each Pair of Parentheses](Medium/ReverseSubstringsBetweenParentheses)
72-
- [Asteroid Collision](Medium/AsteroidCollision)
73-
- [Surrounded Regions](Medium/SurroundedRegions)
74-
- [Predict the Winner](Medium/PredictWinner)
75-
- [Subarray Sum Equals K](Medium/SubarraySumEqualsK)
76-
- [Find Minimum in Rotated Sorted Array](Medium/FindMinInRotatedSortedArray)
77-
- [Maximum Swap](Medium/MaximumSwap)
78-
- [Number of Operations to Make Network Connected](Medium/NumToMakeNetworkConnected)
79-
- [Sort Colors](Medium/SortColors)
80-
- [Design Linked List](Medium/DesignLinkedList)
81-
- [Single Number II](Medium/SingleNumber2)
82-
- [Count Square Submatrices with All Ones](Medium/CountSquareWithOnes)
83-
- [Divide Array is Sets of K Consecutive Numbers](Medium/DivideArrayInKConsecNums)
47+
- [Minimum Add to Make Parentheses Valid](Medium/MinimumAddtoMakeParenthesesValid)
48+
- [Distribute Coins in Binary Tree](Medium/DistributionCoinsInBinaryTree)
49+
- [Find Minimum Number of Fibonacci Numbers Whose Sum is K](Medium/FindMinNumFibNumSumK)
50+
- [Find the Duplicate Number](Medium/FindDuplicateNumber)
51+
- [Unique Paths](Medium/UniquePaths)
52+
- [Apply Discount Every n Orders](Medium/ApplyDiscountEveryNOrders)
53+
- [All Elements in Two Binary Search Trees](Medium/AllElementsInTwoBSTs)
54+
- [Elimination Game](Medium/EliminationGame)
55+
- [Increasing Triplet Subsequence](Medium/IncreasingTripletSubsequence)
56+
- [Design Browser History](Medium/DesignBrowserHistory)
57+
- [Rearrange Words in a Sentence](Medium/RearrangeWordsInSentence)
58+
- [Diagonal Traverse II](Medium/DiagonalTraverse2)
59+
- [Total Hamming Distance](Medium/TotalHammingDistance)
60+
- [Partition Array into Disjoint Intervals](Medium/PartitionArrayIntoDisjointIntervals)
61+
- [Search in Rotated Sorted Array](Medium/SearchInRotatedSortedArray)
62+
- [Car Pooling](Medium/CarPooling)
63+
- [Palindromic Substrings](Medium/PalindromicSubstrings)
64+
- [Prison Cells After N Days](Medium/PrisonCellsAfterNDays)
65+
- [Minimum Number of Steps to Make Two Strings Anagram](Medium/MinStepsToMakeTwoStringsAnagram)
66+
- [Maximum Length of Pair Chain](Medium/MaximumLengthPairChain)
67+
- [Linked List Cycle II](Medium/LinkedListCycle2)
68+
- [Swap Nodes in Pairs](Medium/SwapNodesInPairs)
69+
- [All Paths From Source to Target](Medium/AllPathsFromSrcToTarget)
70+
- [Queens That Can Attack The King](Medium/QueensThatCanAttackKing)
71+
- [Reverse Substrings Between Each Pair of Parentheses](Medium/ReverseSubstringsBetweenParentheses)
72+
- [Asteroid Collision](Medium/AsteroidCollision)
73+
- [Surrounded Regions](Medium/SurroundedRegions)
74+
- [Predict the Winner](Medium/PredictWinner)
75+
- [Subarray Sum Equals K](Medium/SubarraySumEqualsK)
76+
- [Find Minimum in Rotated Sorted Array](Medium/FindMinInRotatedSortedArray)
77+
- [Maximum Swap](Medium/MaximumSwap)
78+
- [Number of Operations to Make Network Connected](Medium/NumToMakeNetworkConnected)
79+
- [Sort Colors](Medium/SortColors)
80+
- [Design Linked List](Medium/DesignLinkedList)
81+
- [Single Number II](Medium/SingleNumber2)
82+
- [Count Square Submatrices with All Ones](Medium/CountSquareWithOnes)
83+
- [Divide Array is Sets of K Consecutive Numbers](Medium/DivideArrayInKConsecNums)
84+
- [Perfect Squares](Medium/PerfectSquares)
8485
- Hard
85-
- [Maximum Score Words Formed by Letters](Hard/MaximumScoreWords)
86-
- [Reducing Dishes](Hard/ReducingDishes)
87-
- [Longest Consecutive Sequence](Hard/LongestConsecutiveSequence)
88-
- [First Missing Positive](Hard/FirstMissingPositive)
89-
- [Insert Interval](Hard/InsertInterval)
90-
- [Find Median From Data Stream](Hard/FindMedianFromDataStream)
91-
- [Escape a Large Maze](Hard/EscapeLargeMaze)
86+
- [Maximum Score Words Formed by Letters](Hard/MaximumScoreWords)
87+
- [Reducing Dishes](Hard/ReducingDishes)
88+
- [Longest Consecutive Sequence](Hard/LongestConsecutiveSequence)
89+
- [First Missing Positive](Hard/FirstMissingPositive)
90+
- [Insert Interval](Hard/InsertInterval)
91+
- [Find Median From Data Stream](Hard/FindMedianFromDataStream)
92+
- [Escape a Large Maze](Hard/EscapeLargeMaze)
9293

9394
---
9495

9596
# Challenge_README_Template
97+
9698
[Leetcode Link](#)
9799

98100
## Problem:
99101

100-
101-
102102
## Example:
103103

104104
```

0 commit comments

Comments
 (0)