diff --git a/Challenge-1/solution.py b/Challenge-1/solution.py new file mode 100644 index 0000000..9b0bf51 --- /dev/null +++ b/Challenge-1/solution.py @@ -0,0 +1 @@ +#here my solution goes \ No newline at end of file diff --git a/Challenge-1/two_sum.py b/Challenge-1/two_sum.py new file mode 100644 index 0000000..9d56efb --- /dev/null +++ b/Challenge-1/two_sum.py @@ -0,0 +1,8 @@ +class Solution: + def twoSum(self, nums: list[int], target: int) -> list[int]: + hash = {} + for i in range(len(nums)): + temp = target - nums[i] + if temp in hash: + return [hash[temp], i] + hash[nums[i]] = i diff --git a/Challenge-2/Best_time_to_buy_and_sell_stock.py b/Challenge-2/Best_time_to_buy_and_sell_stock.py new file mode 100644 index 0000000..57b75d6 --- /dev/null +++ b/Challenge-2/Best_time_to_buy_and_sell_stock.py @@ -0,0 +1,11 @@ +class Solution: + def maxProfit(self, prices: list[int]) -> int: + max_profit = 0 + l = 0 + for r in range(1,len(prices)): + if prices[r]>prices[l]: + profit = prices[r]-prices[l] + max_profit = max(profit, max_profit) + else: + l = r + return max_profit \ No newline at end of file diff --git a/Challenge-4/product_of_array_except_self.py b/Challenge-4/product_of_array_except_self.py new file mode 100644 index 0000000..410952e --- /dev/null +++ b/Challenge-4/product_of_array_except_self.py @@ -0,0 +1,14 @@ +class Solution: + def productExceptSelf(self, nums: list[int]) -> list[int]: + n = len(nums) + answer = [1] * n + prefix = 1 + for i in range(n): + answer[i] = prefix + prefix *= nums[i] + suffix = 1 + for j in range(n - 1, -1, -1): + answer[j] *= suffix + suffix *= nums[j] + return answer + diff --git a/Challenge-5/max_subarray.py b/Challenge-5/max_subarray.py new file mode 100644 index 0000000..934af27 --- /dev/null +++ b/Challenge-5/max_subarray.py @@ -0,0 +1,11 @@ +class Solution: + def maxSubArray(self, nums: list[int]) -> int: + max_sum = nums[0] + curr_sum = 0 + for n in nums: + if curr_sum<0: + curr_sum=0 + curr_sum += n + if max_sum int: + result = nums[0] + curmax, curmin = 1,1 + for n in nums: + temp = curmax*n + curmax = max(temp, curmin*n, n) + curmin = min(temp, curmin*n, n) + result = max(curmax, result) + return result \ No newline at end of file diff --git a/Challenge-7/min_in_rotated_sorted_array.py b/Challenge-7/min_in_rotated_sorted_array.py new file mode 100644 index 0000000..3a23bf4 --- /dev/null +++ b/Challenge-7/min_in_rotated_sorted_array.py @@ -0,0 +1,16 @@ +class Solution: + def findMin(self, nums: list[int]) -> int: + n = len(nums) + left = 0 + right = n-1 + if nums[left]nums[mid+1]: + return nums[mid+1] + else: + if nums[mid]>nums[0]: + right = mid + else: + left = mid diff --git a/Challenge-8/search_in_sorted_rotated_array.py b/Challenge-8/search_in_sorted_rotated_array.py new file mode 100644 index 0000000..2b14aef --- /dev/null +++ b/Challenge-8/search_in_sorted_rotated_array.py @@ -0,0 +1,21 @@ +class Solution: + def search(self, nums: list[int], target: int) -> int: + left = 0 + right = len(nums) - 1 + while left <= right: + mid = (left + right) // 2 + if nums[mid] == target: + return mid + # left half is sorted + if nums[left] <= nums[mid]: + if nums[left] <= target < nums[mid]: + right = mid-1 + else: + left = mid+1 + # right half is sorted + else: + if nums[mid] < target <= nums[right]: + left = mid+1 + else: + right = mid-1 + return -1 \ No newline at end of file diff --git a/Challenge-9/three_sum.py b/Challenge-9/three_sum.py new file mode 100644 index 0000000..5bae42c --- /dev/null +++ b/Challenge-9/three_sum.py @@ -0,0 +1,32 @@ +class Solution: + def threeSum(self, nums: list[int]) -> list[list[int]]: + nums.sort() + n = len(nums) + result=[] + + for i in range(n): + if i>0 and nums[i]==nums[i-1]: + continue + + left,right = i+1,n-1 + + while left bool: + seen = set() + for num in nums: + if num in seen: + return True + seen.add(num) + return False \ No newline at end of file