diff --git a/diagonal traverse.java b/diagonal traverse.java new file mode 100644 index 00000000..99eb9b00 --- /dev/null +++ b/diagonal traverse.java @@ -0,0 +1,37 @@ +class Solution { + public int[] findDiagonalOrder(int[][] mat) { + int m = mat.length; + int n = mat[0].length; + int r =0; + int c = 0; + int[] res = new int[m*n]; + boolean dir = true; // moves up + for(int i =0; i< m*n; i++) { + res[i]=mat[r][c]; + if(dir == true) { + if(c== n-1) { + r++; + dir= false; + } else if(r==0){ + c++; + dir = false; + } else { + r--; + c++; + } + } else { + if(r==m-1) { + c++; + dir = true; + } else if(c==0){ + r++; + dir = true; + } else { + r++; + c--; + } + } + } + return res; + } +} diff --git a/product of array except self.java b/product of array except self.java new file mode 100644 index 00000000..d55f28b9 --- /dev/null +++ b/product of array except self.java @@ -0,0 +1,18 @@ +class Solution { + public int[] productExceptSelf(int[] nums) { + int n = nums.length; + int[] lp = new int[n]; + int rp = 1; + lp[0] = 1; + for(int i=1; i< n; i++) { + lp[i] = rp * nums[i-1]; + rp = lp[i]; + } + rp=1; + for(int j=nums.length-2; j >= 0; j--) { + rp = rp * nums[j+1]; + lp[j] = lp[j] * rp; + } + return lp; + } +} \ No newline at end of file diff --git a/spiral matrix.java b/spiral matrix.java new file mode 100644 index 00000000..e69de29b