From fd78f8f3fd0ef3a55fffc1198e76836765e9ea62 Mon Sep 17 00:00:00 2001 From: mohitkhosla01 Date: Mon, 7 Oct 2019 18:34:50 +0530 Subject: [PATCH 1/2] Added new medium-level problem to Leetcode - Find 1st and last position of element in a sorted array (Amazon) --- ...LastPositionOfElementInSortedArray_34.java | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 src/com/leetcode/problems/medium/FindFirstAndLastPositionOfElementInSortedArray_34.java diff --git a/src/com/leetcode/problems/medium/FindFirstAndLastPositionOfElementInSortedArray_34.java b/src/com/leetcode/problems/medium/FindFirstAndLastPositionOfElementInSortedArray_34.java new file mode 100644 index 0000000..43ba6e4 --- /dev/null +++ b/src/com/leetcode/problems/medium/FindFirstAndLastPositionOfElementInSortedArray_34.java @@ -0,0 +1,130 @@ +package com.leetcode.problems.medium; + +/** + * @author mohitkhosla01 on 07/10/19 + * Copyright (c) 2019, data-structures. + * All rights reserved. + */ +public class FindFirstAndLastPositionOfElementInSortedArray_34 { + + public static void main(String[] args) { + + int[][] nums = { + {}, + null, + {1,2,3}, + {1,2,3}, + {1,2,3}, + {1,2,3}, + {5,7,7,8,8,10}, + {5,7,7,8,8,8,8,8,10}, + {5,8,8,8,8,8,8,8,10}, + {5,7,7,8,8,10}, + {1,2,3,3,3,4,5}, + {1,2,3,3,3,4,5}, + {1,2,3,3,3,4,5}, + {1,2,3,3,4,4,4}, + {1,2,3,3,3,4,4}, + {1,2,3,3,3,3,4}, + {1,1}, + {1,2}, + {1,1}, + {1,2}, + {1}, + {2}, + {2} + }; + + int[] target = { + 1, + 1, + 1, + 2, + 3, + 4, + 8, + 8, + 8, + 6, + 4, + 5, + 1, + 4, + 4, + 4, + 1, + 1, + 2, + 2, + 1, + 1, + 2 + }; + + for(int i=0; i target) { + e = mid - 1; + e1 = mid - 1; + } + else { + b = mid + 1; + b1 = mid + 1; + } + } + else { + if(range[0] == -1) { + range[0] = mid; + } + if(range[1] == -1) { + range[1] = mid; + } + + if(!leftFound) { + if(mid == 0 || nums[mid-1] != nums[mid]) { + leftFound = true; + range[0] = mid; + b = b1; + e = e1; + } + else { + b = b1; + e = mid; + } + } + else { + if(mid == nums.length - 1 || nums[mid+1] != nums[mid]) { + range[1] = mid; + break; + } + else { + b = mid + 1; + e = e1; + } + } + } + } + + return range; + } +} From 7cdc81890212ad00ffe268fbdd6f509707454a8f Mon Sep 17 00:00:00 2001 From: mohitkhosla01 Date: Mon, 7 Oct 2019 19:08:21 +0530 Subject: [PATCH 2/2] Added 'BinaryTreeZigzagLevelOrderTraversal' to Leetcode --- ...naryTreeZigzagLevelOrderTraversal_103.java | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 src/com/leetcode/problems/medium/BinaryTreeZigzagLevelOrderTraversal_103.java diff --git a/src/com/leetcode/problems/medium/BinaryTreeZigzagLevelOrderTraversal_103.java b/src/com/leetcode/problems/medium/BinaryTreeZigzagLevelOrderTraversal_103.java new file mode 100644 index 0000000..3d44419 --- /dev/null +++ b/src/com/leetcode/problems/medium/BinaryTreeZigzagLevelOrderTraversal_103.java @@ -0,0 +1,123 @@ +package com.leetcode.problems.medium; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + +import definition.TreeNode; + +/** + * @author mohitkhosla01 on 07/10/19 + * Copyright (c) 2019, data-structures. + * All rights reserved. + */ +public class BinaryTreeZigzagLevelOrderTraversal_103 { + + static class TreeNode { + int val; + TreeNode left; + TreeNode right; + + TreeNode(int x) { + val = x; + } + } + + public static void main(String[] args) { + + TreeNode root = new TreeNode(3); + root.left = new TreeNode(9); + root.right = new TreeNode(20); + root.right.left = new TreeNode(15); + root.right.right = new TreeNode(7); + + // TreeNode root = new TreeNode(2); + // root.left = new TreeNode(5); + // root.right = new TreeNode(20); + // root.left.left = new TreeNode(4); + // root.left.right = new TreeNode(8); + // root.right.left = new TreeNode(15); + // root.right.right = new TreeNode(12); + // root.left.left.left = new TreeNode(1); + // root.left.left.right = new TreeNode(3); + // root.left.right.left = new TreeNode(9); + // root.left.right.right = new TreeNode(7); + + // TreeNode root = new TreeNode(2); + + // TreeNode root = new TreeNode(5); + // root.left = new TreeNode(6); + // root.right = new TreeNode(7); + // root.left.left = new TreeNode(10); + // root.left.right = new TreeNode(3); + // root.right.left = new TreeNode(20); + // root.right.right = new TreeNode(8); + // root.left.left.left = new TreeNode(2); + // root.left.left.right = new TreeNode(9); + // root.left.right.left = new TreeNode(11); + // root.left.right.right = new TreeNode(12); + // root.right.right.left = new TreeNode(15); + // root.right.right.right = new TreeNode(16); + + // TreeNode root = null; + + List> numLists = new BinaryTreeZigzagLevelOrderTraversal().zigzagLevelOrder(root); + + for(List numList : numLists) { + for(Integer num : numList) { + System.out.print(num + " "); + } + System.out.println(); + } + } + + public List> zigzagLevelOrder(TreeNode root) { + + List> finalLists = new ArrayList>(); + + if(root != null) { + + int direction = 1; + + Stack currentList = new Stack(); + currentList.add(root); + + Stack nextLevelList = new Stack(); + + List listToBeAdded = new ArrayList(); + + while(!currentList.isEmpty()) { + + TreeNode node = currentList.pop(); + listToBeAdded.add(node.val); + + if(direction == -1) { + if(node.right != null) { + nextLevelList.add(node.right); + } + if(node.left != null) { + nextLevelList.add(node.left); + } + } + else { + if(node.left != null) { + nextLevelList.add(node.left); + } + if(node.right != null) { + nextLevelList.add(node.right); + } + } + + if(currentList.isEmpty()) { + currentList = nextLevelList; + nextLevelList = new Stack(); + direction *= -1; + finalLists.add(listToBeAdded); + listToBeAdded = new ArrayList(); + } + } + } + + return finalLists; + } +}