From 423788fc725e38b1adcc1d4cb176bb2bd57b0476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 14:24:45 +0800 Subject: [PATCH 01/26] feat:TwoSum --- .gitignore | 1 + Two-Sum/pom.xml | 15 +++++++++++++++ pom.xml | 23 +++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 Two-Sum/pom.xml create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore index bf13a4d..39e8788 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ # Generated files .idea/**/contentModel.xml .idea/* +*.iml # Sensitive or high-churn files .idea/**/dataSources/ diff --git a/Two-Sum/pom.xml b/Two-Sum/pom.xml new file mode 100644 index 0000000..1e0e3ba --- /dev/null +++ b/Two-Sum/pom.xml @@ -0,0 +1,15 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + Two-Sum + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..9a4014c --- /dev/null +++ b/pom.xml @@ -0,0 +1,23 @@ + + + 4.0.0 + + com.lin.LeetCode + LeetCode + pom + 1.0 + + + + + + + + Two-Sum + + + + + \ No newline at end of file -- Gitee From ff5f58c6ca8ce7fe7e89e1dfa93f441f9251ae4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 14:32:08 +0800 Subject: [PATCH 02/26] fix:TwoSum --- {Two-Sum => 0001-Two-Sum}/pom.xml | 2 +- .../src/main/java/com/lin/twosum/TwoSum.java | 21 +++++++++++++++++++ .../src/main/resources/0001-two-sum.md | 2 ++ .../test/java/com/lin/twosum/TestTwoSum.java | 9 ++++++++ pom.xml | 4 +--- 5 files changed, 34 insertions(+), 4 deletions(-) rename {Two-Sum => 0001-Two-Sum}/pom.xml (91%) create mode 100644 0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java create mode 100644 0001-Two-Sum/src/main/resources/0001-two-sum.md create mode 100644 0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java diff --git a/Two-Sum/pom.xml b/0001-Two-Sum/pom.xml similarity index 91% rename from Two-Sum/pom.xml rename to 0001-Two-Sum/pom.xml index 1e0e3ba..fd61b30 100644 --- a/Two-Sum/pom.xml +++ b/0001-Two-Sum/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - Two-Sum + 0001-Two-Sum \ No newline at end of file diff --git a/0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java b/0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java new file mode 100644 index 0000000..4d75454 --- /dev/null +++ b/0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java @@ -0,0 +1,21 @@ +package com.lin.twosum; + +/** + * @author linqiankun + * @date 2020-06-23 + */ +public class TwoSum { + + public int[] twoSum(int[] nums, int target) { + int[] a = new int[2]; + for (int i = 0; i < nums.length; i++) { + for (int j = i + 1; j < nums.length; j++) { + if (nums[i] + nums[j] == target) { + a[0] = i; + a[1] = j; + } + } + } + return a; + } +} diff --git a/0001-Two-Sum/src/main/resources/0001-two-sum.md b/0001-Two-Sum/src/main/resources/0001-two-sum.md new file mode 100644 index 0000000..7e26168 --- /dev/null +++ b/0001-Two-Sum/src/main/resources/0001-two-sum.md @@ -0,0 +1,2 @@ +##### 两数之和 + diff --git a/0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java b/0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java new file mode 100644 index 0000000..d3a737b --- /dev/null +++ b/0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java @@ -0,0 +1,9 @@ +package com.lin.twosum; + +public class TestTwoSum { + + + + + +} diff --git a/pom.xml b/pom.xml index 9a4014c..37c152d 100644 --- a/pom.xml +++ b/pom.xml @@ -13,9 +13,7 @@ - - - Two-Sum + 0001-Two-Sum -- Gitee From ac063c48b0d1522c54ddd4092ff2a9f5208fbe75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 14:50:46 +0800 Subject: [PATCH 03/26] feat:0002 doc:0001 --- 0001-Two-Sum/src/main/resources/0001-two-sum.md | 16 +++++++++++++++- 0002-Add-Two-Numbers/pom.xml | 15 +++++++++++++++ pom.xml | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 0002-Add-Two-Numbers/pom.xml diff --git a/0001-Two-Sum/src/main/resources/0001-two-sum.md b/0001-Two-Sum/src/main/resources/0001-two-sum.md index 7e26168..d55d7a3 100644 --- a/0001-Two-Sum/src/main/resources/0001-two-sum.md +++ b/0001-Two-Sum/src/main/resources/0001-two-sum.md @@ -1,2 +1,16 @@ -##### 两数之和 +# 两数之和 +### 题目描述 + +给定一个整数数组 `nums` 和一个目标值 `target`,请你在该数组中找出和为目标值的那 **两个** 整数,并返回他们的数组下标。 +你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 + +**示例:** +``` +给定 nums = [2, 7, 11, 15], target = 9 + +因为 nums[0] + nums[1] = 2 + 7 = 9 +所以返回 [0, 1] +``` + +### 题目解析 diff --git a/0002-Add-Two-Numbers/pom.xml b/0002-Add-Two-Numbers/pom.xml new file mode 100644 index 0000000..cb99c69 --- /dev/null +++ b/0002-Add-Two-Numbers/pom.xml @@ -0,0 +1,15 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0002-Add-Two-Numbers + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 37c152d..b276324 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,7 @@ 0001-Two-Sum + 0002-Add-Two-Numbers -- Gitee From 7a8dd6123312f96ed489ef6f244bf60b3edf34d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 15:10:57 +0800 Subject: [PATCH 04/26] doc:0001 --- 0001-Two-Sum/src/main/resources/0001-two-sum.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/0001-Two-Sum/src/main/resources/0001-two-sum.md b/0001-Two-Sum/src/main/resources/0001-two-sum.md index d55d7a3..16c4592 100644 --- a/0001-Two-Sum/src/main/resources/0001-two-sum.md +++ b/0001-Two-Sum/src/main/resources/0001-two-sum.md @@ -14,3 +14,12 @@ ### 题目解析 +#### 1.两次遍历 + +通过两次遍历找出之和4等于目标值的数据。 +1. 外层遍历确定一位元素 +2. 内层遍历确定另一位元素,内层元素从外层元素的下一位开始取 +3. 元素相加,判断是否等于目标值。 + +#### 2.一次遍历 + -- Gitee From ff903959b11e473a5a90fd5b89524956191c412f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 15:12:46 +0800 Subject: [PATCH 05/26] doc:0001 --- 0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java b/0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java index 4d75454..930b5d9 100644 --- a/0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java +++ b/0001-Two-Sum/src/main/java/com/lin/twosum/TwoSum.java @@ -6,6 +6,13 @@ package com.lin.twosum; */ public class TwoSum { + /** + * 两次遍历 + * + * @param nums 数组 + * @param target 目标值 + * @return 查找到的元素下标 + */ public int[] twoSum(int[] nums, int target) { int[] a = new int[2]; for (int i = 0; i < nums.length; i++) { -- Gitee From 2b2c70e69f14d1ea2ccdc4d5eaae8a67073a3acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 17:57:22 +0800 Subject: [PATCH 06/26] fix,doc:0002 --- 0002-Add-Two-Numbers/pom.xml | 7 +++ .../com/lin/addtwonumbers/AddTwoNumbers.java | 50 +++++++++++++++++++ .../java/com/lin/addtwonumbers/ListNode.java | 10 ++++ .../addtwonumbers/test/addtwonumbers.java | 26 ++++++++++ pom.xml | 14 ++++++ 5 files changed, 107 insertions(+) create mode 100644 0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/AddTwoNumbers.java create mode 100644 0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/ListNode.java create mode 100644 0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java diff --git a/0002-Add-Two-Numbers/pom.xml b/0002-Add-Two-Numbers/pom.xml index cb99c69..4d9e4e1 100644 --- a/0002-Add-Two-Numbers/pom.xml +++ b/0002-Add-Two-Numbers/pom.xml @@ -11,5 +11,12 @@ 0002-Add-Two-Numbers + + + org.junit.jupiter + junit-jupiter + test + + \ No newline at end of file diff --git a/0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/AddTwoNumbers.java b/0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/AddTwoNumbers.java new file mode 100644 index 0000000..f1574a9 --- /dev/null +++ b/0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/AddTwoNumbers.java @@ -0,0 +1,50 @@ +package com.lin.addtwonumbers; + + +/** + * @author linqiankun + * @date 2020-06-23 + */ +public class AddTwoNumbers { + + + /** + * 两数相加 + * + * @param l1 链表1 + * @param l2 链表2 + * @return 返回结果链表的头节点 + */ + public ListNode addTwoNumbers(ListNode l1, ListNode l2) { + ListNode listNode = new ListNode(l1.val); + ListNode c = listNode; + int n = 0; + do { + int a = 0; + if (l1 != null) { + a = l1.val; + } + int b = 0; + if (l2 != null) { + b = l2.val; + } + int sum = a + b + n; + c.val = sum % 10; + n = sum / 10; + if (l1 != null) { + l1 = l1.next; + } + if (l2 != null) { + l2 = l2.next; + } + if (l1 != null || l2 != null || n != 0) { + c.next = new ListNode(n); + c = c.next; + } + + } while (l1 != null || l2 != null); + return listNode; + } +} + + diff --git a/0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/ListNode.java b/0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/ListNode.java new file mode 100644 index 0000000..725859b --- /dev/null +++ b/0002-Add-Two-Numbers/src/main/java/com/lin/addtwonumbers/ListNode.java @@ -0,0 +1,10 @@ +package com.lin.addtwonumbers; + +public class ListNode { + int val; + public ListNode next; + + public ListNode(int x) { + val = x; + } +} \ No newline at end of file diff --git a/0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java b/0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java new file mode 100644 index 0000000..2c7cb8e --- /dev/null +++ b/0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java @@ -0,0 +1,26 @@ +package com.lin.test.addtwonumbers.test; + +import com.lin.addtwonumbers.AddTwoNumbers; +import com.lin.addtwonumbers.ListNode; +import org.junit.jupiter.api.Test; + +public class addtwonumbers { + + + @Test + public void testAddTwoNumbers(){ + ListNode a = new ListNode(1); + ListNode b = new ListNode(9); + ListNode c = new ListNode(9); + b.next = c; + + AddTwoNumbers aa = new AddTwoNumbers(); + ListNode listNode = aa.addTwoNumbers(a, b); + + } + + + + + +} diff --git a/pom.xml b/pom.xml index b276324..e1a4841 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,20 @@ + + + + org.junit.jupiter + junit-jupiter + 5.5.2 + test + + + + + + + 0001-Two-Sum 0002-Add-Two-Numbers -- Gitee From 2b3fbe71354a584ff6919be2ed24e2d0f3d3d65e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 17:58:18 +0800 Subject: [PATCH 07/26] doc:gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 39e8788..e3bda7d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ .idea/**/contentModel.xml .idea/* *.iml +target/ # Sensitive or high-churn files .idea/**/dataSources/ -- Gitee From 284d8f7ad3fc199a12fd58814d1baed31855d0ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 24 Jun 2020 18:12:16 +0800 Subject: [PATCH 08/26] doc:me --- README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 18f6c8f..1f170e0 100644 --- a/README.md +++ b/README.md @@ -4,20 +4,16 @@ 我的LeetCode做题记录 #### 软件架构 -软件架构说明 +没有什么架构 #### 安装教程 +不用安装 -1. xxxx -2. xxxx -3. xxxx #### 使用说明 +看看就行了 -1. xxxx -2. xxxx -3. xxxx #### 参与贡献 -- Gitee From 4057817d4af4bc2950e9426b6a91f44b9b53fc40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Thu, 25 Jun 2020 00:02:05 +0800 Subject: [PATCH 09/26] feat:0003 --- .../pom.xml | 15 +++++++++++++++ .../LongSubstringWithoutRepeatingCharacters.java | 10 ++++++++++ pom.xml | 1 + 3 files changed, 26 insertions(+) create mode 100644 0003-Longest-Substring-Without-Repeating-Characters/pom.xml create mode 100644 0003-Longest-Substring-Without-Repeating-Characters/src/main/java/com/lin/longestsubstringwithoutrepeatingcharacters/LongSubstringWithoutRepeatingCharacters.java diff --git a/0003-Longest-Substring-Without-Repeating-Characters/pom.xml b/0003-Longest-Substring-Without-Repeating-Characters/pom.xml new file mode 100644 index 0000000..ab98525 --- /dev/null +++ b/0003-Longest-Substring-Without-Repeating-Characters/pom.xml @@ -0,0 +1,15 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0003-Longest-Substring-Without-Repeating-Characters + + + \ No newline at end of file diff --git a/0003-Longest-Substring-Without-Repeating-Characters/src/main/java/com/lin/longestsubstringwithoutrepeatingcharacters/LongSubstringWithoutRepeatingCharacters.java b/0003-Longest-Substring-Without-Repeating-Characters/src/main/java/com/lin/longestsubstringwithoutrepeatingcharacters/LongSubstringWithoutRepeatingCharacters.java new file mode 100644 index 0000000..c6d8651 --- /dev/null +++ b/0003-Longest-Substring-Without-Repeating-Characters/src/main/java/com/lin/longestsubstringwithoutrepeatingcharacters/LongSubstringWithoutRepeatingCharacters.java @@ -0,0 +1,10 @@ +package com.lin.longestsubstringwithoutrepeatingcharacters; + +/** + * @author 九分石人 + * @date 2020-06-25 + */ +public class LongSubstringWithoutRepeatingCharacters { + + +} diff --git a/pom.xml b/pom.xml index e1a4841..66ac05b 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,7 @@ 0001-Two-Sum 0002-Add-Two-Numbers + 0003-Longest-Substring-Without-Repeating-Characters -- Gitee From dc6cbf5a7fcb0a149932c96c55fb16b1619ff2c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Mon, 3 Aug 2020 21:26:03 +0800 Subject: [PATCH 10/26] feat:0007 --- 0007-Reverse-Integer/pom.xml | 22 +++++++++++++ .../lin/reverseinteger/ReverseInteger.java | 31 +++++++++++++++++++ .../reverseinteger/TestReverseInteger.java | 15 +++++++++ pom.xml | 19 +++++++++--- 4 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 0007-Reverse-Integer/pom.xml create mode 100644 0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java create mode 100644 0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java diff --git a/0007-Reverse-Integer/pom.xml b/0007-Reverse-Integer/pom.xml new file mode 100644 index 0000000..23bc4c5 --- /dev/null +++ b/0007-Reverse-Integer/pom.xml @@ -0,0 +1,22 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + Reverse-Integer + + + + org.junit.jupiter + junit-jupiter + test + + + + \ No newline at end of file diff --git a/0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java b/0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java new file mode 100644 index 0000000..be3550e --- /dev/null +++ b/0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java @@ -0,0 +1,31 @@ +package com.lin.reverseinteger; + +/** + * @author 九分石人 + */ +public class ReverseInteger { + + + /** + * 整数反转 + * + * @param x 目标元素 + * @return 反转后的元素 + */ + public int reverse(int x) { + int pes = 0; + int p = 0; + while (x != 0) { + p = pes * 10 + x % 10; + //用计算后的数字与计算前的比较,判断是否溢出存储大小 + if ((p - (x % 10)) / 10 != pes) { + return 0; + } + x = x / 10; + pes = p; + } + return pes; + } + + +} diff --git a/0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java b/0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java new file mode 100644 index 0000000..31d220a --- /dev/null +++ b/0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java @@ -0,0 +1,15 @@ +package com.lin.reverseinteger; + +import org.junit.jupiter.api.Test; + +public class TestReverseInteger { + + @Test + public void testReverseInteger() { + + ReverseInteger reverseInteger = new ReverseInteger(); + int reverse = reverseInteger.reverse(321); + System.out.println(reverse); + + } +} diff --git a/pom.xml b/pom.xml index 66ac05b..e68db3f 100644 --- a/pom.xml +++ b/pom.xml @@ -10,8 +10,6 @@ 1.0 - - @@ -24,14 +22,27 @@ - - 0001-Two-Sum 0002-Add-Two-Numbers 0003-Longest-Substring-Without-Repeating-Characters + 0007-Reverse-Integer + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5.1 + + 1.8 + 1.8 + + + + + \ No newline at end of file -- Gitee From 762aed1e9aeb77eb7dcab7f5e8ad73992dd38312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Mon, 3 Aug 2020 21:28:16 +0800 Subject: [PATCH 11/26] doc:0007 --- .../src/main/java/com/lin/reverseinteger/ReverseInteger.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java b/0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java index be3550e..ce2e2b6 100644 --- a/0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java +++ b/0007-Reverse-Integer/src/main/java/com/lin/reverseinteger/ReverseInteger.java @@ -1,6 +1,8 @@ package com.lin.reverseinteger; /** + * 整数反转 + * * @author 九分石人 */ public class ReverseInteger { -- Gitee From ec39df0b1181f10b27555d0aa6434c03e48e6821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Tue, 4 Aug 2020 21:18:31 +0800 Subject: [PATCH 12/26] feat:0009 fix:0007 --- 0007-Reverse-Integer/pom.xml | 2 +- 0009-Palindrome-Number/pom.xml | 21 ++++++++++ .../palindromenumber/PalindromeNumber.java | 42 +++++++++++++++++++ .../TestPalindromeNumber.java | 15 +++++++ pom.xml | 1 + 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 0009-Palindrome-Number/pom.xml create mode 100644 0009-Palindrome-Number/src/main/java/com/lin/palindromenumber/PalindromeNumber.java create mode 100644 0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java diff --git a/0007-Reverse-Integer/pom.xml b/0007-Reverse-Integer/pom.xml index 23bc4c5..df32f22 100644 --- a/0007-Reverse-Integer/pom.xml +++ b/0007-Reverse-Integer/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - Reverse-Integer + 0007-Reverse-Integer diff --git a/0009-Palindrome-Number/pom.xml b/0009-Palindrome-Number/pom.xml new file mode 100644 index 0000000..ff2998a --- /dev/null +++ b/0009-Palindrome-Number/pom.xml @@ -0,0 +1,21 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0009-Palindrome-Number + + + + org.junit.jupiter + junit-jupiter + test + + + \ No newline at end of file diff --git a/0009-Palindrome-Number/src/main/java/com/lin/palindromenumber/PalindromeNumber.java b/0009-Palindrome-Number/src/main/java/com/lin/palindromenumber/PalindromeNumber.java new file mode 100644 index 0000000..5c6633e --- /dev/null +++ b/0009-Palindrome-Number/src/main/java/com/lin/palindromenumber/PalindromeNumber.java @@ -0,0 +1,42 @@ +package com.lin.palindromenumber; + +/** + * 回文数 + * + * @author 九分石人 + */ +public class PalindromeNumber { + + + /** + * 回文数 + * + * @param x 数 + * @return 是/否 + */ + public boolean isPalindrome(int x) { + int num = x; + if (x < 0) { + return false; + } + if (x == 0) { + return true; + } + int pes = 0; + int p = 0; + while (x != 0) { + p = pes * 10 + x % 10; + // 用计算后的数字与计算前的比较,判断是否溢出存储大小,溢出内存,提升效率 + if ((p - (x % 10)) / 10 != pes) { + return false; + } + x = x / 10; + pes = p; + } + if (num == pes) { + return true; + } else { + return false; + } + } +} diff --git a/0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java b/0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java new file mode 100644 index 0000000..786663a --- /dev/null +++ b/0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java @@ -0,0 +1,15 @@ +package com.lin.palindromenumber; + +import org.junit.jupiter.api.Test; + +public class TestPalindromeNumber { + + + @Test + public void Test(){ + PalindromeNumber palindromeNumber = new PalindromeNumber(); + boolean palindrome = palindromeNumber.isPalindrome(121); + System.out.println(palindrome); + + } +} diff --git a/pom.xml b/pom.xml index e68db3f..7e89d89 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,7 @@ 0002-Add-Two-Numbers 0003-Longest-Substring-Without-Repeating-Characters 0007-Reverse-Integer + 0009-Palindrome-Number -- Gitee From 615642a1517c8489d1a949f0c9f759468c4bbb61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 5 Aug 2020 21:19:00 +0800 Subject: [PATCH 13/26] feat:0337 --- 0337-House-Robber-III/pom.xml | 15 +++++++++ .../lin/houserobberiii/HouseRobberIii.java | 32 +++++++++++++++++++ .../java/com/lin/houserobberiii/TreeNode.java | 14 ++++++++ pom.xml | 1 + 4 files changed, 62 insertions(+) create mode 100644 0337-House-Robber-III/pom.xml create mode 100644 0337-House-Robber-III/src/main/java/com/lin/houserobberiii/HouseRobberIii.java create mode 100644 0337-House-Robber-III/src/main/java/com/lin/houserobberiii/TreeNode.java diff --git a/0337-House-Robber-III/pom.xml b/0337-House-Robber-III/pom.xml new file mode 100644 index 0000000..e769f8e --- /dev/null +++ b/0337-House-Robber-III/pom.xml @@ -0,0 +1,15 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0337-House-Robber-III + + + \ No newline at end of file diff --git a/0337-House-Robber-III/src/main/java/com/lin/houserobberiii/HouseRobberIii.java b/0337-House-Robber-III/src/main/java/com/lin/houserobberiii/HouseRobberIii.java new file mode 100644 index 0000000..be31aef --- /dev/null +++ b/0337-House-Robber-III/src/main/java/com/lin/houserobberiii/HouseRobberIii.java @@ -0,0 +1,32 @@ +package com.lin.houserobberiii; + +/** + * 打家劫舍3 + * + * @author 九分石人 + */ +public class HouseRobberIii { + + public int rob(TreeNode root) { + int[] robb = robb(root); + return Math.max(robb[0], robb[1]); + } + + + int[] robb(TreeNode root) { + if (root == null) { + return new int[2]; + } + int[] result = new int[2]; + + int[] left = robb(root.left); + int[] right = robb(root.right); + + //不选当前节点,则选左子树的最大值加右子树的最大值 + result[0] = Math.max(left[0], left[1]) + Math.max(right[0], right[1]); + //选当前节点,则为不选左子树加不选右子树加自己的值 + result[1] = left[0] + right[0] + root.val; + + return result; + } +} diff --git a/0337-House-Robber-III/src/main/java/com/lin/houserobberiii/TreeNode.java b/0337-House-Robber-III/src/main/java/com/lin/houserobberiii/TreeNode.java new file mode 100644 index 0000000..da38172 --- /dev/null +++ b/0337-House-Robber-III/src/main/java/com/lin/houserobberiii/TreeNode.java @@ -0,0 +1,14 @@ +package com.lin.houserobberiii; + +/** + * @author 九分石人 + */ +public class TreeNode { + int val; + TreeNode left; + TreeNode right; + + TreeNode(int x) { + val = x; + } +} diff --git a/pom.xml b/pom.xml index 7e89d89..f0f6638 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ 0003-Longest-Substring-Without-Repeating-Characters 0007-Reverse-Integer 0009-Palindrome-Number + 0337-House-Robber-III -- Gitee From 034b9f21e6151d3ff1b14e4c3c78c15edb2c96fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 5 Aug 2020 21:33:56 +0800 Subject: [PATCH 14/26] doc:0337 --- .../main/resources/0337-house-robber-iii.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md diff --git a/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md new file mode 100644 index 0000000..e3b659e --- /dev/null +++ b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md @@ -0,0 +1,41 @@ +# 打家劫舍3 +### 题目描述 + +在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。 +这个地区只有一个入口,我们称之为“根”。 +除了“根”之外,每栋房子有且只有一个“父“房子与之相连。 +一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 +如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。 + +计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。 + +**示例1:** + +``` +输入:[3,2,3,null,3,null,1] + + 3 + / \ + 2 3 + \ \ + 3 1 + +输出:7 +解释:小偷一晚能盗取的最高金额 = 3 + 3 + 1 = 7 +``` +**示例2:** +``` +输入:[3,4,5,1,3,null,1] + + 3 + / \ + 4 5 + / \ \ + 1 3 1 + +输出:7 +解释:小偷一晚能盗取的最高金额 = 4 + 5 = 9 +``` + +### 解决方案 + -- Gitee From ef7af62e742633ee7226f0f9354013ebbb043163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 5 Aug 2020 21:43:53 +0800 Subject: [PATCH 15/26] doc:0337\n doc:0001 --- 0001-Two-Sum/src/main/resources/0001-two-sum.md | 4 ++-- .../src/main/resources/0337-house-robber-iii.md | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/0001-Two-Sum/src/main/resources/0001-two-sum.md b/0001-Two-Sum/src/main/resources/0001-two-sum.md index 16c4592..d373767 100644 --- a/0001-Two-Sum/src/main/resources/0001-two-sum.md +++ b/0001-Two-Sum/src/main/resources/0001-two-sum.md @@ -14,12 +14,12 @@ ### 题目解析 -#### 1.两次遍历 +#### 1. 两次遍历 通过两次遍历找出之和4等于目标值的数据。 1. 外层遍历确定一位元素 2. 内层遍历确定另一位元素,内层元素从外层元素的下一位开始取 3. 元素相加,判断是否等于目标值。 -#### 2.一次遍历 +#### 2. 一次遍历 diff --git a/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md index e3b659e..6f0fb71 100644 --- a/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md +++ b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md @@ -39,3 +39,15 @@ ### 解决方案 +#### 1. 动态规划 + +1. 以当前节点为根节点 +2. 对于当前节点,所能计算的最大值为 + 1. 选中当前节点时,最大值为当前节点的值加不选左子节点的左子树最大值加不选右子节点的右子树最大值 + 2. 不选当前节点时,最大值为左子树最大值加右子树最大值 + 3. 返回当前节点的值 +3. 递归对左子树和右子树进行计算 +4. 当前节点为叶子节点时不在继续往下递归 +5. 返回递归结果 + + -- Gitee From 3e389dda3e2a82f367f64bd45167d4bec4f47432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 5 Aug 2020 22:18:21 +0800 Subject: [PATCH 16/26] doc:0337 doc:0001 --- 0001-Two-Sum/src/main/resources/0001-two-sum.md | 2 +- .../src/main/resources/0337-house-robber-iii.md | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/0001-Two-Sum/src/main/resources/0001-two-sum.md b/0001-Two-Sum/src/main/resources/0001-two-sum.md index d373767..dba9a1f 100644 --- a/0001-Two-Sum/src/main/resources/0001-two-sum.md +++ b/0001-Two-Sum/src/main/resources/0001-two-sum.md @@ -11,7 +11,7 @@ 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] ``` - +--- ### 题目解析 #### 1. 两次遍历 diff --git a/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md index 6f0fb71..70339ef 100644 --- a/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md +++ b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md @@ -36,8 +36,8 @@ 输出:7 解释:小偷一晚能盗取的最高金额 = 4 + 5 = 9 ``` - -### 解决方案 +--- +### 题目解析 #### 1. 动态规划 @@ -50,4 +50,7 @@ 4. 当前节点为叶子节点时不在继续往下递归 5. 返回递归结果 +#### 2. 爷孙相加 + + -- Gitee From 3b259856319ae7769dea465409b2da6874f655f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Thu, 6 Aug 2020 22:49:55 +0800 Subject: [PATCH 17/26] feat:0019 --- 0019-Remove-Nth-Node-From-End-of-List/pom.xml | 15 ++++++ .../removenthnodefromendoflist/ListNode.java | 16 ++++++ .../RemoveNthNodeFromEndofList.java | 50 +++++++++++++++++++ .../0019-remove-nth-node-from-end-of-list.md | 26 ++++++++++ pom.xml | 1 + 5 files changed, 108 insertions(+) create mode 100644 0019-Remove-Nth-Node-From-End-of-List/pom.xml create mode 100644 0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/ListNode.java create mode 100644 0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java create mode 100644 0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md diff --git a/0019-Remove-Nth-Node-From-End-of-List/pom.xml b/0019-Remove-Nth-Node-From-End-of-List/pom.xml new file mode 100644 index 0000000..733d8a4 --- /dev/null +++ b/0019-Remove-Nth-Node-From-End-of-List/pom.xml @@ -0,0 +1,15 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0019-Remove-Nth-Node-From-End-of-List + + + \ No newline at end of file diff --git a/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/ListNode.java b/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/ListNode.java new file mode 100644 index 0000000..b5785df --- /dev/null +++ b/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/ListNode.java @@ -0,0 +1,16 @@ +package com.lin.removenthnodefromendoflist; + +/** + * @author 九分石人 + */ +public class ListNode { + + int val; + ListNode next; + + ListNode(int x) { + val = x; + } + + +} diff --git a/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java b/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java new file mode 100644 index 0000000..7b8cd3a --- /dev/null +++ b/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java @@ -0,0 +1,50 @@ +package com.lin.removenthnodefromendoflist; + +/** + * 删除链表倒数第n个节点 + * + * @author 九分石人 + */ +public class RemoveNthNodeFromEndofList { + + /** + * 一次遍历法 + * Leetcode题解带坑,不考虑极限情况 + * + * @param head 链表头节点 + * @param n 要删除的节点 + * @return 头节点 + */ + public ListNode removeNthFromEnd(ListNode head, int n) { + + ListNode first; + ListNode second; + ListNode third; + + first = head; + second = head; + third = head; + if (n == 1 && head.next == null) { + return null; + } + + for (int i = 0; i < n; i++) { + //此处规避掉删除头节点的情况,如果删除头节点,n与链表长度相等,后移语句必定空指针 + //长度为n的链表只可移动n-1次 + if (third.next != null) { + third = third.next; + } else { + return first.next; + } + } + + while (third.next != null) { + third = third.next; + second = second.next; + } + second.next = second.next.next; + return first; + } + + +} diff --git a/0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md b/0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md new file mode 100644 index 0000000..0bc4ce5 --- /dev/null +++ b/0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md @@ -0,0 +1,26 @@ +# 删除链表的倒数第N个节点 +### 题目描述 + +给定一个链表,删除链表的倒数第n个节点,并返回链表的头节点。 + +**示例:** +``` +给定一个链表:1->2->3->4->5,和 n = 2。 + +当删除了倒数第二个节点后,链表变为:1->2->3->5。 +``` +**说明:** + +给定的n保证是有效的。 + +**进阶:** + +你能尝试使用一趟扫描实现吗? + +--- +### 题目解析 + +#### 1. 两次扫描 + + +#### 2. 一次扫描 \ No newline at end of file diff --git a/pom.xml b/pom.xml index f0f6638..8cb83af 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,7 @@ 0007-Reverse-Integer 0009-Palindrome-Number 0337-House-Robber-III + 0019-Remove-Nth-Node-From-End-of-List -- Gitee From 0b8625f6959c4190b6e3fe7bf42ba9cee6beb1c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Thu, 6 Aug 2020 23:01:46 +0800 Subject: [PATCH 18/26] =?UTF-8?q?refactor(0019):=20=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对移除头指针的判断,将判断置于循环外,可提升运行速度 --- .../RemoveNthNodeFromEndofList.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java b/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java index 7b8cd3a..2136ce4 100644 --- a/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java +++ b/0019-Remove-Nth-Node-From-End-of-List/src/main/java/com/lin/removenthnodefromendoflist/RemoveNthNodeFromEndofList.java @@ -28,14 +28,22 @@ public class RemoveNthNodeFromEndofList { return null; } +// for (int i = 0; i < n; i++) { +// //此处规避掉删除头节点的情况,如果删除头节点,n与链表长度相等,后移语句必定空指针 +// //长度为n的链表只可移动n-1次 +// if (third.next != null) { +// third = third.next; +// } else { +// return first.next; +// } +// } + +// 与上面的注作用相同,提升效率 for (int i = 0; i < n; i++) { - //此处规避掉删除头节点的情况,如果删除头节点,n与链表长度相等,后移语句必定空指针 - //长度为n的链表只可移动n-1次 - if (third.next != null) { - third = third.next; - } else { - return first.next; - } + third = third.next; + } + if (third == null) { + return first.next; } while (third.next != null) { -- Gitee From 90b91017340dc38e0c03804127bb3f5205877624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Sun, 9 Aug 2020 16:33:46 +0800 Subject: [PATCH 19/26] =?UTF-8?q?doc:=20=E4=BF=AE=E6=94=B9readme=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9readme=E6=96=87=E4=BB=B6=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AE=89=E8=A3=85=E6=95=99=E7=A8=8B=E3=80=81=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=AF=B4=E6=98=8E=EF=BC=8C=E5=88=A0=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 24 +++--------------------- README.md | 26 ++++++-------------------- 2 files changed, 9 insertions(+), 41 deletions(-) diff --git a/README.en.md b/README.en.md index 05c8d05..bd2c0a3 100644 --- a/README.en.md +++ b/README.en.md @@ -1,36 +1,18 @@ # LeetCode #### Description -我的LeetCode做题记录 +My LeetCode History #### Software Architecture Software architecture description #### Installation -1. xxxx -2. xxxx -3. xxxx +1. Maven +2. git clone #### Instructions 1. xxxx 2. xxxx 3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md index 1f170e0..2d8a898 100644 --- a/README.md +++ b/README.md @@ -4,30 +4,16 @@ 我的LeetCode做题记录 #### 软件架构 -没有什么架构 +Maven #### 安装教程 -不用安装 +1. 安装maven +2. git clone -#### 使用说明 -看看就行了 - - -#### 参与贡献 -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 +#### 使用说明 -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +1. 两数之和 +2. 两数相加 \ No newline at end of file -- Gitee From e1be4855866def28dd52f9a09fc2b1eff4f4c878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 28 Apr 2021 20:08:19 +0800 Subject: [PATCH 20/26] =?UTF-8?q?feat:=20=E5=90=88=E5=B9=B6=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E6=9C=89=E5=BA=8F=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0021-Merge-Two-Lists/pom.xml | 19 +++++ .../com/lin/mergetwolists/MergeTwoLists.java | 85 +++++++++++++++++++ pom.xml | 1 + 3 files changed, 105 insertions(+) create mode 100644 0021-Merge-Two-Lists/pom.xml create mode 100644 0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java diff --git a/0021-Merge-Two-Lists/pom.xml b/0021-Merge-Two-Lists/pom.xml new file mode 100644 index 0000000..13a9b15 --- /dev/null +++ b/0021-Merge-Two-Lists/pom.xml @@ -0,0 +1,19 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0021-Merge-Two-Lists + + + 14 + 14 + + + \ No newline at end of file diff --git a/0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java b/0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java new file mode 100644 index 0000000..82d0124 --- /dev/null +++ b/0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java @@ -0,0 +1,85 @@ +package com.lin.mergetwolists; + + +// Definition for singly-linked list. + +class ListNode { + int val; + ListNode next; + + ListNode() { + } + + ListNode(int val) { + this.val = val; + } + + ListNode(int val, ListNode next) { + this.val = val; + this.next = next; + } +} + +public class MergeTwoLists { + //将l2插入l1 + public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if(l1 == null) { + return l2; + }if (l2 == null){ + return l1; + } + ListNode head = l1; + while (l2 != null) { + while (l1 != null) { + if (l2 != null) { + if (l2.val >= l1.val && l1.next == null) { + ListNode val = l2; + l1.next = val; + l2 = l2.next; + val.next = null; + break; + } else if (l2.val >= l1.val && l2.val <= l1.next.val) { + ListNode val = l2; + ListNode ll = l1.next; + l1.next = val; + l2 = l2.next; + val.next = ll; + break; + } else if (l2.val < l1.val) { + ListNode val = l2; + head = val; + l2 = l2.next; + val.next = l1; + break; + } else { + l1 = l1.next; + } + } + } + l1 = head; + if (l2 == null){ + break; + } + } + return head; + } + + + public static void main(String[] args) { + ListNode l1 = new ListNode(-9); + ListNode l2 = new ListNode(3); +// ListNode l4 = new ListNode(4); + l1.next = l2; +// l2.next = l4; + ListNode r1 = new ListNode(5); + ListNode r3 = new ListNode(7); +// ListNode r4 = new ListNode(4); + r1.next = r3; +// r3.next = r4; + ListNode listNode = mergeTwoLists(l1, r1); + while (listNode != null) { + System.out.println(listNode.val); + listNode = listNode.next; + } + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8cb83af..fad12e8 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,7 @@ 0009-Palindrome-Number 0337-House-Robber-III 0019-Remove-Nth-Node-From-End-of-List + 0021-Merge-Two-Lists -- Gitee From 92ebef942f5f114d7f49a6433914890e0a517c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Thu, 29 Apr 2021 20:28:51 +0800 Subject: [PATCH 21/26] =?UTF-8?q?feat:=20=E5=88=A0=E9=99=A4=E6=95=B0?= =?UTF-8?q?=E7=BB=84=E4=B8=AD=E7=9A=84=E9=87=8D=E5=A4=8D=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/lin/mergetwolists/MergeTwoLists.java | 19 ++++++++-- 0026-RemoveDuplicates/pom.xml | 19 ++++++++++ .../removeduplicates/RemoveDuplicates.java | 38 +++++++++++++++++++ pom.xml | 1 + 4 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 0026-RemoveDuplicates/pom.xml create mode 100644 0026-RemoveDuplicates/src/main/java/com/lin/removeduplicates/RemoveDuplicates.java diff --git a/0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java b/0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java index 82d0124..6ff4004 100644 --- a/0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java +++ b/0021-Merge-Two-Lists/src/main/java/com/lin/mergetwolists/MergeTwoLists.java @@ -20,12 +20,23 @@ class ListNode { } } +/** + * @author 九分石人 + */ public class MergeTwoLists { - //将l2插入l1 + + /** + * 将l2插入l1 + * + * @param l1 链表l1 + * @param l2 链表l2 + * @return 新链表头节点 + */ public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { - if(l1 == null) { + if (l1 == null) { return l2; - }if (l2 == null){ + } + if (l2 == null) { return l1; } ListNode head = l1; @@ -57,7 +68,7 @@ public class MergeTwoLists { } } l1 = head; - if (l2 == null){ + if (l2 == null) { break; } } diff --git a/0026-RemoveDuplicates/pom.xml b/0026-RemoveDuplicates/pom.xml new file mode 100644 index 0000000..3bc255d --- /dev/null +++ b/0026-RemoveDuplicates/pom.xml @@ -0,0 +1,19 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + RemoveDuplicates + + + 14 + 14 + + + \ No newline at end of file diff --git a/0026-RemoveDuplicates/src/main/java/com/lin/removeduplicates/RemoveDuplicates.java b/0026-RemoveDuplicates/src/main/java/com/lin/removeduplicates/RemoveDuplicates.java new file mode 100644 index 0000000..9a245ab --- /dev/null +++ b/0026-RemoveDuplicates/src/main/java/com/lin/removeduplicates/RemoveDuplicates.java @@ -0,0 +1,38 @@ +package com.lin.removeduplicates; + + + +/** + * @author 九分石人 + */ +public class RemoveDuplicates { + + /** + * 移除数组中的重复项 + * @param nums 数组 + * @return 不重复项长度 + */ + public static int removeDuplicates(int[] nums) { + int n = 0; + for (int i = 0; i < nums.length; i++) { + for (int j = i+1; j < nums.length-n;) { + if (nums[i] == nums[j]){ + for (int k = j; k < nums.length-1; k++) { + nums[k]= nums[k+1]; + } + n++; + } + if (nums[i] != nums[j]){ + j++; + } + } + } + return nums.length-n; + } + + public static void main(String[] args) { + int[] nums = {1,1,2}; + int i = removeDuplicates(nums); + System.out.println(i); + } +} diff --git a/pom.xml b/pom.xml index fad12e8..738fd90 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,7 @@ 0337-House-Robber-III 0019-Remove-Nth-Node-From-End-of-List 0021-Merge-Two-Lists + 0026-RemoveDuplicates -- Gitee From 5fa3f55430d04027ab628aa52adeb8d1839027e8 Mon Sep 17 00:00:00 2001 From: linqiankun <1915803787@qq.com> Date: Mon, 24 May 2021 22:46:29 +0800 Subject: [PATCH 22/26] gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index e3bda7d..2f3fe84 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,9 @@ fabric.properties # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser + +# vscode +*/.settings/* +.project +*/.classpath +.settings/* -- Gitee From 6eb215e48fc0cfe18b7bcaf8fbb35ac232dbffb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Tue, 1 Jun 2021 17:04:12 +0800 Subject: [PATCH 23/26] =?UTF-8?q?27=E3=80=8135=E3=80=8158?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0027-Remove-Element/pom.xml | 19 ++++++++ 0035-Search-Insert/pom.xml | 19 ++++++++ .../com/lin/searchinsert/SearchInsert.java | 47 +++++++++++++++++++ 0058-Length-Of-Last-Word/pom.xml | 19 ++++++++ .../lengthoflastword/LengthOfLastWord.java | 21 +++++++++ pom.xml | 3 ++ 6 files changed, 128 insertions(+) create mode 100644 0027-Remove-Element/pom.xml create mode 100644 0035-Search-Insert/pom.xml create mode 100644 0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java create mode 100644 0058-Length-Of-Last-Word/pom.xml create mode 100644 0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java diff --git a/0027-Remove-Element/pom.xml b/0027-Remove-Element/pom.xml new file mode 100644 index 0000000..5d585bc --- /dev/null +++ b/0027-Remove-Element/pom.xml @@ -0,0 +1,19 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0027-Remove-Element + + + 14 + 14 + + + \ No newline at end of file diff --git a/0035-Search-Insert/pom.xml b/0035-Search-Insert/pom.xml new file mode 100644 index 0000000..3254ae1 --- /dev/null +++ b/0035-Search-Insert/pom.xml @@ -0,0 +1,19 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0035-Search-Insert + + + 14 + 14 + + + \ No newline at end of file diff --git a/0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java b/0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java new file mode 100644 index 0000000..f6bc096 --- /dev/null +++ b/0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java @@ -0,0 +1,47 @@ +package com.lin.searchinsert; + +/** + * @author 九分石人 + */ +public class SearchInsert { + + /** + * 搜索插入位置 + * + * @param nums 数组 + * @param target 目标数字 + * @return 位置 + */ + public static int search(int[] nums, int min, int max, int target) { + if (target > nums[max]){ + return max+1; + } + if (target < nums[min]){ + return min; + } + int mid = (min + max) / 2; + + if (mid == min && nums[min] < target && nums[max] > target){ + return mid+1; + } + if (nums[mid] == target) { + return mid; + } else if (nums[mid] < target) { + return search(nums, mid+1, max, target); + } else if(nums[mid] > target) { + return search(nums, min, mid-1, target); + } + return mid; + } + + public static int searchInsert(int[] nums, int target) { + return search(nums,0, nums.length-1,target); + } + + public static void main(String[] args) { + int[] nums = {1,3,5,8}; + int target = 2; + int i = searchInsert(nums, target); + System.out.println(i); + } +} diff --git a/0058-Length-Of-Last-Word/pom.xml b/0058-Length-Of-Last-Word/pom.xml new file mode 100644 index 0000000..501a5d3 --- /dev/null +++ b/0058-Length-Of-Last-Word/pom.xml @@ -0,0 +1,19 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0058-Length-Of-Last-Word + + + 14 + 14 + + + \ No newline at end of file diff --git a/0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java b/0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java new file mode 100644 index 0000000..9bdd362 --- /dev/null +++ b/0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java @@ -0,0 +1,21 @@ +package lengthoflastword; + +/** + * @author 九分石人 + */ +public class LengthOfLastWord { + + public static int lengthOfLastWord(String s) { + String[] s1 = s.split(" "); + if (s1.length == 0 ){ + return 0; + }else { + return s1[s1.length-1].length(); + } + } + + public static void main(String[] args) { + int i = lengthOfLastWord(""); + System.out.println(i); + } +} diff --git a/pom.xml b/pom.xml index 738fd90..27e4750 100644 --- a/pom.xml +++ b/pom.xml @@ -32,6 +32,9 @@ 0019-Remove-Nth-Node-From-End-of-List 0021-Merge-Two-Lists 0026-RemoveDuplicates + 0035-Search-Insert + 0058-Length-Of-Last-Word + 0027-Remove-Element -- Gitee From 4854d1de30d47ebc515fb101a119fd5ab4fd6840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Tue, 1 Jun 2021 19:25:12 +0800 Subject: [PATCH 24/26] 27,28 --- .../com/lin/removeelement/RomoveElement.java | 30 +++++++++++++++++++ 0028-Str-Str/pom.xml | 19 ++++++++++++ .../src/main/java/com/lin/strstr/StrStr.java | 16 ++++++++++ pom.xml | 1 + 4 files changed, 66 insertions(+) create mode 100644 0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java create mode 100644 0028-Str-Str/pom.xml create mode 100644 0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java diff --git a/0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java b/0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java new file mode 100644 index 0000000..2f92e3e --- /dev/null +++ b/0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java @@ -0,0 +1,30 @@ +package com.lin.removeelement; + +/** + * @author 九分石人 + */ +public class RomoveElement { + + + public static int removeElement(int[] nums, int val) { + int k = nums.length; + for (int i = 0; i < k; i++) { + if (nums[i] == val) { + for (int j = i; j < k-1; j++) { + nums[j] = nums[j + 1]; + } + i--; + k--; + } + } + return k; + } + + + public static void main(String[] args) { + int[] nums = {0, 1, 2, 2, 3, 0, 4, 2}; + int val = 2; + int i = removeElement(nums, val); + System.out.println(i); + } +} diff --git a/0028-Str-Str/pom.xml b/0028-Str-Str/pom.xml new file mode 100644 index 0000000..8f21093 --- /dev/null +++ b/0028-Str-Str/pom.xml @@ -0,0 +1,19 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0028-Str-Str + + + 14 + 14 + + + \ No newline at end of file diff --git a/0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java b/0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java new file mode 100644 index 0000000..2aa5792 --- /dev/null +++ b/0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java @@ -0,0 +1,16 @@ +package com.lin.strstr; + +/** + * @author 九分石人 + */ +public class StrStr { + + public int strStr(String haystack, String needle) { + if (needle == "") { + return 0; + } + return haystack.indexOf(needle); + } + + +} diff --git a/pom.xml b/pom.xml index 27e4750..a001643 100644 --- a/pom.xml +++ b/pom.xml @@ -35,6 +35,7 @@ 0035-Search-Insert 0058-Length-Of-Last-Word 0027-Remove-Element + 0028-Str-Str -- Gitee From bad02b0842f4a861cb4413bb4d948bdfa461f4d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 2 Jun 2021 11:18:59 +0800 Subject: [PATCH 25/26] style(all): format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 格式化代码和md解析文件 --- .../src/main/resources/0001-two-sum.md | 9 +-- .../test/java/com/lin/twosum/TestTwoSum.java | 9 --- .../addtwonumbers/test/addtwonumbers.java | 26 -------- .../reverseinteger/TestReverseInteger.java | 15 ----- .../TestPalindromeNumber.java | 15 ----- .../0019-remove-nth-node-from-end-of-list.md | 8 +-- .../com/lin/removeelement/RomoveElement.java | 11 +++- .../src/main/java/com/lin/strstr/StrStr.java | 9 ++- .../com/lin/searchinsert/SearchInsert.java | 21 ++++--- 0053-Max-Sub-Array/pom.xml | 19 ++++++ .../java/com/lin/maxsubarray/MaxSubArray.java | 22 +++++++ .../src/main/resources/0053-max-sub-array.md | 63 +++++++++++++++++++ .../lengthoflastword/LengthOfLastWord.java | 12 +++- .../main/resources/0337-house-robber-iii.md | 8 +-- pom.xml | 1 + 15 files changed, 155 insertions(+), 93 deletions(-) delete mode 100644 0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java delete mode 100644 0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java delete mode 100644 0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java delete mode 100644 0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java create mode 100644 0053-Max-Sub-Array/pom.xml create mode 100644 0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java create mode 100644 0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md diff --git a/0001-Two-Sum/src/main/resources/0001-two-sum.md b/0001-Two-Sum/src/main/resources/0001-two-sum.md index dba9a1f..f9fa158 100644 --- a/0001-Two-Sum/src/main/resources/0001-two-sum.md +++ b/0001-Two-Sum/src/main/resources/0001-two-sum.md @@ -1,5 +1,6 @@ # 两数之和 -### 题目描述 + +## 题目描述 给定一个整数数组 `nums` 和一个目标值 `target`,请你在该数组中找出和为目标值的那 **两个** 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 @@ -12,14 +13,14 @@ 所以返回 [0, 1] ``` --- -### 题目解析 +## 题目解析 -#### 1. 两次遍历 +### 1. 两次遍历 通过两次遍历找出之和4等于目标值的数据。 1. 外层遍历确定一位元素 2. 内层遍历确定另一位元素,内层元素从外层元素的下一位开始取 3. 元素相加,判断是否等于目标值。 -#### 2. 一次遍历 +### 2. 一次遍历 diff --git a/0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java b/0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java deleted file mode 100644 index d3a737b..0000000 --- a/0001-Two-Sum/src/test/java/com/lin/twosum/TestTwoSum.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.lin.twosum; - -public class TestTwoSum { - - - - - -} diff --git a/0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java b/0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java deleted file mode 100644 index 2c7cb8e..0000000 --- a/0002-Add-Two-Numbers/src/test/java/com/lin/test/addtwonumbers/test/addtwonumbers.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.lin.test.addtwonumbers.test; - -import com.lin.addtwonumbers.AddTwoNumbers; -import com.lin.addtwonumbers.ListNode; -import org.junit.jupiter.api.Test; - -public class addtwonumbers { - - - @Test - public void testAddTwoNumbers(){ - ListNode a = new ListNode(1); - ListNode b = new ListNode(9); - ListNode c = new ListNode(9); - b.next = c; - - AddTwoNumbers aa = new AddTwoNumbers(); - ListNode listNode = aa.addTwoNumbers(a, b); - - } - - - - - -} diff --git a/0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java b/0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java deleted file mode 100644 index 31d220a..0000000 --- a/0007-Reverse-Integer/src/test/java/com/lin/reverseinteger/TestReverseInteger.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.lin.reverseinteger; - -import org.junit.jupiter.api.Test; - -public class TestReverseInteger { - - @Test - public void testReverseInteger() { - - ReverseInteger reverseInteger = new ReverseInteger(); - int reverse = reverseInteger.reverse(321); - System.out.println(reverse); - - } -} diff --git a/0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java b/0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java deleted file mode 100644 index 786663a..0000000 --- a/0009-Palindrome-Number/src/test/java/com/lin/palindromenumber/TestPalindromeNumber.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.lin.palindromenumber; - -import org.junit.jupiter.api.Test; - -public class TestPalindromeNumber { - - - @Test - public void Test(){ - PalindromeNumber palindromeNumber = new PalindromeNumber(); - boolean palindrome = palindromeNumber.isPalindrome(121); - System.out.println(palindrome); - - } -} diff --git a/0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md b/0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md index 0bc4ce5..2bea9ee 100644 --- a/0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md +++ b/0019-Remove-Nth-Node-From-End-of-List/src/main/resources/0019-remove-nth-node-from-end-of-list.md @@ -1,5 +1,5 @@ # 删除链表的倒数第N个节点 -### 题目描述 +## 题目描述 给定一个链表,删除链表的倒数第n个节点,并返回链表的头节点。 @@ -18,9 +18,9 @@ 你能尝试使用一趟扫描实现吗? --- -### 题目解析 +## 题目解析 -#### 1. 两次扫描 +### 1. 两次扫描 -#### 2. 一次扫描 \ No newline at end of file +### 2. 一次扫描 \ No newline at end of file diff --git a/0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java b/0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java index 2f92e3e..c5f48a7 100644 --- a/0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java +++ b/0027-Remove-Element/src/main/java/com/lin/removeelement/RomoveElement.java @@ -6,12 +6,19 @@ package com.lin.removeelement; public class RomoveElement { + /** + * 移除数组中指定元素 + * + * @param nums 指定数组 + * @param val 指定元素 + * @return 剩余数组长度 + */ public static int removeElement(int[] nums, int val) { int k = nums.length; for (int i = 0; i < k; i++) { if (nums[i] == val) { - for (int j = i; j < k-1; j++) { - nums[j] = nums[j + 1]; + if (k - 1 - i >= 0) { + System.arraycopy(nums, i + 1, nums, i, k - 1 - i); } i--; k--; diff --git a/0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java b/0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java index 2aa5792..b92d919 100644 --- a/0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java +++ b/0028-Str-Str/src/main/java/com/lin/strstr/StrStr.java @@ -5,8 +5,15 @@ package com.lin.strstr; */ public class StrStr { + /** + * 截取字符字串 + * + * @param haystack 原字符串 + * @param needle 截取的字符串 + * @return 返回截取字串的下标 + */ public int strStr(String haystack, String needle) { - if (needle == "") { + if ("".equals(needle)) { return 0; } return haystack.indexOf(needle); diff --git a/0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java b/0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java index f6bc096..509d941 100644 --- a/0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java +++ b/0035-Search-Insert/src/main/java/com/lin/searchinsert/SearchInsert.java @@ -7,39 +7,40 @@ public class SearchInsert { /** * 搜索插入位置 + * 要求二分法 * * @param nums 数组 * @param target 目标数字 * @return 位置 */ public static int search(int[] nums, int min, int max, int target) { - if (target > nums[max]){ - return max+1; + if (target > nums[max]) { + return max + 1; } - if (target < nums[min]){ + if (target < nums[min]) { return min; } int mid = (min + max) / 2; - if (mid == min && nums[min] < target && nums[max] > target){ - return mid+1; + if (mid == min && nums[min] < target && nums[max] > target) { + return mid + 1; } if (nums[mid] == target) { return mid; } else if (nums[mid] < target) { - return search(nums, mid+1, max, target); - } else if(nums[mid] > target) { - return search(nums, min, mid-1, target); + return search(nums, mid + 1, max, target); + } else if (nums[mid] > target) { + return search(nums, min, mid - 1, target); } return mid; } public static int searchInsert(int[] nums, int target) { - return search(nums,0, nums.length-1,target); + return search(nums, 0, nums.length - 1, target); } public static void main(String[] args) { - int[] nums = {1,3,5,8}; + int[] nums = {1, 3, 5, 8}; int target = 2; int i = searchInsert(nums, target); System.out.println(i); diff --git a/0053-Max-Sub-Array/pom.xml b/0053-Max-Sub-Array/pom.xml new file mode 100644 index 0000000..44a502f --- /dev/null +++ b/0053-Max-Sub-Array/pom.xml @@ -0,0 +1,19 @@ + + + + LeetCode + com.lin.LeetCode + 1.0 + + 4.0.0 + + 0053-Max-Sub-Array + + + 14 + 14 + + + \ No newline at end of file diff --git a/0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java b/0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java new file mode 100644 index 0000000..5798033 --- /dev/null +++ b/0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java @@ -0,0 +1,22 @@ +package com.lin.maxsubarray; + +/** + * @author 九分石人 + */ +public class MaxSubArray { + + + /** + * 使用动态规划的方法 + * + * @param nums + * @return + */ + public static int maxSubArray(int[] nums) { + return 0; + } + + public static void main(String[] args) { + + } +} diff --git a/0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md b/0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md new file mode 100644 index 0000000..6260b54 --- /dev/null +++ b/0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md @@ -0,0 +1,63 @@ +# 最大子序和 + +## 题目描述 + +给定一个整数数组`nums`,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 + +**示例1:** + +``` +输入:nums = [-2,1,-3,4,-1,2,1,-5,4] +输出:6 +解释:连续子数组 [4,-1,2,1] 的和最大,为 6。 +``` + +**示例1:** + +``` +输入:nums = [-2,1,-3,4,-1,2,1,-5,4] +输出:6 +解释:连续子数组 [4,-1,2,1] 的和最大,为 6。 +``` + +**示例2:** + +``` +输入:nums = [1] +输出:1 +``` + +**示例3:** + +``` +输入:nums = [0] +输出:0 +``` + +**示例4:** + +``` +输入:nums = [-1] +输出:-1 +``` + +**示例5:** + +``` +输入:nums = [-100000] +输出:-100000 +``` + +**提示:** + +- 1 <= nums.length <= 3 * 104 +- -105 <= nums[i] <= 105 + +**进阶:** 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的 **分治法** 求解。 + +--- +## 题目解析 + +### 1. 动态规划 + +### 2. 分治法 \ No newline at end of file diff --git a/0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java b/0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java index 9bdd362..c1113a2 100644 --- a/0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java +++ b/0058-Length-Of-Last-Word/src/main/java/lengthoflastword/LengthOfLastWord.java @@ -5,12 +5,18 @@ package lengthoflastword; */ public class LengthOfLastWord { + /** + * 按空格切割后最后字符串的长度 + * + * @param s 原始字符串 + * @return 长度 + */ public static int lengthOfLastWord(String s) { String[] s1 = s.split(" "); - if (s1.length == 0 ){ + if (s1.length == 0) { return 0; - }else { - return s1[s1.length-1].length(); + } else { + return s1[s1.length - 1].length(); } } diff --git a/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md index 70339ef..a732760 100644 --- a/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md +++ b/0337-House-Robber-III/src/main/resources/0337-house-robber-iii.md @@ -1,5 +1,5 @@ # 打家劫舍3 -### 题目描述 +## 题目描述 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。 这个地区只有一个入口,我们称之为“根”。 @@ -37,9 +37,9 @@ 解释:小偷一晚能盗取的最高金额 = 4 + 5 = 9 ``` --- -### 题目解析 +## 题目解析 -#### 1. 动态规划 +### 1. 动态规划 1. 以当前节点为根节点 2. 对于当前节点,所能计算的最大值为 @@ -50,7 +50,7 @@ 4. 当前节点为叶子节点时不在继续往下递归 5. 返回递归结果 -#### 2. 爷孙相加 +### 2. 爷孙相加 diff --git a/pom.xml b/pom.xml index a001643..7a79062 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,7 @@ 0058-Length-Of-Last-Word 0027-Remove-Element 0028-Str-Str + 0053-Max-Sub-Array -- Gitee From cd7ea9476f2c72fc7377af77268cc314d7a0a2df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=9D=E5=88=86=E7=9F=B3=E4=BA=BA?= <1915803787@qq.com> Date: Wed, 2 Jun 2021 14:06:42 +0800 Subject: [PATCH 26/26] =?UTF-8?q?feat(maxsubarray=EF=BC=8Cmd):=20=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E5=AD=90=E5=BA=8F=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用动态规划完成最大子序和 最大子序和文档 --- .../main/java/com/lin/maxsubarray/MaxSubArray.java | 12 ++++++++++-- .../src/main/resources/0053-max-sub-array.md | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java b/0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java index 5798033..0b47340 100644 --- a/0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java +++ b/0053-Max-Sub-Array/src/main/java/com/lin/maxsubarray/MaxSubArray.java @@ -13,10 +13,18 @@ public class MaxSubArray { * @return */ public static int maxSubArray(int[] nums) { - return 0; + int pre = 0; + int max = nums[0]; + for (int x : nums) { + pre = Math.max(pre + x, x); + max = Math.max(max, pre); + } + return max; } public static void main(String[] args) { - + int[] nums = {-8, 1, 9, -3, 7, -6, 3}; + int i = maxSubArray(nums); + System.out.println(i); } } diff --git a/0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md b/0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md index 6260b54..126f2be 100644 --- a/0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md +++ b/0053-Max-Sub-Array/src/main/resources/0053-max-sub-array.md @@ -60,4 +60,10 @@ ### 1. 动态规划 +1. 判定对于下标为i的节点,最大值(i)。 +2. 对于i前一个节点其有存在的最大值为f(i-1)。 +3. 则可以判定f(i) = {f(i-1) + nums[i],nums[i]}。 +4. 算法中,从左到右开始计算,`pre = Math.max(pre+x,x)`。这里计算出,下标为i的所在的最大值f(i)。 +5. 统计每一步中的最大值,每步进行比较,如果原有值大则是原有值,如果f(i)大则是f(i),`max = Math.max(max, pre)`。 + ### 2. 分治法 \ No newline at end of file -- Gitee