Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
ba50dbf
Added solution for Two Sum
Adeelp1 Mar 17, 2025
1f37da7
readme file
Adeelp1 Mar 17, 2025
785d421
challenge 1
Adeelp1 Mar 19, 2025
e0bb87f
challenge 2
Adeelp1 Mar 19, 2025
0b0b54e
contains_duplicate
Adeelp1 Mar 20, 2025
6925e91
solution for sum of two integers
Adeelp1 Mar 22, 2025
7b48596
solution for product of array except self
Adeelp1 Mar 22, 2025
9a98b56
maximum product subarray
Adeelp1 Mar 24, 2025
31dc714
solution for find minimum in rotated sorted array
Adeelp1 Mar 25, 2025
b74d379
solution for search in rotated sorted array
Adeelp1 Mar 26, 2025
7ddead0
Added solution for 3sum
Adeelp1 Mar 27, 2025
762a4d5
solution for container-with-most-water (leetcode 11)
Adeelp1 Mar 28, 2025
8515f06
solution for number of 1 bit
Adeelp1 Mar 30, 2025
74d6092
Added solution for counting bits (leetcode 338)
Adeelp1 Mar 30, 2025
91b5628
solution added for missing_number (leetcode 268)
Adeelp1 Mar 31, 2025
ec8e7ec
solution added for reverse bits
Adeelp1 Apr 1, 2025
b5071ad
solution for climbing stairs
Adeelp1 Apr 2, 2025
9c99dc6
Solution for coin change
Adeelp1 Apr 3, 2025
6d9b2c7
solution for longest increasing subsequence
Adeelp1 Apr 4, 2025
8a53aa3
solution for longest-common-subsequence
Adeelp1 Apr 6, 2025
8247207
solution for challenge-7 (maximum subarray)
Adeelp1 Apr 6, 2025
454d439
Rename Folders
Adeelp1 Apr 6, 2025
643a82f
solution for word-break
Adeelp1 Apr 6, 2025
2e22702
solution for combination sum iv
Adeelp1 Apr 7, 2025
6c44c60
Added solution for house-robber
Adeelp1 Apr 8, 2025
4f4f675
solution for house-robber-ii
Adeelp1 Apr 9, 2025
ed745e8
solution for decode-ways
Adeelp1 Apr 10, 2025
27ed566
solution for unique-paths.py
Adeelp1 Apr 11, 2025
2db6eb5
added solution for jump-game
Adeelp1 Apr 12, 2025
98edd08
added solution for clone-graph
Adeelp1 Apr 13, 2025
5332aca
solution added for course-schedule
Adeelp1 Apr 14, 2025
be513cd
solution added for pacific-atlantic-water-flow
Adeelp1 Apr 15, 2025
c4edfe1
solution for number-of-islands
Adeelp1 Apr 16, 2025
b611f35
Added solution for longest-consecutive-sequence
Adeelp1 Apr 17, 2025
9fba0b6
solution added for find-building-where-alice-and-bob-can-meet
Adeelp1 Apr 18, 2025
47a338e
solution added for maximum-star-sum-of-a-graph
Adeelp1 Apr 19, 2025
9573cb4
solution added for count-unreachable-pairs-of-nodes-in-an-undirected-…
Adeelp1 Apr 20, 2025
639f175
solution added for insert-interval
Adeelp1 Apr 21, 2025
4c0734c
solution added for merge-intervals
Adeelp1 Apr 22, 2025
7d4badf
solution added for non-overlapping-intervals
Adeelp1 Apr 23, 2025
bc8f23d
solution added for meeting-schedule
Adeelp1 Apr 24, 2025
899c2c9
solution added for meeting-room-ii
Adeelp1 Apr 25, 2025
b1e3cad
solution added for reverse-linked-list
Adeelp1 Apr 26, 2025
da35023
solution added for linked-list-cycle
Adeelp1 Apr 27, 2025
8cdb0d1
solution added for merge-two-sorted-lists
Adeelp1 Apr 28, 2025
10f2705
solution added for merge-k-sorted-lists
Adeelp1 Apr 30, 2025
c419f46
solution added for remove-nth-node-from-end-of-list
Adeelp1 Apr 30, 2025
ea29ead
solution added for reorder-list
Adeelp1 May 1, 2025
c4c9670
solution added for set-matrix-zeroes
Adeelp1 May 3, 2025
59623ad
solution added for spiral-matrix
Adeelp1 May 3, 2025
dd904a2
solution added for rotate-image
Adeelp1 May 4, 2025
7beaf2c
solution added for word-search
Adeelp1 May 6, 2025
cb46f72
solution added for longest-substring-without-repeating-characters
Adeelp1 May 6, 2025
38b9804
solution added for longest-repeating-character-replacement
Adeelp1 May 7, 2025
e4a4af1
solution added for minimum-window-substring
Adeelp1 May 8, 2025
841af2d
solution added for valid-anagram
Adeelp1 May 9, 2025
f07979b
solution added for group-anagrams
Adeelp1 May 10, 2025
83ae792
solution added for valid-parentheses
Adeelp1 May 11, 2025
92a890c
solution added for valid-palindrome
Adeelp1 May 12, 2025
bd24a09
solution added for longest-plindromic-substring
Adeelp1 May 14, 2025
51a3264
solution added for palindromic-substrings
Adeelp1 May 14, 2025
784bfba
solution added for string-encode-and-decode
Adeelp1 May 15, 2025
b059ffb
solution added for maximum-depth-of-binary-tree
Adeelp1 May 16, 2025
a4899a9
solution added for same-tree
Adeelp1 May 19, 2025
41eff8a
solution added for binary-tree-maximum-path-sum
Adeelp1 May 19, 2025
27a0c1d
solution added for binary-tree-level-order-traversal
Adeelp1 May 20, 2025
9f01efd
solution added for serialize-and-deserialize-binary-tree
Adeelp1 May 22, 2025
ba1933b
solution added for subtree-of-another-tree
Adeelp1 May 22, 2025
33bd500
solution added forconstruct-binary-tree-from-preorder-and-inorder-tra…
Adeelp1 May 23, 2025
6c6f2ea
solution added for validate-binary-search-tree
Adeelp1 May 24, 2025
eff223d
solution added for kth-smallest-element-in-a-bst
Adeelp1 May 25, 2025
3635b8f
solution added for lowest-common-ancestor-of-a-binary-search-tree
Adeelp1 May 26, 2025
e9f55e4
solution added for implement-trie-prefix-tree
Adeelp1 May 27, 2025
cf03c9b
solution added for design-add-and-search-words-data-structure
Adeelp1 May 28, 2025
d9b1a9f
solution added for word-search-ii
Adeelp1 May 29, 2025
56c16f6
solution added for merge-k-sorted-lists
Adeelp1 May 30, 2025
12557a2
solution added for top-k-frequent-elements
Adeelp1 May 31, 2025
13b76b4
solution added for find-median-from-data-stream
Adeelp1 May 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions challenge-01/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## Personal Information
### Name
Khalid Adeel p

### Email
adeelpv360@gmail.com
8 changes: 8 additions & 0 deletions challenge-01/two-sum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
num_indices = {}
for i,num in enumerate(nums):
difference = target - num
if difference in num_indices:
return [num_indices[difference], i]
num_indices[num]=i
13 changes: 13 additions & 0 deletions challenge-02/best-time-to-buy-and-sell-stoc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class Solution:
def maxProfit(self, prices: List[int]) -> int:
right, left = 1, 0
profit = 0

while right < len(prices):
if prices[right] > prices[left]:
if profit < (prices[right] - prices[left]):
profit = prices[right] - prices[left]
else:
left = right
right +=1
return profit
9 changes: 9 additions & 0 deletions challenge-03/contains-duplicate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
array = set()
for i in nums:
if i in array:
return True
else:
array.add(i)
return False
8 changes: 8 additions & 0 deletions challenge-04/sum-of-two-integers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class Solution:
def getSum(self, a: int, b: int) -> int:
mask = 0xffffffff
while (mask&b) > 0:
a, b = a ^ b, (a&b)<<1
return (mask&a) if b > 0 else a


12 changes: 12 additions & 0 deletions challenge-05/product-of-array-except-self.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
res = [1] * (len(nums))
prefix = 1
for i in range(len(nums)):
res[i] = prefix
prefix *= nums[i]
postfix = 1
for i in range(len(nums) -1, -1, -1):
res[i] *= postfix
postfix *= nums[i]
return res
16 changes: 16 additions & 0 deletions challenge-06/maximum-product-subarray.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
class Solution:
def maxProduct(self, nums: List[int]) -> int:
cur_min = 1
cur_max = 1
res = nums[0]

for num in nums:
temp = cur_max * num
cur_max = max(temp, cur_min * num, num)
cur_min = min(temp, cur_min * num, num)

res = max(res, cur_max)

return res


12 changes: 12 additions & 0 deletions challenge-07/maximum-subarray.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
max_sum = nums[0]
cur_sum = 0

for i in nums:
if cur_sum < 0:
cur_sum = 0
cur_sum += i
max_sum = max(max_sum, cur_sum)

return max_sum
23 changes: 23 additions & 0 deletions challenge-08/find-minimum-in-rotated-sorted-array.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class Solution:
def findMin(self, nums: List[int]) -> int:
l = 0
r = len(nums)-1
res = nums[0]

while l <= r:
if nums[l] < nums[r]:
res = min(res, nums[l])
break
m = (l+r)//2
res = min(res, nums[m])

if nums[l] <= nums[m]:
l = m+1
else:
r = m-1

return res


# Time : O(LogN)
# Space : O(1)
29 changes: 29 additions & 0 deletions challenge-09/search-in-rotated-sorted-array.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
class Solution:
def search(self, nums: List[int], target: int) -> int:
l = 0
r = len(nums) - 1

while l <= r:
mid = (l + r) // 2

if nums[mid] == target:
return mid

# left sorted portion
elif nums[mid] >= nums[l]:
if nums[l] <= target <= nums[mid]:
r = mid - 1
else:
l = mid + 1

# right sorted portion
else:
if nums[mid] <= target <= nums[r]:
l = mid + 1
else:
r = mid - 1

return -1

# TC : O(LogN)
# SC : O(1)
30 changes: 30 additions & 0 deletions challenge-10/3sum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
nums.sort()
res = []

for i in range(len(nums) - 2):
if i > 0 and nums[i] == nums[i-1]:
continue
l = i+1
r = len(nums) - 1

while l < r:
total = nums[i] + nums[l] + nums[r]
if total < 0:
l +=1
elif total > 0:
r -= 1
else:
triplet = [nums[i], nums[l], nums[r]]
res.append(triplet)
while l < r and nums[l] == triplet[1]:
l += 1
while l < r and nums[r] == triplet[2]:
r -= 1
return res



# TC : O(N^2)
# sc : o(1)
22 changes: 22 additions & 0 deletions challenge-11/container-with-most-water.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
class Solution:
def maxArea(self, height: List[int]) -> int:
l, r = 0, len(height) - 1
maxArea = 0

while l < r:
if height[l] > height[r]:
h = height[r]
w = r - l
area = h * w
r -= 1
else:
h = height[l]
w = r - l
area = h * w
l += 1
maxArea = max(area, maxArea)
return maxArea


# TC : O(N)
# SC : O(1)
9 changes: 9 additions & 0 deletions challenge-12/number-of-1-bits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Solution:
def hammingWeight(self, n: int) -> int:
bit = list(bin(n))
count = 0
for i in range(len(bit)):
if bit[i] == '1':
count += 1
return count

10 changes: 10 additions & 0 deletions challenge-13/counting-bits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Solution:
def countBits(self, n: int) -> List[int]:
ans = [0] * (n+1)
for i in range(1, n + 1):
ans[i] = ans[i >> 1] + (i & 1)

return ans

# TC : O(N)
# SC : O(N)
10 changes: 10 additions & 0 deletions challenge-14/missing-number.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Solution:
def missingNumber(self, nums: List[int]) -> int:
value = len(nums)

for i, num in enumerate(nums):
value ^= i ^ num
return value

# TC : O(N)
# SC : O(1)
11 changes: 11 additions & 0 deletions challenge-15/reverse-bits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class Solution:
def reverseBits(self, n: int) -> int:
res = 0
for i in range(32):
res <<=1
res |= (n&1)
n >>= 1
return res

# TC : O(1)
# SC : O(1)
12 changes: 12 additions & 0 deletions challenge-16/climbing-stairs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class Solution:
def climbStairs(self, n: int) -> int:
a, b = 1, 1

for i in range(n - 2, -1, -1):
c = a+b
a = b
b = c
return b

# TC : O(N)
# SC : O(1)
15 changes: 15 additions & 0 deletions challenge-17/coin-change.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
dp = [amount + 1] * (amount + 1)
dp[0] = 0

for value in range(1, amount + 1):
for c in coins:
if value - c >= 0:
dp[value] = min(dp[value], 1 + dp[value - c])

return dp[amount] if dp[amount] != amount + 1 else -1


# TC : O(N∗Amount)
# SC : O(Amount)
17 changes: 17 additions & 0 deletions challenge-18/longest-increasing-subsequence.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
class Solution:
def lengthOfLIS(self, nums: List[int]) -> int:
if not nums:
return 0

l = len(nums)
dp = [1] * l

for i in range(1, l):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)

return max(dp)

# TC : O(N^2)
# SC : O(N)
14 changes: 14 additions & 0 deletions challenge-19/longest-common-subsequence.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Solution:
def longestCommonSubsequence(self, text1: str, text2: str) -> int:
c = [[0 for j in range(len(text2)+1)] for i in range(len(text1)+1)]
for i in range(len(text1)-1, -1, -1):
for j in range(len(text2)-1, -1, -1):
if text1[i] == text2[j]:
c[i][j] = 1 + c[i+1][j+1]
else:
c[i][j] = max(c[i][j+1], c[i+1][j])
ans = c[i][j]
return ans

# TC : O(N^2)
# SC : O(N^2)
20 changes: 20 additions & 0 deletions challenge-20/word-break.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class Solution:
def wordBreak(self, s: str, wordDict: List[str]) -> bool:
def construct(current, wordDict, memo={}):
if current in memo:
return memo[current]

if not current:
return True

for word in wordDict:
if current.startswith(word):
new_current = current[len(word):]
if construct(new_current, wordDict, memo):
memo[current] = True
return True

memo[current] = False
return False

return construct(s,wordDict)
14 changes: 14 additions & 0 deletions challenge-21/combination-sum-iv.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Solution:
def combinationSum4(self, nums: List[int], target: int):
dp = [0] * (target + 1)
dp[0] = 1

for i in range(1, target + 1):
for num in nums:
if i - num >= 0:
dp[i] += dp[i - num]

return dp[target]

# TC : O(Target * N)
# SC : O(Target)
13 changes: 13 additions & 0 deletions challenge-22/house-robber.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class Solution:
def rob(self, nums: List[int]) -> int:
rob1 = rob2 = 0

for val in nums:
decision = max(val + rob1, rob2)
rob1 = rob2
rob2 = decision

return rob2

# TC : O(N)
# SC : O(1)
Loading