Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
87 changes: 87 additions & 0 deletions InterviewProblems/ThreeSum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
from typing import List

"""
# brute force solution --> gives Time Limit Exceeded error for lengthier list
def threeSum(nums: List[int]) -> List[List[int]]:
innerlist = []
outerlist = []
if len(nums) > 3:
nums.sort()
for i in range(len(nums) - 2):
for j in range(i+1,len(nums) - 1):
for k in range(j+1,len(nums)):
innerlist = []
if nums[i] + nums[j] + nums[k] == 0:
innerlist.append(nums[i])
innerlist.append(nums[j])
innerlist.append(nums[k])
if innerlist not in outerlist:
outerlist.append(innerlist)
return outerlist
elif len(nums) == 3:
if sum(nums) == 0:
innerlist = nums.copy()
outerlist.append(innerlist)
return outerlist
else:
return []
else:
return []
"""
"""
# another approach
def threeSum(nums: List[int]) -> List[List[int]]:
outerlist = []
threesum = 0
if len(nums) > 3:
nums.sort()
for i in range(len(nums) - 2):
if i > 0 and nums[i] == nums[i - 1]:
continue
j,k = i+1,len(nums)-1
print(j,k)
while j < k:
threesum = nums[i] + nums[j] + nums[k]
if threesum == 0:
outerlist.append([nums[i],nums[j],nums[k]])
k = k - 1
while j < k and nums[k] == nums[k + 1]:
k = k - 1
elif threesum > 0:
k = k - 1
else:
j = j + 1
return outerlist
elif len(nums) == 3:
if sum(nums) == 0:
outerlist.append(nums)
return outerlist
else:
return []
else:
return []
"""
def threeSum(nums: List[int]) -> List[List[int]]:
outerlist = []
threesum = 0
for i in range(len(nums) - 2):
nums.sort()
if i > 0 and nums[i] == nums[i - 1]:
continue
j,k = i+1,len(nums)-1
while j < k:
threesum = nums[i] + nums[j] + nums[k]
if threesum == 0:
outerlist.append([nums[i],nums[j],nums[k]])
k = k - 1
while j < k and nums[k] == nums[k + 1]:
k = k - 1
elif threesum > 0:
k = k - 1
else:
j = j + 1
return outerlist

print(threeSum([0,0,0]))

print(threeSum([-1,0,1,2,-1,-4]))
69 changes: 69 additions & 0 deletions InterviewProblems/fourSum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
from typing import List
"""
Given an array nums of n integers, return an array of all the unique quadruplets [nums[a], nums[b], nums[c], nums[d]] such that:

0 <= a, b, c, d < n
a, b, c, and d are distinct.
nums[a] + nums[b] + nums[c] + nums[d] == target
You may return the answer in any order.
"""
"""
# brute force solution
def fourSum(nums: List[int], target: int) -> List[List[int]]:
outerlist = []
totalSum = 0
if len(nums) > 4:
nums.sort()
for a in range(len(nums) - 3):
for b in range(a+1,len(nums) -2):
for c in range(b+1,len(nums) -1):
for d in range(c+1,len(nums)):
totalSum = nums[a] + nums[b] + nums[c] + nums[d]
if totalSum == target:
innerlist = [nums[a],nums[b],nums[c],nums[d]]
if innerlist not in outerlist:
outerlist.append(innerlist)
return outerlist
elif len(nums) == 4:
if sum(nums) == target:
outerlist.append(nums)
return outerlist
else:
return []
else:
return []
"""
def fourSum(nums: List[int], target: int) -> List[List[int]]:
outerlist = []
totalSum = 0
if len(nums) > 4:
nums.sort()
for a in range(len(nums) - 3):
for b in range(a+1,len(nums) - 2):
if a > 0 and nums[a] == nums[a - 1]:
continue
(c,d) = (b+1,len(nums) -1)
while c < d:
totalSum = nums[a] + nums[b] + nums[c] + nums[d]
if totalSum == target:
innerlist = [nums[a],nums[b],nums[c],nums[d]]
if innerlist not in outerlist:
outerlist.append(innerlist)
if totalSum > target:
d = d -1
else:
c = c + 1
return outerlist
elif len(nums) == 4:
if sum(nums) == target:
outerlist.append(nums)
return outerlist
else:
return []
else:
return []


print(fourSum([1,0,-1,0,-2,2],0))

print(fourSum([2,2,2,2,2],8))
37 changes: 37 additions & 0 deletions InterviewProblems/lengthOfLongestSubstring.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
"""
Given a string s, find the length of the longest substring without repeating characters.
"""
def lengthOfLongestSubstring(s: str) -> int:
outStr = ""
strLength = 0
i = 0
if len(s) > 1:
while i < len(s):
if i < len(s) - 1:
if s[i] == s[i+1]:
i = i + 1
if s[i] not in outStr:
outStr = outStr + s[i]
else:
if s[i] not in outStr:
outStr = outStr + s[i]
else:
outStr = ""
outStr = outStr + s[i]
i = i + 1
return len(outStr)
else:
return len(s)

print(lengthOfLongestSubstring("abcabcbb"))

print(lengthOfLongestSubstring("bbbbb"))
"""
print(lengthOfLongestSubstring("pwwkew"))

print(lengthOfLongestSubstring(" "))

print(lengthOfLongestSubstring("au"))

print(lengthOfLongestSubstring("dvdf"))
"""
20 changes: 20 additions & 0 deletions InterviewProblems/longestPalindrome.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@


def longestPalindrome(s: str) -> str:
inputstr = ""
longestPalindrome = ""
for i in range(len(s)):
ch_count = s.count(s[i])
if ch_count > 1:
inputstr = inputstr + s[i]
print(inputstr)
if len(inputstr) > 1 and inputstr == inputstr[::-1]:
if len(inputstr) > len(longestPalindrome):
longestPalindrome = inputstr
return longestPalindrome

#print(longestPalindrome("babad"))

#print(longestPalindrome("cbbd"))

print(longestPalindrome("bdabad"))
29 changes: 29 additions & 0 deletions InterviewProblems/reverse_Integer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import sys
"""
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).
"""
def reverse(x: int) -> int:
negative = False
maxSize = (2 ** 31) - 1
minSize = -(2 ** 31)
if x < 0:
negative = True
x = abs(x)
xlist = list(map(int,str(x)))
xlist.reverse()
xoutput = ''.join(map(str,xlist))
xoutput = int(xoutput)
if negative == True:
if -abs(xoutput) < minSize:
return 0
else:
return -abs(xoutput)
else:
if xoutput > maxSize:
return 0
else:
return xoutput

print(reverse(1534236469))
18 changes: 14 additions & 4 deletions ToRefer/imp_syntax.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,25 @@
print("Minimum:",maxNum)

lenList = len(numList)
print("Length:",lenList)
print("Length:",lenList) # returns the length of the list

#code to convert int list to interger
# first convert int list to string and then convert to integer

intNum = ''.join(map(str,numList)) # converts int list to string
intNum = int(intNum) # convert to integer
print(intNum)

num = ''.join(numList)
print(num)


text = "hello"
txtList = list(map(str,text))
print(txtList)

txt = ''.join(txtList) # joins the list and returns string as output
print(txt)
print(txt)


# for loop to increment the number by 2
for i in range(0, 10, 2):
print(i)