From b638e4489f7ae910c42c1b0b7b2681e336c3f932 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 15:46:31 -0700 Subject: [PATCH 01/12] fix format for 118 Pascal's Triangle --- Easy/Pascal_Triangle.java | 54 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Easy/Pascal_Triangle.java diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java new file mode 100644 index 00000000..52c09560 --- /dev/null +++ b/Easy/Pascal_Triangle.java @@ -0,0 +1,54 @@ +import java.util.*; +/** + * Pascal's Triangle + * Given numRows, generate the first numRows of Pascal's triangle. + * For example, given numRows = 5, + * Return + * [ + * [1], + * [1,1], + * [1,2,1], + * [1,3,3,1], + * [1,4,6,4,1] + * ] + * Analysis : using dp + */ + +public class Pascal_Triangle { + public static List> generate(int numRows) { + + List> res = new ArrayList>(); + ArrayList member = new ArrayList(); + if(numRows <= 0){ + return res; + } + member.add(1); + res.add( member); + return generateArray(res, numRows-1); + } + + public static List> generateArray(List> res, int n){ + if(n == 0){ + return res; + } + else{ + List resLast= new ArrayList(); + ArrayList newMember = new ArrayList(); + resLast = res.get(res.size()-1); + newMember.add(1); + for(int i = 0; i < resLast.size()-1; i++){ + int temp = resLast.get(i) + resLast.get(i+1); + newMember.add(temp); + } + newMember.add(1); + res.add(newMember); + return generateArray(res, n-1); + } + } + + public static void main(String[] args) { + // TODO Auto-generated method stub + System.out.print(generate(5)); + } + +} From 2b624ea12692b0dc329d38bcae947e7e73a345de Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 15:48:08 -0700 Subject: [PATCH 02/12] fix format for 118 Pascal's Triangle --- Easy/Pascal_Triangle.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java index 52c09560..0844934f 100644 --- a/Easy/Pascal_Triangle.java +++ b/Easy/Pascal_Triangle.java @@ -47,8 +47,7 @@ public static List> generateArray(List> res, int n){ } public static void main(String[] args) { - // TODO Auto-generated method stub - System.out.print(generate(5)); + System.out.print(generate(5)); } } From 83264347458306e3b6284a1dbca5cb1fa5c4dbe8 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 15:48:54 -0700 Subject: [PATCH 03/12] fix format for 118 Pascal's Triangle --- Easy/Pascal_Triangle.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java index 0844934f..90706f5f 100644 --- a/Easy/Pascal_Triangle.java +++ b/Easy/Pascal_Triangle.java @@ -16,7 +16,6 @@ public class Pascal_Triangle { public static List> generate(int numRows) { - List> res = new ArrayList>(); ArrayList member = new ArrayList(); if(numRows <= 0){ From e21bb1857c274e5085a5b21655901416a2858528 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 15:50:10 -0700 Subject: [PATCH 04/12] fix format for 118 Pascal's Triangle --- Easy/Pascal_Triangle.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java index 90706f5f..bd4ce91b 100644 --- a/Easy/Pascal_Triangle.java +++ b/Easy/Pascal_Triangle.java @@ -46,7 +46,7 @@ public static List> generateArray(List> res, int n){ } public static void main(String[] args) { - System.out.print(generate(5)); + System.out.print(generate(5)); } } From 31c0aee89e698475d1065ac9dd636f696cfc320b Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 15:52:43 -0700 Subject: [PATCH 05/12] fix format for 118 Pascal's Triangle --- Easy/Pascal_Triangle.java | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java index bd4ce91b..30025520 100644 --- a/Easy/Pascal_Triangle.java +++ b/Easy/Pascal_Triangle.java @@ -4,13 +4,13 @@ * Given numRows, generate the first numRows of Pascal's triangle. * For example, given numRows = 5, * Return - * [ - * [1], - * [1,1], - * [1,2,1], - * [1,3,3,1], - * [1,4,6,4,1] - * ] + * [ + * [1], + * [1,1], + * [1,2,1], + * [1,3,3,1], + * [1,4,6,4,1] + * ] * Analysis : using dp */ @@ -31,20 +31,19 @@ public static List> generateArray(List> res, int n){ return res; } else{ - List resLast= new ArrayList(); - ArrayList newMember = new ArrayList(); - resLast = res.get(res.size()-1); - newMember.add(1); - for(int i = 0; i < resLast.size()-1; i++){ + List resLast= new ArrayList(); + ArrayList newMember = new ArrayList(); + resLast = res.get(res.size()-1); + newMember.add(1); + for(int i = 0; i < resLast.size()-1; i++){ int temp = resLast.get(i) + resLast.get(i+1); newMember.add(temp); - } - newMember.add(1); - res.add(newMember); - return generateArray(res, n-1); + } + newMember.add(1); + res.add(newMember); + return generateArray(res, n-1); } } - public static void main(String[] args) { System.out.print(generate(5)); } From 192f88c836256981b8852c7072a62741d5033108 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 15:58:29 -0700 Subject: [PATCH 06/12] RemoveDuplicatesfromSortedArray2 --- Easy/Pascal_Triangle.java | 4 +- Medium/RemoveDuplicatesfromSortedArray2.java | 42 ++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 Medium/RemoveDuplicatesfromSortedArray2.java diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java index 30025520..07ebdc49 100644 --- a/Easy/Pascal_Triangle.java +++ b/Easy/Pascal_Triangle.java @@ -44,8 +44,8 @@ public static List> generateArray(List> res, int n){ return generateArray(res, n-1); } } + public static void main(String[] args) { - System.out.print(generate(5)); + System.out.print(generate(5)); } - } diff --git a/Medium/RemoveDuplicatesfromSortedArray2.java b/Medium/RemoveDuplicatesfromSortedArray2.java new file mode 100644 index 00000000..65d04457 --- /dev/null +++ b/Medium/RemoveDuplicatesfromSortedArray2.java @@ -0,0 +1,42 @@ +/** + * Remove Duplicates from Sorted Array II + * Follow up for "Remove Duplicates": + * What if duplicates are allowed at most twice? + * For example, + * Given sorted array nums = [1,1,1,2,2,3], + * Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn't matter what you leave beyond the new length. + * Note: create a countEach variable to count duplicated times for each integer in array. + * Time complexity = O(n) + * @author chenshuna + */ + +public class RemoveDuplicatesfromSortedArray2 { + public static int removeDuplicates(int[] nums) { + int res = 1; + if(nums.length <= 1){ + return nums.length; + } + int countEach = 1; + for(int i = 1; i Date: Sun, 20 Mar 2016 16:17:53 -0700 Subject: [PATCH 07/12] RemoveDuplicatesfromSortedArray2 --- Medium/BinaryTreePreorderTraversal.java | 78 +++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Medium/BinaryTreePreorderTraversal.java diff --git a/Medium/BinaryTreePreorderTraversal.java b/Medium/BinaryTreePreorderTraversal.java new file mode 100644 index 00000000..7961b85b --- /dev/null +++ b/Medium/BinaryTreePreorderTraversal.java @@ -0,0 +1,78 @@ +import java.util.*; + +/** + * Given a binary tree, return the preorder traversal of its nodes' values. + * For example: + * Given binary tree {1,#,2,3}, + * 1 + * \ + * 2 + * / + * 3 + * return [1,2,3]. + * @author chenshuna + * + * Note: Recursive solution + */ + +public class BinaryTreePreorderTraversal { + /** + * Recursive solution + * @param args + */ + public static List preorderTraversal(TreeNode root) { + List res = new ArrayList(); + if(root == null){ + return res; + } + preorderTraversalTree(root, res); + return res; + } + + public static void preorderTraversalTree(TreeNode root, List res){ + if(root != null){ + res.add(root.val); + preorderTraversalTree(root.left, res); + preorderTraversalTree(root.right, res); + } + else return; + } + + /** + * iterative solution + * Use stack + * @param args + */ + public static List preorderTraversalIterative(TreeNode root) { + List res = new ArrayList(); + if(root == null){ + return res; + } + Stack stack = new Stack(); + stack.push(root); + while(!stack.isEmpty()){ + TreeNode node = stack.pop(); + res.add(node.val); + if(node.right != null){ + stack.push(node.right); + } + if(node.left != null){ + stack.push(node.left); + } + } + return res; + } + + public static void main(String[] args) { + // TODO Auto-generated method stub + TreeNode res = new TreeNode(0); + res.left = new TreeNode(2); + res.right = new TreeNode(1); + res.left.left = new TreeNode(4); + res.left.right = new TreeNode(5); + res.left.left.left = new TreeNode(9); + System.out.print(preorderTraversal(res)); + System.out.print(preorderTraversalIterative(res)); + } + +} From daf1b68bfe2326160248f0d3f3f19a0a791afd23 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 16:19:51 -0700 Subject: [PATCH 08/12] RemoveDuplicatesfromSortedArray2 --- Medium/BinaryTreePreorderTraversal.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Medium/BinaryTreePreorderTraversal.java b/Medium/BinaryTreePreorderTraversal.java index 7961b85b..6515218f 100644 --- a/Medium/BinaryTreePreorderTraversal.java +++ b/Medium/BinaryTreePreorderTraversal.java @@ -73,6 +73,6 @@ public static void main(String[] args) { res.left.left.left = new TreeNode(9); System.out.print(preorderTraversal(res)); System.out.print(preorderTraversalIterative(res)); - } + } } From bd33724788bd19593dd7b2fab831db2d5ab2d8d6 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 16:20:43 -0700 Subject: [PATCH 09/12] RemoveDuplicatesfromSortedArray2 --- Medium/BinaryTreePreorderTraversal.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Medium/BinaryTreePreorderTraversal.java b/Medium/BinaryTreePreorderTraversal.java index 6515218f..e9de5739 100644 --- a/Medium/BinaryTreePreorderTraversal.java +++ b/Medium/BinaryTreePreorderTraversal.java @@ -70,9 +70,9 @@ public static void main(String[] args) { res.right = new TreeNode(1); res.left.left = new TreeNode(4); res.left.right = new TreeNode(5); - res.left.left.left = new TreeNode(9); + res.left.left.left = new TreeNode(9); System.out.print(preorderTraversal(res)); System.out.print(preorderTraversalIterative(res)); - } + } } From 45f1aa2044b5fc5d7745560d3e81ec2056822f02 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Sun, 20 Mar 2016 16:22:53 -0700 Subject: [PATCH 10/12] RemoveDuplicatesfromSortedArray2 --- Medium/RemoveDuplicatesfromSortedArray2.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Medium/RemoveDuplicatesfromSortedArray2.java b/Medium/RemoveDuplicatesfromSortedArray2.java index 65d04457..02974c14 100644 --- a/Medium/RemoveDuplicatesfromSortedArray2.java +++ b/Medium/RemoveDuplicatesfromSortedArray2.java @@ -36,7 +36,7 @@ else if(nums[i] != nums[i-1]){ } public static void main(String[] args) { - int[] res = {1,1,1,2,3}; - System.out.print(removeDuplicates(res)); + int[] res = {1,1,1,2,3}; + System.out.print(removeDuplicates(res)); } } From f5e173c6d9926e7f124bddeb08af023a22fbae3b Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Mon, 21 Mar 2016 21:25:07 -0700 Subject: [PATCH 11/12] fix merge conflict --- Easy/Pascal_Triangle.java | 4 ++++ Medium/BinaryTreePreorderTraversal.java | 4 +++- Medium/RemoveDuplicatesfromSortedArray2.java | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java index 07ebdc49..24fe48d7 100644 --- a/Easy/Pascal_Triangle.java +++ b/Easy/Pascal_Triangle.java @@ -11,7 +11,11 @@ * [1,3,3,1], * [1,4,6,4,1] * ] + * Tags: Array + * Similar Problems (E) Pascal's Triangle II + * * Analysis : using dp + * @author chenshuna */ public class Pascal_Triangle { diff --git a/Medium/BinaryTreePreorderTraversal.java b/Medium/BinaryTreePreorderTraversal.java index 2608ce09..614ed953 100644 --- a/Medium/BinaryTreePreorderTraversal.java +++ b/Medium/BinaryTreePreorderTraversal.java @@ -10,9 +10,11 @@ * / * 3 * return [1,2,3]. - * @author chenshuna + * Tags: Tree, Stack + * Similar Problems: Binary Tree Inorder Traversal, Verify Preorder Sequence in Binary Search Tree * * Note: Recursive solution + * @author chenshuna */ public class BinaryTreePreorderTraversal { diff --git a/Medium/RemoveDuplicatesfromSortedArray2.java b/Medium/RemoveDuplicatesfromSortedArray2.java index 02974c14..d90e2a92 100644 --- a/Medium/RemoveDuplicatesfromSortedArray2.java +++ b/Medium/RemoveDuplicatesfromSortedArray2.java @@ -5,6 +5,8 @@ * For example, * Given sorted array nums = [1,1,1,2,2,3], * Your function should return length = 5, with the first five elements of nums being 1, 1, 2, 2 and 3. It doesn't matter what you leave beyond the new length. + * Tag: Linkedlist + * * Note: create a countEach variable to count duplicated times for each integer in array. * Time complexity = O(n) * @author chenshuna From aa5c4af662828e1c77f4dac228e43cf825d533b4 Mon Sep 17 00:00:00 2001 From: JoannaCode Date: Mon, 21 Mar 2016 21:30:15 -0700 Subject: [PATCH 12/12] Update Pascal_Triangle.java --- Easy/Pascal_Triangle.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Easy/Pascal_Triangle.java b/Easy/Pascal_Triangle.java index 24fe48d7..2503b32e 100644 --- a/Easy/Pascal_Triangle.java +++ b/Easy/Pascal_Triangle.java @@ -12,7 +12,7 @@ * [1,4,6,4,1] * ] * Tags: Array - * Similar Problems (E) Pascal's Triangle II + * Similar Problems: Pascal's Triangle II * * Analysis : using dp * @author chenshuna