diff --git a/Challenge-3/solution.py b/Challenge-3/solution.py new file mode 100644 index 0000000..a20c805 --- /dev/null +++ b/Challenge-3/solution.py @@ -0,0 +1,16 @@ +class Solution(object): + def maxProfit(self, prices): + """ + :type prices: List[int] + :rtype: int + """ + left = 0 + right = 1 + maxprofit = 0 + while right < len(prices): + if prices[right] > prices[left]: + maxprofit = max(prices[right] - prices[left], maxprofit) + else: + left = right + right += 1 + return maxprofit diff --git a/Challenge-4/solution.py b/Challenge-4/solution.py new file mode 100644 index 0000000..0d7bd35 --- /dev/null +++ b/Challenge-4/solution.py @@ -0,0 +1,12 @@ +class Solution(object): + def containsDuplicate(self, nums): + """ + :type nums: List[int] + :rtype: bool + """ + dic = {} + for i, n in enumerate(nums): + if n in dic: + return True + dic[n] = i + return False diff --git a/Challenge-5/solution.py b/Challenge-5/solution.py new file mode 100644 index 0000000..184e3c4 --- /dev/null +++ b/Challenge-5/solution.py @@ -0,0 +1,14 @@ +class Solution(object): + def getSum(self, a, b): + """ + :type a: int + :type b: int + :rtype: int + """ + carry = 0 + mask = 0xffffffff + while b & mask != 0: + carry = (a & b) << 1 + a = a ^ b + b = carry + return a & mask if b > mask else a diff --git a/Challenge-6/solution.py b/Challenge-6/solution.py new file mode 100644 index 0000000..64a23c8 --- /dev/null +++ b/Challenge-6/solution.py @@ -0,0 +1,16 @@ +class Solution(object): + def productExceptSelf(self, nums): + """ + :type nums: List[int] + :rtype: List[int] + """ + res = [1] * len(nums) + prefix = 1 + for i in range(1, len(nums)): + prefix = prefix * nums[i-1] + res[i] = prefix + suffix = 1 + for j in range(len(nums) - 2, -1, -1): + suffix = suffix * nums[j+1] + res[j] = res[j] * suffix + return res diff --git a/Challenge-7/solution.py b/Challenge-7/solution.py new file mode 100644 index 0000000..c0a785d --- /dev/null +++ b/Challenge-7/solution.py @@ -0,0 +1,12 @@ +class Solution(object): + def maxSubArray(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + maxsum = nums[0] + cursum = nums[0] + for i in range(1, len(nums)): + cursum = max(cursum + nums[i], nums[i]) + maxsum = max(maxsum, cursum) + return maxsum diff --git a/Challenge-8/solution.py b/Challenge-8/solution.py new file mode 100644 index 0000000..9d3e31c --- /dev/null +++ b/Challenge-8/solution.py @@ -0,0 +1,15 @@ +class Solution(object): + def maxProduct(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + res = nums[0] + maxsum = 1 + minsum = 1 + for i in nums: + curpro = maxsum * i + maxsum = max(curpro, minsum * i, i) + minsum = min(curpro, minsum * i, i) + res = max(res, maxsum) + return res diff --git a/Challenge-9/solution.py b/Challenge-9/solution.py new file mode 100644 index 0000000..0912b0f --- /dev/null +++ b/Challenge-9/solution.py @@ -0,0 +1,16 @@ +class Solution(object): + def findMin(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + lo, hi = 0, len(nums) - 1 + while lo < hi: + if nums[lo] < nums[hi]: + return nums[lo] + + mid = (lo + hi) // 2 + if nums[mid] > nums[hi]: + lo = mid + 1 + else: + hi = mid diff --git a/challenge-1/README.md b/challenge-1/README.md new file mode 100644 index 0000000..1769765 --- /dev/null +++ b/challenge-1/README.md @@ -0,0 +1,2 @@ +Name : Rashad M +Email : rashadbasheer.m@gmail.com \ No newline at end of file diff --git a/challenge-2/two-sum.py b/challenge-2/two-sum.py new file mode 100644 index 0000000..d872b96 --- /dev/null +++ b/challenge-2/two-sum.py @@ -0,0 +1,13 @@ +def two_sum(nums, target): + """ + :type nums: List[int] + :type k: int + :rtype: float + """ + num_dict = {} + n = len(nums) + for i in range(n): + dif = target - nums[i] + if dif in num_dict: + return [num_dict[dif], i] + num_dict[nums[i]] = i \ No newline at end of file