diff --git a/diagonal_traverse.py b/diagonal_traverse.py new file mode 100644 index 00000000..f9cc26a9 --- /dev/null +++ b/diagonal_traverse.py @@ -0,0 +1,27 @@ +class Solution: + def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]: + + hash_map=defaultdict(list) + + result = [] + + for i in range(len(mat)): + for j in range(len(mat[0])): + + hash_map[i+j].append(mat[i][j]) + + + + limit = (len(mat)+len(mat[0])) + for i in range(limit): + curr_res = hash_map[i] + + if (i%2==0): + curr_res= curr_res[::-1] + + for i in curr_res: + result.append(i) + + return result + + diff --git a/product_array_except_self.py b/product_array_except_self.py new file mode 100644 index 00000000..e587870b --- /dev/null +++ b/product_array_except_self.py @@ -0,0 +1,30 @@ +class Solution: + def productExceptSelf(self, nums: List[int]) -> List[int]: + + left_product_arr = [1]*(len(nums)+1) + + right_product_arr = [1]*(len(nums)+1) + + res = [1]*(len(nums)) + + left_sum = 1 + + right_sum = 1 + + for i in range(len(nums)): + + left_sum*=nums[i] + right_sum*=nums[len(nums)-1-i] + + left_product_arr[i+1] = left_sum + right_product_arr[len(nums)-1-i] = right_sum + + + for i in range(len(nums)): + + res[i] = left_product_arr[i]*right_product_arr[i+1] + + + return res + + diff --git a/spiral_matrix.py b/spiral_matrix.py new file mode 100644 index 00000000..d8edfe09 --- /dev/null +++ b/spiral_matrix.py @@ -0,0 +1,29 @@ +class Solution: + def spiralOrder(self, matrix: List[List[int]]) -> List[int]: + top,left, bottom, right = 0,0,len(matrix)-1, len(matrix[0])-1 + result = [] + + while(top<=bottom and left<=right): + + for i in range(top, right+1): + result.append(matrix[top][i]) + top+=1 + + for i in range(top, bottom+1): + result.append(matrix[i][right]) + right-=1 + + if(left>right or top>bottom): + break + + for i in range(right, left-1,-1): + result.append(matrix[bottom][i]) + bottom-=1 + + + for i in range(bottom, top-1, -1): + result.append(matrix[i][left]) + left+=1 + + return result +