From 988289dbaea7558de387563d5a21d192e035715f Mon Sep 17 00:00:00 2001 From: "jikai.zhang" Date: Thu, 30 May 2019 10:13:52 +0800 Subject: [PATCH 1/2] 27. Remove Element --- .../ZHANGJIKAI5/RemoveElement.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/main/java/RemoveElement/ZHANGJIKAI5/RemoveElement.java diff --git a/src/main/java/RemoveElement/ZHANGJIKAI5/RemoveElement.java b/src/main/java/RemoveElement/ZHANGJIKAI5/RemoveElement.java new file mode 100644 index 0000000..fc02956 --- /dev/null +++ b/src/main/java/RemoveElement/ZHANGJIKAI5/RemoveElement.java @@ -0,0 +1,52 @@ +package RemoveElement.ZHANGJIKAI5; + + +/** + * author:ZHANGJIKAI5 + * 题目:27. 移除元素 + * 解题思路:题目容易进入误区,要输出数组长度,我第一想法是要copy一个数组,但是这样又没有办法做到空间复杂度O(1) + * 审题后,发现实例里有说:你不需要考虑数组中超出新长度后面的元素。 + * 由此定义一个两个变量,一个i,记录长度;一个temp,作为交换元素的中间变量。 + */ +public class RemoveElement { + + /** + * 第一次完成: + * 执行用时 : 1 ms, 在Remove Element的Java提交中击败了99.59% 的用户 + * 内存消耗 : 35.1 MB, 在Remove Element的Java提交中击败了85.91% 的用户 + * 第二次修改后: + * 执行用时 : 1 ms, 在Remove Element的Java提交中击败了99.59% 的用户 + * 内存消耗 : 35 MB, 在Remove Element的Java提交中击败了86.60% 的用户 + * 第三次修改后: + * 执行用时 : 1 ms, 在Remove Element的Java提交中击败了99.59% 的用户 + * 内存消耗 : 34 MB, 在Remove Element的Java提交中击败了100.00% 的用户 + * @param nums + * @param val + * @return + */ + public int removeElement(int[] nums, int val) { + int l = 0; + int temp; + for (int i=0; i Date: Thu, 6 Jun 2019 17:59:28 +0800 Subject: [PATCH 2/2] 20. Valid Parentheses 22. Generate Parentheses 678. Valid Parenthesis String --- src/ main/ java/ MoveZeroes/MoveZeroes.java | 22 ----- src/ main/ java/ MoveZeroes/fate0928 | 1 - .../ZHANGJIKAI5/GenerateParentheses.java | 41 ++++++++ .../MoveZeroes/ZHANGJIKAI5/MoveZeroes.java | 2 +- .../ZHANGJIKAI5/ValidParentheses.java | 97 +++++++++++++++++++ .../ZHANGJIKAI5/ValidParenthesisString.java | 29 ++++++ 6 files changed, 168 insertions(+), 24 deletions(-) delete mode 100644 src/ main/ java/ MoveZeroes/MoveZeroes.java delete mode 100644 src/ main/ java/ MoveZeroes/fate0928 create mode 100644 src/main/java/GenerateParentheses/ZHANGJIKAI5/GenerateParentheses.java create mode 100644 src/main/java/ValidParentheses/ZHANGJIKAI5/ValidParentheses.java create mode 100644 src/main/java/ValidParenthesisString/ZHANGJIKAI5/ValidParenthesisString.java diff --git a/src/ main/ java/ MoveZeroes/MoveZeroes.java b/src/ main/ java/ MoveZeroes/MoveZeroes.java deleted file mode 100644 index 609175d..0000000 --- a/src/ main/ java/ MoveZeroes/MoveZeroes.java +++ /dev/null @@ -1,22 +0,0 @@ - -public class MoveZeroes { - - public void moveZeroes(int[] nums) { - for(int i=0; i generateParenthesis(int n) { + List list = new ArrayList(); + List left = new ArrayList(n); + List right = new ArrayList(n); + for (int i=0; i list = generateParentheses.generateParenthesis(n); + for (String s: list + ) { + System.out.println(s); + } + } + +} diff --git a/src/main/java/MoveZeroes/ZHANGJIKAI5/MoveZeroes.java b/src/main/java/MoveZeroes/ZHANGJIKAI5/MoveZeroes.java index e4b677a..ea40033 100644 --- a/src/main/java/MoveZeroes/ZHANGJIKAI5/MoveZeroes.java +++ b/src/main/java/MoveZeroes/ZHANGJIKAI5/MoveZeroes.java @@ -1,4 +1,4 @@ -package com.its.leet.code.leetcode.MoveZeroes; +package MoveZeroes.ZHANGJIKAI5; /** diff --git a/src/main/java/ValidParentheses/ZHANGJIKAI5/ValidParentheses.java b/src/main/java/ValidParentheses/ZHANGJIKAI5/ValidParentheses.java new file mode 100644 index 0000000..be4769c --- /dev/null +++ b/src/main/java/ValidParentheses/ZHANGJIKAI5/ValidParentheses.java @@ -0,0 +1,97 @@ +package ValidParentheses.ZHANGJIKAI5; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; + +/** + * author:ZHANGJIKAI5 + * 题目:20. Valid Parentheses + * 解题思路: + */ +public class ValidParentheses { + + /** + * 第一次执行: + * 执行用时 : 6 ms, 在Valid Parentheses的Java提交中击败了76.53% 的用户 + * 内存消耗 : 33.7 MB, 在Valid Parentheses的Java提交中击败了93.11% 的用户 + * 第二次执行: + * 执行用时 : 5 ms, 在Valid Parentheses的Java提交中击败了84.74% 的用户 + * 内存消耗 : 33.7 MB, 在Valid Parentheses的Java提交中击败了92.63% 的用户 + * 第三次执行: + * 执行用时 : 4 ms, 在Valid Parentheses的Java提交中击败了92.03% 的用户 + * 内存消耗 : 34.1 MB, 在Valid Parentheses的Java提交中击败了87.89% 的用户 + * 第四次执行: + * 执行用时 : 4 ms, 在Valid Parentheses的Java提交中击败了92.03% 的用户 + * 内存消耗 : 33.6 MB, 在Valid Parentheses的Java提交中击败了93.88% 的用户 + * + * 执行用时 : 3 ms, 在Valid Parentheses的Java提交中击败了96.83% 的用户 + * 内存消耗 : 33.4 MB, 在Valid Parentheses的Java提交中击败了97.20% 的用户 + * @param s + * @return + */ + public boolean isValid(String s) { + char[] chars = s.toCharArray(); + LinkedList list = new LinkedList(); + if (chars.length > 0) { + Map all = new HashMap(chars.length); + all.put(')', '('); + all.put('}', '{'); + all.put(']', '['); + for (char c : chars) { + if ('(' == c || '{' == c || '[' == c) { + list.add(c); + } else { + if (list.size() <= 0) { + return false; + } + // 第三四次执行 + if (list.getLast() != all.get(c)) { + return false; + } else { + list.removeLast(); + } + // 第一二次执行 + /*if (')' == c) { + if ('(' != list.getLast()) { + return false; + } else { + list.removeLast(); + } + } else if ('}' == c) { + if ('{' != list.getLast()) { + return false; + } else { + list.removeLast(); + } + } else if (']' == c) { + if ('[' != list.getLast()) { + return false; + } else { + list.removeLast(); + } + }*/ + } + } + } + if (list.size() == 0) { + return true; + } + return false; + } + + public static void main(String[] args) { + ValidParentheses validParentheses = new ValidParentheses(); + String s1 = "([)]"; + String s2 = "()[]{}"; + String s3 = "]"; + String s4 = "["; + System.out.println("s1:" + validParentheses.isValid(s1)); + System.out.println("s2:" + validParentheses.isValid(s2)); + System.out.println("s3:" + validParentheses.isValid(s3)); + System.out.println("s4:" + validParentheses.isValid(s4)); + + + } + +} diff --git a/src/main/java/ValidParenthesisString/ZHANGJIKAI5/ValidParenthesisString.java b/src/main/java/ValidParenthesisString/ZHANGJIKAI5/ValidParenthesisString.java new file mode 100644 index 0000000..393ff45 --- /dev/null +++ b/src/main/java/ValidParenthesisString/ZHANGJIKAI5/ValidParenthesisString.java @@ -0,0 +1,29 @@ +package ValidParenthesisString.ZHANGJIKAI5; + +/** + * author:ZHANGJIKAI5 + * 题目:678. Valid Parenthesis String + * 解题思路: + */ +public class ValidParenthesisString { + + public boolean checkValidString(String s) { + char[] chars = s.toCharArray(); + + + + + + return false; + } + + public static void main(String[] args) { + ValidParenthesisString validParenthesisString = new ValidParenthesisString(); + String s1 = "(*))"; + String s2 = "(*)"; + System.out.println("s1:" + validParenthesisString.checkValidString(s1)); + System.out.println("s2:" + validParenthesisString.checkValidString(s2)); + + } + +}