From de37617432396a0131cea475a8d8f77f51f32f1f Mon Sep 17 00:00:00 2001 From: Ayush Chaudhary Date: Sun, 21 Jun 2026 17:41:51 -0500 Subject: [PATCH] Implement Product Except Self, Diagonal Traverse, and Spiral Matrix --- DiagonalTraverse.java | 42 +++++++++++++++++++++++++++++++++++++ ProductExceptSelf.java | 24 +++++++++++++++++++++ SpiralMatrix.java | 47 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 DiagonalTraverse.java create mode 100644 ProductExceptSelf.java create mode 100644 SpiralMatrix.java diff --git a/DiagonalTraverse.java b/DiagonalTraverse.java new file mode 100644 index 00000000..782e1255 --- /dev/null +++ b/DiagonalTraverse.java @@ -0,0 +1,42 @@ +public class DiagonalTraverse { + public int[] findDiagonalOrder(int[][] mat) { + + int row = mat.length; + int col = mat[0].length; + + int[] res = new int[row * col]; + int r = 0, c = 0; + boolean flag = true; + + for (int i = 0; i < row * col; i++) { + + res[i] = mat[r][c]; + + if (flag) { + if (c == col-1) { + flag = false; + r++; + } else if (r == 0) { + flag = false; + c++; + } else { + r--; + c++; + } + }else{ + if(r == row-1){ + flag = true; + c++; + }else if(c == 0){ + flag = true; + r++; + }else{ + r++; + c--; + } + } + } + + return res; + } +} diff --git a/ProductExceptSelf.java b/ProductExceptSelf.java new file mode 100644 index 00000000..0e685fb6 --- /dev/null +++ b/ProductExceptSelf.java @@ -0,0 +1,24 @@ +class ProductExceptSelf{ + public int[] productExceptSelf(int[] nums) { + + int n = nums.length; + int res[] = new int[n]; + res[0] = 1; + + for(int i = 1; i < n; i++){ + res[i] = res[i-1] * nums[i-1]; + } + + int rp = 1; + + for(int i = n-1; i >= 0; i--){ + rp*=nums[i+1]; + res[i]*=rp; + } + + + return res; + + + } +} \ No newline at end of file diff --git a/SpiralMatrix.java b/SpiralMatrix.java new file mode 100644 index 00000000..b4b08e23 --- /dev/null +++ b/SpiralMatrix.java @@ -0,0 +1,47 @@ +import java.util.*; + +public class SpiralMatrix { + public List spiralOrder(int[][] matrix) { + + List list = new ArrayList<>(); + int row = matrix.length; + int col = matrix[0].length; + + int top = 0, bottom = row - 1; + int left = 0, right = col - 1; + + while (top <= bottom && left <= right) { + + + for (int i = left; i <= right; i++) { + list.add(matrix[top][i]); + } + top++; + + + for (int i = top; i <= bottom; i++) { + list.add(matrix[i][right]); + } + right--; + + + if (top <= bottom) { + for (int i = right; i >= left; i--) { + list.add(matrix[bottom][i]); + } + bottom--; + } + + + if (left <= right) { + for (int i = bottom; i >= top; i--) { + list.add(matrix[i][left]); + } + left++; + } + } + + return list; + } +} +