From 486f4a45c3a7f61f42017a16005e127fcf35aae7 Mon Sep 17 00:00:00 2001 From: suncen Date: Thu, 11 Apr 2019 16:08:33 +0800 Subject: [PATCH 001/780] 126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126126# --- Week_01/id_126/test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Week_01/id_126/test.txt diff --git a/Week_01/id_126/test.txt b/Week_01/id_126/test.txt new file mode 100644 index 00000000..e69de29b From cf866f123c74d4b6616142b3d73db3cecf580332 Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 12 Apr 2019 11:01:41 +0800 Subject: [PATCH 002/780] add hello.txt --- Week_01/id_0/hello.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Week_01/id_0/hello.txt diff --git a/Week_01/id_0/hello.txt b/Week_01/id_0/hello.txt new file mode 100644 index 00000000..31e0fce5 --- /dev/null +++ b/Week_01/id_0/hello.txt @@ -0,0 +1 @@ +helloworld From cf699f11a5d6da6cfaf8c90401d51e29374872cb Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 12 Apr 2019 11:03:00 +0800 Subject: [PATCH 003/780] delete hello.txt --- Week_01/id_0/hello.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Week_01/id_0/hello.txt diff --git a/Week_01/id_0/hello.txt b/Week_01/id_0/hello.txt deleted file mode 100644 index 31e0fce5..00000000 --- a/Week_01/id_0/hello.txt +++ /dev/null @@ -1 +0,0 @@ -helloworld From ec3f265e81833f70c69b408c281d05a41b88e7dc Mon Sep 17 00:00:00 2001 From: dehuab Date: Mon, 15 Apr 2019 00:09:10 +0800 Subject: [PATCH 004/780] week 1 ArrangeCoins --- Week_01/id_36/ArrangeCoins.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Week_01/id_36/ArrangeCoins.java diff --git a/Week_01/id_36/ArrangeCoins.java b/Week_01/id_36/ArrangeCoins.java new file mode 100644 index 00000000..e69de29b From 6a9d90f85846abecbc500e83a7f5428fc5550d6b Mon Sep 17 00:00:00 2001 From: MrMuddle Date: Mon, 15 Apr 2019 14:51:05 +0800 Subject: [PATCH 005/780] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 38 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/custom.md | 10 ++++++ .github/ISSUE_TEMPLATE/feature_request.md | 20 ++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/custom.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..dd84ea78 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md new file mode 100644 index 00000000..48d5f81f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/custom.md @@ -0,0 +1,10 @@ +--- +name: Custom issue template +about: Describe this issue template's purpose here. +title: '' +labels: '' +assignees: '' + +--- + + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..bbcbbe7d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From d403f28fe5441ca59e81bb753a49fc7c9b9cd74a Mon Sep 17 00:00:00 2001 From: MrMuddle Date: Mon, 15 Apr 2019 14:53:12 +0800 Subject: [PATCH 006/780] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 38 ---------------------------- .github/ISSUE_TEMPLATE/custom.md | 10 -------- 2 files changed, 48 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/custom.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index dd84ea78..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md deleted file mode 100644 index 48d5f81f..00000000 --- a/.github/ISSUE_TEMPLATE/custom.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: Custom issue template -about: Describe this issue template's purpose here. -title: '' -labels: '' -assignees: '' - ---- - - From 8d1785ae2defbe634143ca0268b4984e7c12cfff Mon Sep 17 00:00:00 2001 From: wangzhao Date: Mon, 15 Apr 2019 15:02:43 +0800 Subject: [PATCH 007/780] update --- .github/ISSUE_TEMPLATE/feature_request.md | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index bbcbbe7d..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. From f88f69fe1cb73c7b08de0f0c4d2a781e33804384 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Mon, 15 Apr 2019 17:45:18 +0800 Subject: [PATCH 008/780] =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/NOTE.md | 14 ++- Week_01/id_7/merge-two-sorted-lists.go | 123 +++++++++++++++++++++++++ Week_01/id_7/merge_test.go | 24 +++++ 3 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_7/merge-two-sorted-lists.go create mode 100644 Week_01/id_7/merge_test.go diff --git a/Week_01/id_7/NOTE.md b/Week_01/id_7/NOTE.md index c684e62f..60762cb1 100644 --- a/Week_01/id_7/NOTE.md +++ b/Week_01/id_7/NOTE.md @@ -1 +1,13 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 + +* 链表操作: + +[https://leetcode-cn.com/problems/merge-two-sorted-lists/](https://leetcode-cn.com/problems/merge-two-sorted-lists/) + +* 栈操作 + +[https://leetcode-cn.com/problems/valid-parentheses/](https://leetcode-cn.com/problems/valid-parentheses/) + +* 可能完成的: + +triestree 完成url 匹配 diff --git a/Week_01/id_7/merge-two-sorted-lists.go b/Week_01/id_7/merge-two-sorted-lists.go new file mode 100644 index 00000000..55a0964a --- /dev/null +++ b/Week_01/id_7/merge-two-sorted-lists.go @@ -0,0 +1,123 @@ +package geekcode + +import ( + "log" +) + +type ListNode struct { + Val int + Next *ListNode +} + +/** +* 打印list 类型,方便查看list的结果 + */ +func PrintList(list *ListNode) { + l := list + for l != nil { + log.Println(l.Val) + l = l.Next + } +} + +/** +* 初始化列表 +* 使用一个数组初始化 + */ +func InitList(nums []int) *ListNode { + h := new(ListNode) + l := h + for _, v := range nums { + l.Next = &ListNode{Val: v, Next: nil} + l = l.Next + } + return h.Next +} + +/** +* Definition for singly-linked list. +* type ListNode struct { +* Val int +* Next *ListNode +* } +* + 8 ms, 2.8 MB, +*/ +func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { + + if l1 == nil { + return l2 + } + + if l2 == nil { + return l1 + } + + p0, p1 := l1, l2 + nList := new(ListNode) + p2 := nList + + for p0 != nil || p1 != nil { + switch { + case p0 == nil: + nList.Next = &ListNode{Val: p1.Val, Next: nil} + p1 = p1.Next + case p1 == nil: + nList.Next = &ListNode{Val: p0.Val, Next: nil} + p0 = p0.Next + default: + if p0.Val <= p1.Val { + nList.Next = &ListNode{Val: p0.Val, Next: nil} + p0 = p0.Next + } else { + nList.Next = &ListNode{Val: p1.Val, Next: nil} + p1 = p1.Next + } + } + + nList = nList.Next + } + return p2.Next +} + +/* +* 修改版本,减少内存消耗 +* 4ms , 2.5 MB + */ +func mergeTwoLists2(l1 *ListNode, l2 *ListNode) *ListNode { + + if l1 == nil { + return l2 + } + + if l2 == nil { + return l1 + } + + p0, p1 := l1, l2 + nList := new(ListNode) + p2 := nList + + for p0 != nil || p1 != nil { + switch { + case p0 == nil: + nList.Next = p1 + p1 = p1.Next + case p1 == nil: + nList.Next = p0 + p0 = p0.Next + default: + if p0.Val <= p1.Val { + nList.Next = p0 + p0 = p0.Next + } else { + nList.Next = p1 + p1 = p1.Next + } + } + + nList = nList.Next + } + return p2.Next + +} diff --git a/Week_01/id_7/merge_test.go b/Week_01/id_7/merge_test.go new file mode 100644 index 00000000..97d57b25 --- /dev/null +++ b/Week_01/id_7/merge_test.go @@ -0,0 +1,24 @@ +package geekcode + +import ( + "fmt" + "testing" +) + +func NewList(nums []int) { + +} + +func TestMergeList(t *testing.T) { + l1 := InitList([]int{1, 2, 3, 4, 5, 8, 10}) + fmt.Println("print l1") + PrintList(l1) + l2 := InitList([]int{1, 2, 3, 4, 5, 20, 35, 50, 98}) + fmt.Println("print l2") + PrintList(l2) + + //l3 := mergeTwoLists(l1, l2) + l3 := mergeTwoLists2(l1, l2) + PrintList(l3) + +} From f78c2aef5a5f9adc3e3ef56a6c71fad0094f2329 Mon Sep 17 00:00:00 2001 From: hehuan1002 Date: Mon, 15 Apr 2019 18:29:50 +0800 Subject: [PATCH 009/780] Create test.txt --- Week_01/id_76/test.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Week_01/id_76/test.txt diff --git a/Week_01/id_76/test.txt b/Week_01/id_76/test.txt new file mode 100644 index 00000000..9d607966 --- /dev/null +++ b/Week_01/id_76/test.txt @@ -0,0 +1 @@ +11 \ No newline at end of file From 08caeada34b52c7c07223fcef357609e13dc0930 Mon Sep 17 00:00:00 2001 From: hehuan1002 Date: Mon, 15 Apr 2019 18:40:23 +0800 Subject: [PATCH 010/780] Create test2.txt --- Week_01/id_76/test2.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Week_01/id_76/test2.txt diff --git a/Week_01/id_76/test2.txt b/Week_01/id_76/test2.txt new file mode 100644 index 00000000..8fdd954d --- /dev/null +++ b/Week_01/id_76/test2.txt @@ -0,0 +1 @@ +22 \ No newline at end of file From 5e7cfdaa3505381dbefba3394fb51433382ec6f4 Mon Sep 17 00:00:00 2001 From: "guangjun.ma" Date: Mon, 15 Apr 2019 18:49:34 +0800 Subject: [PATCH 011/780] maguangjun: add test class ,to use github --- Week_01/id_58/TestClass.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Week_01/id_58/TestClass.java diff --git a/Week_01/id_58/TestClass.java b/Week_01/id_58/TestClass.java new file mode 100644 index 00000000..5649550c --- /dev/null +++ b/Week_01/id_58/TestClass.java @@ -0,0 +1,12 @@ +package algorithm.Week_01.id_58; + +public class TestClass { + + public static void main(String[] args) { + + System.out.println("Hello World!" + + ); + } + +} From f5dcb964a9dac14782d91f02b6d90d1070a68629 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Mon, 15 Apr 2019 21:47:43 +0800 Subject: [PATCH 012/780] =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E4=B9=8B=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/{merge_test.go => geek_test.go} | 5 +++++ Week_01/id_7/two-sum.go | 21 ++++++++++++++++++++ 2 files changed, 26 insertions(+) rename Week_01/id_7/{merge_test.go => geek_test.go} (82%) create mode 100644 Week_01/id_7/two-sum.go diff --git a/Week_01/id_7/merge_test.go b/Week_01/id_7/geek_test.go similarity index 82% rename from Week_01/id_7/merge_test.go rename to Week_01/id_7/geek_test.go index 97d57b25..5b42d2bf 100644 --- a/Week_01/id_7/merge_test.go +++ b/Week_01/id_7/geek_test.go @@ -22,3 +22,8 @@ func TestMergeList(t *testing.T) { PrintList(l3) } + +func TestTwoSum(t *testing.T) { + nums := []int{3, 3} + t.Log(twoSum(nums, 6)) +} diff --git a/Week_01/id_7/two-sum.go b/Week_01/id_7/two-sum.go new file mode 100644 index 00000000..81d44659 --- /dev/null +++ b/Week_01/id_7/two-sum.go @@ -0,0 +1,21 @@ +package geekcode + +func twoSum(nums []int, target int) []int { + l := len(nums) + hashNums := make(map[int]int) + + // 如果一个数字是解,那么最多出现两次 + for i := 0; i < l; i++ { + hashNums[nums[i]] = i + } + + for i := 0; i < l-1; i++ { + + if idx, ok := hashNums[target-nums[i]]; ok && idx != i { + return []int{i, idx} + } + + } + return nil + +} From c75234fba538a219178b7eb45eb14e4070aae4f1 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Mon, 15 Apr 2019 23:44:36 +0800 Subject: [PATCH 013/780] =?UTF-8?q?=E6=89=BE=E5=85=B6=E4=B8=AD=E5=8F=AA?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E4=B8=80=E6=AC=A1=E7=9A=84=E6=95=B0=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/geek_test.go | 5 +++++ Week_01/id_7/single-number.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 Week_01/id_7/single-number.go diff --git a/Week_01/id_7/geek_test.go b/Week_01/id_7/geek_test.go index 5b42d2bf..dd608f41 100644 --- a/Week_01/id_7/geek_test.go +++ b/Week_01/id_7/geek_test.go @@ -27,3 +27,8 @@ func TestTwoSum(t *testing.T) { nums := []int{3, 3} t.Log(twoSum(nums, 6)) } + +func TestSingleNumber(t *testing.T) { + nums := []int{3, 3, 1} + t.Log(singleNumber(nums)) +} diff --git a/Week_01/id_7/single-number.go b/Week_01/id_7/single-number.go new file mode 100644 index 00000000..4bf7c2cb --- /dev/null +++ b/Week_01/id_7/single-number.go @@ -0,0 +1,32 @@ +package geekcode + +/* +因为抑或满足交换律,所以, 乱序 也可以随意交换, +把两个相同的放在一起,抑或为 0 , +最后剩下多余的那个数字,就是出现一次的数字 +*/ + +func singleNumber(nums []int) int { + num := 0 + for _, v := range nums { + num = num ^ v + } + return num +} + +/*** +func singleNumber(nums []int) int { + hashnums := make(map[int]int) + for k,v := range nums { + if _,ok := hashnums[v] ; ok { + delete(hashnums,v) + }else { + hashnums[v] = k + } + } + for idx,_ := range(hashnums) { + return idx + } + return -1 +} +**/ From 37457743984b966a605440e6665351a242978e03 Mon Sep 17 00:00:00 2001 From: liyanling Date: Tue, 16 Apr 2019 01:19:08 +0800 Subject: [PATCH 014/780] add solution for leetcode 21.24.83.142 --- .../LinkedList_leetcode142-Solution1.java | 44 +++++++++++++++ Week_01/id_118/LinkedList_leetcode21.java | 53 +++++++++++++++++++ Week_01/id_118/LinkedList_leetcode24.java | 52 ++++++++++++++++++ Week_01/id_118/LinkedList_leetcode83.java | 43 +++++++++++++++ 4 files changed, 192 insertions(+) create mode 100644 Week_01/id_118/LinkedList_leetcode142-Solution1.java create mode 100644 Week_01/id_118/LinkedList_leetcode21.java create mode 100644 Week_01/id_118/LinkedList_leetcode24.java create mode 100644 Week_01/id_118/LinkedList_leetcode83.java diff --git a/Week_01/id_118/LinkedList_leetcode142-Solution1.java b/Week_01/id_118/LinkedList_leetcode142-Solution1.java new file mode 100644 index 00000000..592fe204 --- /dev/null +++ b/Week_01/id_118/LinkedList_leetcode142-Solution1.java @@ -0,0 +1,44 @@ +/** + * https://leetcode-cn.com/problems/linked-list-cycle-ii/ + * + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public ListNode detectCycle(ListNode head) { + // 不允许修改给定的链表。也就是不能在数据节点做标记,也不能修改链表节点指向。 + // 换个思路,用哈希表 + + // 1. 边界处理 + if(head == null || head.next == null){ + return null; + } + + // 2. 定义哈希表 + HashSet hashSet = new HashSet<>(); + + // 3. 加哨兵节点和临时节点 + ListNode guard = new ListNode(-1); + guard.next = head; + ListNode cur = guard; + + // 4. 访问过则直接返回,没有则加进去。 + while(null != cur.next){ + if(hashSet.contains(cur.next)){ + return cur.next; + } + cur = cur.next; + hashSet.add(cur); + } + + // 5. 到最后都没找到,则无环 + return null; + } +} diff --git a/Week_01/id_118/LinkedList_leetcode21.java b/Week_01/id_118/LinkedList_leetcode21.java new file mode 100644 index 00000000..223f3c30 --- /dev/null +++ b/Week_01/id_118/LinkedList_leetcode21.java @@ -0,0 +1,53 @@ + +/** + * + * https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/ + * + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + + // 1. 边界处理:两个都为null或任意一个为null + if(l1==null || l2==null ){ + return l1 == null ? l2 : l1; + } + + // 2. 初始化新链表中的节点。 + // - 为了简化处理,初始化一个头结点作为哨兵节点,值为0。 + // - 再初始化一个临时指针,指向头结点,从头开始往链表上挂节点。 + ListNode head = new ListNode(0); + ListNode current = head; + + // 3. 同时遍历两个链表,哪个头结点值最小,则把哪个节点的头拆下来 + // - 注意,拆头结点的时候,千万别把指针拆丢了 + while(l1!=null && l2!=null){ + if(l1.val<=l2.val){ + current.next = l1; + l1=l1.next; + }else{ + current.next = l2; + l2=l2.next; + } + current=current.next; + current.next = null; + } + + // 4. 边界处理:可能某一个指针还没走完,直接无脑追加上就好了 + if(l1!=null){ + current.next = l1; + } + if(l2!=null){ + current.next = l2; + } + + // 5. 最后,返回 head.next,因为head节点数据无意义 + return head.next; + + } +} diff --git a/Week_01/id_118/LinkedList_leetcode24.java b/Week_01/id_118/LinkedList_leetcode24.java new file mode 100644 index 00000000..424d6148 --- /dev/null +++ b/Week_01/id_118/LinkedList_leetcode24.java @@ -0,0 +1,52 @@ +/** + * https://leetcode-cn.com/problems/swap-nodes-in-pairs/ + * + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode swapPairs(ListNode head) { + + // 1. 边界:空链表或只有一个节点 + if(head==null || head.next == null){ + return head; + } + + // 2. 为了方便处理,需要加一个哨兵节点,指向 head + ListNode guard = new ListNode(0); + guard.next = head; + + // 3. 然后,两个节点的交换需要涉及到其前后节点,加起来共四个节点,按顺序分别将他们定义为: + // start_left,要交换两个节点中起点的前一个节点。初始为 guard + // start,要交换的起点。初始为 head + // end,要交换的终点。初始为 head.next + // end_right,要交换的两个节点中终点的后一个节点。初始为 head.next.next。这个节点有可能为空 + ListNode start_left = guard; + ListNode start = head; + ListNode end = head.next; + ListNode end_right = head.next.next; + + // 4. 开始做节点交换和指针移动,end==null时停止 + while(end!=null){ + // 先交换 + start_left.next = end; + start.next = end_right; + end.next = start; + // 后移动。注意判断接下来是否还有两个非空节点 + if(end_right == null || end_right.next == null){ + break; + } + start_left = start; + start = start_left.next; + end = start.next; + end_right = end.next; + } + + // 5. 最后返回 guard.next。注意,这里不要返回 head,因为head 已经被交换到第二个节点了。 + return guard.next; + } +} diff --git a/Week_01/id_118/LinkedList_leetcode83.java b/Week_01/id_118/LinkedList_leetcode83.java new file mode 100644 index 00000000..a90be26b --- /dev/null +++ b/Week_01/id_118/LinkedList_leetcode83.java @@ -0,0 +1,43 @@ +/** + * https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ + * + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + + // 1. 边界处理:链表为空或只有一个节点 + if(head == null || head.next == null){ + return head; + } + + // 2. 定义 left 和 right 两个前后指针。 + ListNode left = head; + ListNode right = head.next; + + // 3. 当 right 不为空时,进行如下操作: + // - 若两指针节点数据相同,则 right 移动,left 不动 + // - 若两指针节点数据不同,则 left.next 指向 right,然后 left 和 right 都移动 + while(right!=null){ + if(left.val == right.val){ + right=right.next; + }else{ + left.next = right; + left = right; + right = right.next; + } + } + + // 4. 边界处理:前面的循环终止条件是 right 为null,有两种情况: + // - left.next 为 null + // - left 及 到 null 前的节点数据相同 + // so => + left.next = null; + return head; + } +} From 1ac3dc5f60f8a019502433442f961b1e1067c44f Mon Sep 17 00:00:00 2001 From: liyanling Date: Tue, 16 Apr 2019 01:32:13 +0800 Subject: [PATCH 015/780] add solution 2 for leetcode 142 --- .../LinkedList_leetcode142-Solution2.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Week_01/id_118/LinkedList_leetcode142-Solution2.java diff --git a/Week_01/id_118/LinkedList_leetcode142-Solution2.java b/Week_01/id_118/LinkedList_leetcode142-Solution2.java new file mode 100644 index 00000000..1cd153c5 --- /dev/null +++ b/Week_01/id_118/LinkedList_leetcode142-Solution2.java @@ -0,0 +1,54 @@ +/** + * https://leetcode-cn.com/problems/linked-list-cycle-ii/ + * + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public ListNode detectCycle(ListNode head) { + // 不允许修改给定的链表。也就是不能在数据节点做标记,也不能修改链表节点指向。 + // 第一种解法哈希表,第二种解法快慢指针。 + + // 1. 边界处理 + if(head == null || head.next == null){ + return null; + } + + // 2. 加哨兵节点 + ListNode guard = new ListNode(-1); + guard.next = head; + + // 3. 定义快慢指针 + ListNode fast = guard; + ListNode slow = guard; + + // 4. 遍历,检查是否有环。 + // - 要是没环的话,会直接抛出去 + // - 要是有环的话,则快慢指针一定会相遇,退出循环 + while(true){ + if(fast.next == null || fast.next.next==null){ + return null; + } + slow = slow.next; + fast = fast.next.next; + if(slow == fast){ + break; + } + } + + // 5. 查找环的位置 + slow = guard; + while(slow != fast){ + slow = slow.next; + fast= fast.next; + } + return slow; + } +} From 86ce1b8a3e3b41c0ee47681735d4793633e52d04 Mon Sep 17 00:00:00 2001 From: baiyaguang <301070179@qq.com> Date: Tue, 16 Apr 2019 08:20:27 +0800 Subject: [PATCH 016/780] LeetCode_441_81 --- Week_01/id_81/LeetCode_441_81.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Week_01/id_81/LeetCode_441_81.java diff --git a/Week_01/id_81/LeetCode_441_81.java b/Week_01/id_81/LeetCode_441_81.java new file mode 100644 index 00000000..c6a5c566 --- /dev/null +++ b/Week_01/id_81/LeetCode_441_81.java @@ -0,0 +1,15 @@ +class Solution { + public int arrangeCoins(int n) { + if(n==1) + return 1; + int index = 1; + while(index<=n){ + n = n-index; + index = index+1; + if(n Date: Tue, 16 Apr 2019 08:37:26 +0800 Subject: [PATCH 017/780] LeetCode_441_81 --- Week_01/id_81/LeetCode_441_81.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Week_01/id_81/LeetCode_441_81.java b/Week_01/id_81/LeetCode_441_81.java index c6a5c566..9d966afd 100644 --- a/Week_01/id_81/LeetCode_441_81.java +++ b/Week_01/id_81/LeetCode_441_81.java @@ -1,3 +1,17 @@ +/** + * 思路: + * 例图: n=5 + * * + * ** + * ** + * 从图中可以看出,本题中如果是正常的梯形,第一行 1 *,第二行 2 ** ,第三行 3 *** .. + * 因此使用 index 来标记行,每排列一行,n 就要减去对应的行数, + * 也就是 第一行 index = 1, 排列之后, n 还剩 n=n-index=4, 第二行 index = 2,排列之后 n=n-index=2 + * 依次类推,知道 n < index 时,就无法再行程梯形了。 + * 时间复杂度应该是 O(n) 吧, + * 还有一种方式就是利用 梯形公式; + */ + class Solution { public int arrangeCoins(int n) { if(n==1) From e64d0276b12dfc6f3da98645f30c373c28412acb Mon Sep 17 00:00:00 2001 From: wangzhao Date: Tue, 16 Apr 2019 10:09:14 +0800 Subject: [PATCH 018/780] commit --- Week_01/id_85/Solution.java | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 Week_01/id_85/Solution.java diff --git a/Week_01/id_85/Solution.java b/Week_01/id_85/Solution.java new file mode 100644 index 00000000..3eec81a9 --- /dev/null +++ b/Week_01/id_85/Solution.java @@ -0,0 +1,114 @@ +/** + * @Package: + * @ClassName: Solution + * @Description: 删除排序链表中的重复元素 + * @Author: wangzhao + * @Date: 2019-04-15 15:18:28 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +public class Solution { + + + public ListNode deleteDuplicates(ListNode head) { + + if (head == null) { + return null; + } + ListNode result = head; + + while (head.next != null) { + /** + * 当前节点与下一节点值比较 + * 如果相等,则将当前节点的下一节点指向下下节点 + */ + if (head.val == head.next.val) { + head.next = head.next.next; + } + /** + * 比较当前节点与下一节点的值是否相等, + * 如果相等则当前节点不移动到下一节点 + * 循环上一步判断 + */ + if (head.next != null && head.val != head.next.val) { + head = head.next; + } + } + + return result; + } + + public ListNode deleteDuplicates2(ListNode head) { + + if (head == null || head.next == null) { + return head; + } + /** + * 取出当前节点的下一节点 + */ + ListNode next = head.next; + /** + * 判断当前节点与下一节点的值是否相等 + */ + if (head.val == next.val) { + /** + * 如果相等,将当前节点的下一节点指向下一届节点的下一节点 + */ + head.next = next.next; + /** + * 递归调用 + */ + deleteDuplicates2(head); + }else { + /** + * 当前节点与下一节点的值不相等,递归下一节点 + */ + deleteDuplicates2(next); + } + return head; + } + + + public static void main(String[] args) { + + + Integer[] arr = {1,1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5}; + + //初始化一个无用节点。去除边界问题 + ListNode cur = new ListNode(-1); + ListNode head = cur; + + for (Integer i : arr) { + cur.next = new ListNode(i); + cur = cur.next; + } + + /** + * 循环去重 + */ + ListNode resultNode = new Solution().deleteDuplicates(head.next); + while (resultNode != null) { + System.out.println(resultNode.val); + resultNode = resultNode.next; + } + System.out.println("----------------我是分隔符------------------"); + /** + * 递归去重 + */ + resultNode = new Solution().deleteDuplicates2(head.next); + while (resultNode != null) { + System.out.println(resultNode.val); + resultNode = resultNode.next; + } + } +} + + +class ListNode { + int val; + ListNode next; + + ListNode(int x) { + val = x; + } +} \ No newline at end of file From c7ed47dfd4f6f52b43a34b2cfb3de88641103c65 Mon Sep 17 00:00:00 2001 From: wangzhao Date: Tue, 16 Apr 2019 10:13:18 +0800 Subject: [PATCH 019/780] commit --- Week_01/id_85/{Solution.java => LinkDelDup.java} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename Week_01/id_85/{Solution.java => LinkDelDup.java} (91%) diff --git a/Week_01/id_85/Solution.java b/Week_01/id_85/LinkDelDup.java similarity index 91% rename from Week_01/id_85/Solution.java rename to Week_01/id_85/LinkDelDup.java index 3eec81a9..9ffaa1c5 100644 --- a/Week_01/id_85/Solution.java +++ b/Week_01/id_85/LinkDelDup.java @@ -7,7 +7,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class Solution { +public class LinkDelDup { public ListNode deleteDuplicates(ListNode head) { @@ -59,7 +59,7 @@ public ListNode deleteDuplicates2(ListNode head) { * 递归调用 */ deleteDuplicates2(head); - }else { + } else { /** * 当前节点与下一节点的值不相等,递归下一节点 */ @@ -72,7 +72,7 @@ public ListNode deleteDuplicates2(ListNode head) { public static void main(String[] args) { - Integer[] arr = {1,1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5}; + Integer[] arr = {1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5}; //初始化一个无用节点。去除边界问题 ListNode cur = new ListNode(-1); @@ -86,7 +86,7 @@ public static void main(String[] args) { /** * 循环去重 */ - ListNode resultNode = new Solution().deleteDuplicates(head.next); + ListNode resultNode = new LinkDelDup().deleteDuplicates(head.next); while (resultNode != null) { System.out.println(resultNode.val); resultNode = resultNode.next; @@ -95,7 +95,7 @@ public static void main(String[] args) { /** * 递归去重 */ - resultNode = new Solution().deleteDuplicates2(head.next); + resultNode = new LinkDelDup().deleteDuplicates2(head.next); while (resultNode != null) { System.out.println(resultNode.val); resultNode = resultNode.next; From 5ae668bf86d7f4d14216f683a8dd64e28c528971 Mon Sep 17 00:00:00 2001 From: zhaowende Date: Tue, 16 Apr 2019 11:44:26 +0800 Subject: [PATCH 020/780] add ignore file --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..62c89355 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ \ No newline at end of file From 915a9fb731a7b03d0aabc7fdefd1e01be7fc9fb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Tue, 16 Apr 2019 14:44:57 +0800 Subject: [PATCH 021/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=9Aleetcode-83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode83.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Week_01/id_52/LeetCode83.java diff --git a/Week_01/id_52/LeetCode83.java b/Week_01/id_52/LeetCode83.java new file mode 100644 index 00000000..eb0c7c1b --- /dev/null +++ b/Week_01/id_52/LeetCode83.java @@ -0,0 +1,24 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + ListNode node= head; + if(head == null){ + return null; + } + while(node.next!=null){ + if(node.next.val==node.val){ + node.next=node.next.next; + continue; + } + node=node.next; + } + return head; + } +} From 7ea5f5cf514dd4c93096c84b9737d529e8f36ce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Tue, 16 Apr 2019 14:49:55 +0800 Subject: [PATCH 022/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=9Aleetcode-21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/leetcode-21.java | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Week_01/id_52/leetcode-21.java diff --git a/Week_01/id_52/leetcode-21.java b/Week_01/id_52/leetcode-21.java new file mode 100644 index 00000000..3233e0cf --- /dev/null +++ b/Week_01/id_52/leetcode-21.java @@ -0,0 +1,32 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + ListNode r=new ListNode(0); + ListNode curr=r; + while(l1!=null&&l2!=null){ + if(l1.val<=l2.val){ + curr.next=l1; + l1=l1.next; + }else{ + curr.next=l2; + l2=l2.next; + } + curr=curr.next; + } + if(l1!=null){ + curr.next=l1; + } + if(l2!=null){ + curr.next=l2; + } + r=r.next; + return r; + } +} From 4b6901ad94468c8bf6251642697af03c1218ef48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Tue, 16 Apr 2019 14:50:36 +0800 Subject: [PATCH 023/780] rename --- Week_01/id_52/{leetcode-21.java => LeetCode-21.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_52/{leetcode-21.java => LeetCode-21.java} (100%) diff --git a/Week_01/id_52/leetcode-21.java b/Week_01/id_52/LeetCode-21.java similarity index 100% rename from Week_01/id_52/leetcode-21.java rename to Week_01/id_52/LeetCode-21.java From 90be7da5d67055efb7595eb0bb3148c69d3f05b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Tue, 16 Apr 2019 14:50:57 +0800 Subject: [PATCH 024/780] rename --- Week_01/id_52/{LeetCode83.java => LeetCode-83.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_52/{LeetCode83.java => LeetCode-83.java} (100%) diff --git a/Week_01/id_52/LeetCode83.java b/Week_01/id_52/LeetCode-83.java similarity index 100% rename from Week_01/id_52/LeetCode83.java rename to Week_01/id_52/LeetCode-83.java From d2ade98b01f0c8373c29074f45593a26cb3e1147 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Tue, 16 Apr 2019 14:55:53 +0800 Subject: [PATCH 025/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=20LeetCode24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-24.java | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Week_01/id_52/LeetCode-24.java diff --git a/Week_01/id_52/LeetCode-24.java b/Week_01/id_52/LeetCode-24.java new file mode 100644 index 00000000..950e70e2 --- /dev/null +++ b/Week_01/id_52/LeetCode-24.java @@ -0,0 +1,32 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode swapPairs(ListNode head) { + if(head==null||head.next==null){ + return head; + } + ListNode curr = head; + int i=1; + head=head.next; + while(curr.next!=null){ + if(curr.next.next==null&&i%2==0){ + return head; + } + ListNode node = curr.next; + curr.next=curr.next.next; + if(i%2==1){ + node.next=curr; + }else{ + curr=node; + } + i++; + } + return head; + } +} From 0ecad77625b4bda16f8bb31c17308e4945649c29 Mon Sep 17 00:00:00 2001 From: yuanyunxu Date: Tue, 16 Apr 2019 15:34:21 +0800 Subject: [PATCH 026/780] Add LeetCode_83 --- Week_01/id_112/LeetCode_83_122.php | 46 ++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Week_01/id_112/LeetCode_83_122.php diff --git a/Week_01/id_112/LeetCode_83_122.php b/Week_01/id_112/LeetCode_83_122.php new file mode 100644 index 00000000..c1394ffe --- /dev/null +++ b/Week_01/id_112/LeetCode_83_122.php @@ -0,0 +1,46 @@ +val = $val; } + * } + */ + +class ListNode { + public $val = 0; + public $next = null; + function __construct($val) { $this->val = $val; } +} + +class Solution { + + /** + * @param ListNode $head + * @return ListNode + */ + function deleteDuplicates($head) { + if ($head == null) { + return $head; + } + $prior = $head; + while ($prior->next) { + $next = $prior->next; + if ($prior->val == $next->val) { + $prior->next = $next->next; + $next->next = null; + continue; + } + $prior = $prior->next; + } + return $head; + } +} \ No newline at end of file From 6fc1da6022976a8d51c1d5a4f138b812acdd4ceb Mon Sep 17 00:00:00 2001 From: yuanyunxu Date: Tue, 16 Apr 2019 15:38:27 +0800 Subject: [PATCH 027/780] fix folder --- Week_01/{id_112 => id_122}/LeetCode_83_122.php | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/{id_112 => id_122}/LeetCode_83_122.php (100%) diff --git a/Week_01/id_112/LeetCode_83_122.php b/Week_01/id_122/LeetCode_83_122.php similarity index 100% rename from Week_01/id_112/LeetCode_83_122.php rename to Week_01/id_122/LeetCode_83_122.php From 7db4832d5447f1afc00df4523d8e96ea8b067ab8 Mon Sep 17 00:00:00 2001 From: Administrator Date: Tue, 16 Apr 2019 15:41:06 +0800 Subject: [PATCH 028/780] =?UTF-8?q?=E9=93=BE=E8=A1=A8easy=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Week_01/id_55/LeetCode_21_55.py | 68 +++++++++++++++++++++++++++++++++ Week_01/id_55/LeetCode_83_55.py | 32 ++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 .gitignore create mode 100644 Week_01/id_55/LeetCode_21_55.py create mode 100644 Week_01/id_55/LeetCode_83_55.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..dbe9c82b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vscode/ \ No newline at end of file diff --git a/Week_01/id_55/LeetCode_21_55.py b/Week_01/id_55/LeetCode_21_55.py new file mode 100644 index 00000000..912cdac1 --- /dev/null +++ b/Week_01/id_55/LeetCode_21_55.py @@ -0,0 +1,68 @@ +# Definition for singly-linked list. +class ListNode: + def __init__(self, x): + self.val = x + self.next = None + + +class Solution: + def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: + cur1, cur2 = l1, l2 + new = ListNode(0) + cur = new + while cur1 != None and cur2 != None: + # print(cur1.val) + # print(cur2.val) + if cur1.val <= cur2.val: + cur.next = cur1 + cur1 = cur1.next + else: + cur.next = cur2 + cur2 = cur2.next + cur = cur.next + + # 循环有先后最后会有一个数组没有循环完另一个空了,剩下就继续写入cur即可 + if cur1 != None: + cur.next = cur1 + + if cur2 != None: + cur.next = cur2 + + return new.next + + # 递归的方法 + def recursionMergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: + if not l1: return l2 + if not l2: return l1 + if l1.val < l2.val: + l1.next = self.mergeTwoLists(l1.next, l2) + return l1 + else: + l2.next = self.mergeTwoLists(l1, l2.next) + return l2 + + +# 创建链表 +a = ListNode(1) +b = ListNode(3) +c = ListNode(5) +d = ListNode(5) +e = ListNode(7) +a.next = b +b.next = c +c.next = d +d.next = e + +f = ListNode(2) +g = ListNode(2) +h = ListNode(4) +i = ListNode(6) +l = ListNode(8) +f.next = g +g.next = h +h.next = i +i.next = l +# 实例化 +demo = Solution() +# print(demo.mergeTwoLists(a, f)) +print(demo.recursionMergeTwoLists(a, f)) \ No newline at end of file diff --git a/Week_01/id_55/LeetCode_83_55.py b/Week_01/id_55/LeetCode_83_55.py new file mode 100644 index 00000000..c69a3bb5 --- /dev/null +++ b/Week_01/id_55/LeetCode_83_55.py @@ -0,0 +1,32 @@ +# Definition for singly-linked list. +class ListNode: + def __init__(self, x): + self.val = x + self.next = None + + +class Solution: + def deleteDuplicates(self, head: ListNode) -> ListNode: + cur = head + while cur: + if cur.next and cur.val == cur.next.val: + cur.next = cur.next.next + else: + cur = cur.next + return head + + +# 创建链表 +a = ListNode(1) +b = ListNode(2) +c = ListNode(3) +d = ListNode(3) +e = ListNode(4) +a.next = b +b.next = c +c.next = d +d.next = e + +# 实例化 +demo = Solution() +print(demo.deleteDuplicates(a)) \ No newline at end of file From e3e1a1638a1d239e6090711635c6224586dea2ef Mon Sep 17 00:00:00 2001 From: yuanyunxu Date: Tue, 16 Apr 2019 16:01:54 +0800 Subject: [PATCH 029/780] Add LeetCode_21_122 --- Week_01/id_122/LeetCode_21_122.php | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Week_01/id_122/LeetCode_21_122.php diff --git a/Week_01/id_122/LeetCode_21_122.php b/Week_01/id_122/LeetCode_21_122.php new file mode 100644 index 00000000..eab8ba91 --- /dev/null +++ b/Week_01/id_122/LeetCode_21_122.php @@ -0,0 +1,75 @@ +val = $val; } + * } + */ + +class ListNode { + public $val = 0; + public $next = null; + function __construct($val) { $this->val = $val; } +} + +class Solution { + + /** + * @param ListNode $l1 + * @param ListNode $l2 + * @return ListNode + */ + function mergeTwoLists($l1, $l2) { + if ($l1 == null) { + return $l2; + } + + if ($l2 == null) { + return $l1; + } + + $first = $l1; + $second = $l2; + + if ($first->val <= $second->val) { + $head = $first; + $first = $first->next; + } else { + $head = $second; + $second = $second->next; + } + + $now = $head; + + while (true) { + if ($first == null) { + $now->next = $second; + break; + } + if ($second == null) { + $now->next = $first; + break; + } + + if ($first->val <= $second->val) { + $now->next = $first; + $first = $first->next; + $now = $now->next; + continue; + } + $now->next = $second; + $second = $second->next; + $now = $now->next; + } + return $head; + } +} \ No newline at end of file From edaf060f7262a3de939bdb615cd56561392905a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Tue, 16 Apr 2019 16:23:37 +0800 Subject: [PATCH 030/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=20LeetCode-142?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-142.java | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Week_01/id_52/LeetCode-142.java diff --git a/Week_01/id_52/LeetCode-142.java b/Week_01/id_52/LeetCode-142.java new file mode 100644 index 00000000..e4cd495d --- /dev/null +++ b/Week_01/id_52/LeetCode-142.java @@ -0,0 +1,33 @@ +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public ListNode detectCycle(ListNode head) { + if(head==null||head.next==null){ + return null; + } + ListNode slow=head; + ListNode fast=head; + while(fast.next!=null&&fast.next.next!=null){ + slow=slow.next; + fast=fast.next.next; + if(fast==slow){ + fast=head; + while(fast!=slow){ + slow=slow.next; + fast=fast.next; + } + return fast; + } + } + return null; + } +} From 33d610716895622fa594ce750db67c6da7301225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B1=86=E5=9F=B9=E5=9F=B9?= Date: Tue, 16 Apr 2019 16:55:40 +0800 Subject: [PATCH 031/780] Week1 --- Week_01/id_28/LeetCode_242_028.java | 22 ++++++++++++++++++++++ Week_01/id_28/LeetCode_922_028.java | 29 +++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Week_01/id_28/LeetCode_242_028.java create mode 100644 Week_01/id_28/LeetCode_922_028.java diff --git a/Week_01/id_28/LeetCode_242_028.java b/Week_01/id_28/LeetCode_242_028.java new file mode 100644 index 00000000..696ab155 --- /dev/null +++ b/Week_01/id_28/LeetCode_242_028.java @@ -0,0 +1,22 @@ +class Solution { + public boolean isAnagram(String s, String t) { + if (s.length() != t.length()) { + return false; + } + int[] stat = new int[26]; + char[] arr = s.toCharArray(); + for (char item : arr) { + stat[item - 'a']++; + } + char[] brr = t.toCharArray(); + for (char item : brr) { + stat[item - 'a']--; + } + for (int c : stat) { + if (c != 0) { + return false; + } + } + return true; + } +} diff --git a/Week_01/id_28/LeetCode_922_028.java b/Week_01/id_28/LeetCode_922_028.java new file mode 100644 index 00000000..51d98a76 --- /dev/null +++ b/Week_01/id_28/LeetCode_922_028.java @@ -0,0 +1,29 @@ +class Solution { + public int[] sortArrayByParityII(int[] A) { + int i = 0, j = A.length - 1; + while (i < A.length && j > 0) { + int a = A[i], b = A[j]; + + if (a % 2 == 1) { + if (b % 2 == 0) { // W-W + // swap + A[i] = b; + A[j] = a; + // walk both + i += 2; + j -= 2; + } else { // W-R + j -= 2; + } + } else { + if (b % 2 == 0) { // R-W + i += 2; + } else { // R-R + i += 2; + j -= 2; + } + } + } + return A; + } +} From 41a0519868f23cdeee37f3966dc12fc546921f94 Mon Sep 17 00:00:00 2001 From: guoshufeng <123456ab> Date: Tue, 16 Apr 2019 18:54:37 +0800 Subject: [PATCH 032/780] gsf --- Week_01/id_30/D21.java | 26 ++++++++++++++++++++++++++ Week_01/id_30/D83.java | 21 +++++++++++++++++++++ Week_01/id_30/NOTE.md | 3 ++- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_30/D21.java create mode 100644 Week_01/id_30/D83.java diff --git a/Week_01/id_30/D21.java b/Week_01/id_30/D21.java new file mode 100644 index 00000000..fd8d421f --- /dev/null +++ b/Week_01/id_30/D21.java @@ -0,0 +1,26 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class D21 { + + public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { + ListNode node = new ListNode(0); + ListNode first = node; + while (l1 != null && l2 != null) { + if (l1.val > l2.val) { + node.next = l2; + l2 = l2.next; + } else { + node.next = l1; + l1 = l1.next; + } + node = node.next; + } + node.next = l1 != null ? l1 : l2; + return first.next; + } +} diff --git a/Week_01/id_30/D83.java b/Week_01/id_30/D83.java new file mode 100644 index 00000000..1a94a266 --- /dev/null +++ b/Week_01/id_30/D83.java @@ -0,0 +1,21 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class D83 { + public static ListNode deleteDuplicates(ListNode head) { + ListNode head1 = head; + while (head1 != null) { + if (head1.next != null && head1.val == head1.next.val) { + head1.next = head1.next.next; + continue; + } + head1 = head1.next; + } + return head; + + } +} diff --git a/Week_01/id_30/NOTE.md b/Week_01/id_30/NOTE.md index c684e62f..a602faae 100644 --- a/Week_01/id_30/NOTE.md +++ b/Week_01/id_30/NOTE.md @@ -1 +1,2 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +1、链表操作的时候,注意创建引用变量,在对链表操作的时候,容易修改变量内容。 \ No newline at end of file From 4f3db0d30fc92996b25e2380d756bbac5441f14d Mon Sep 17 00:00:00 2001 From: Yimeng Chen Date: Wed, 17 Apr 2019 01:00:48 +0800 Subject: [PATCH 033/780] add week01 readme --- Week_01/id_128/README.md | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Week_01/id_128/README.md diff --git a/Week_01/id_128/README.md b/Week_01/id_128/README.md new file mode 100644 index 00000000..53e70537 --- /dev/null +++ b/Week_01/id_128/README.md @@ -0,0 +1,43 @@ +# 第一周题目 + +## 链表 + +- 简单:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ +- 简单:https://leetcode-cn.com/problems/merge-two-sorted-lists +- 中等:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ +- 中等:https://leetcode-cn.com/problems/linked-list-cycle-ii +- 困难:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ + +## 数组 + +- 简单:https://leetcode-cn.com/problems/sort-array-by-parity/ +- 简单:https://leetcode-cn.com/problems/sort-array-by-parity-ii/ +- 中等:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/ +- 中等:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/ +- 困难:https://leetcode-cn.com/problems/search-in-rotated-sorted-array + +## 栈 + +- 简单:https://leetcode-cn.com/problems/valid-parentheses/ +- 中等:https://leetcode-cn.com/problems/next-greater-element-ii/ +- 困难:https://leetcode-cn.com/problems/maximum-frequency-stack/ + +## 递归 + +- 简单:https://leetcode-cn.com/problems/longest-univalue-path/ +- 中等:https://leetcode-cn.com/problems/partition-to-k-equal-sum-subsets/ +- 困难:https://leetcode-cn.com/problems/special-binary-string/ + +## 排序 + +- 简单:https://leetcode-cn.com/problems/valid-anagram/ +- 中等:https://leetcode-cn.com/problems/wiggle-sort-ii/ +- 困难:https://leetcode-cn.com/problems/maximum-gap/ + +二分查找 + +简单:https://leetcode-cn.com/problems/arranging-coins/ +中等:https://leetcode-cn.com/problems/powx-n/ +困难:https://leetcode-cn.com/problems/dungeon-game/ + + From 4df26a1e8008b227a8b1fed241656ccfac4fcd87 Mon Sep 17 00:00:00 2001 From: yimeng Date: Wed, 17 Apr 2019 01:10:30 +0800 Subject: [PATCH 034/780] Create README.md --- Week_01/id_128/README.md | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Week_01/id_128/README.md diff --git a/Week_01/id_128/README.md b/Week_01/id_128/README.md new file mode 100644 index 00000000..15ce494b --- /dev/null +++ b/Week_01/id_128/README.md @@ -0,0 +1,42 @@ +# 第一周题目 + +## 链表 + +- 简单:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ +- 简单:https://leetcode-cn.com/problems/merge-two-sorted-lists +- 中等:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ +- 中等:https://leetcode-cn.com/problems/linked-list-cycle-ii +- 困难:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ + +## 数组 + +- 简单:https://leetcode-cn.com/problems/sort-array-by-parity/ +- 简单:https://leetcode-cn.com/problems/sort-array-by-parity-ii/ +- 中等:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/ +- 中等:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/ +- 困难:https://leetcode-cn.com/problems/search-in-rotated-sorted-array + +## 栈 + +- 简单:https://leetcode-cn.com/problems/valid-parentheses/ +- 中等:https://leetcode-cn.com/problems/next-greater-element-ii/ +- 困难:https://leetcode-cn.com/problems/maximum-frequency-stack/ + +## 递归 + +- 简单:https://leetcode-cn.com/problems/longest-univalue-path/ +- 中等:https://leetcode-cn.com/problems/partition-to-k-equal-sum-subsets/ +- 困难:https://leetcode-cn.com/problems/special-binary-string/ + +## 排序 + +- 简单:https://leetcode-cn.com/problems/valid-anagram/ +- 中等:https://leetcode-cn.com/problems/wiggle-sort-ii/ +- 困难:https://leetcode-cn.com/problems/maximum-gap/ + + +## 二分查找 + +- 简单:https://leetcode-cn.com/problems/arranging-coins/ +- 中等:https://leetcode-cn.com/problems/powx-n/ +- 困难:https://leetcode-cn.com/problems/dungeon-game/ From fab6c0d3b8e72533d9dae91d18e433181a43c713 Mon Sep 17 00:00:00 2001 From: liyanling Date: Wed, 17 Apr 2019 03:32:22 +0800 Subject: [PATCH 035/780] update leetcode 25 solution --- ..._leetcode25-\345\233\276\347\244\272.jpeg" | Bin 0 -> 300704 bytes Week_01/id_118/LinkedList_leetcode25.java | 79 ++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 "Week_01/id_118/LinkedList_leetcode25-\345\233\276\347\244\272.jpeg" create mode 100644 Week_01/id_118/LinkedList_leetcode25.java diff --git "a/Week_01/id_118/LinkedList_leetcode25-\345\233\276\347\244\272.jpeg" "b/Week_01/id_118/LinkedList_leetcode25-\345\233\276\347\244\272.jpeg" new file mode 100644 index 0000000000000000000000000000000000000000..9b69231ac5bed62375d08d9db29b4fa228365063 GIT binary patch literal 300704 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

  • NxhfF0o%kIaR2U1gY&B=34qwWS80_ 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

    eYrbpfM{EYjpp3>__$AjD~ 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

    + /// 905. Sort Array By Parity + /// Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.You may return any answer array that satisfies this condition. + /// + public class LeetCode_905 + { + /// + /// 思路:第一个检查是否是奇数,如果是的话和最后一个交换,在进行检测是否是奇数,和倒数第二个交换,以此往后,到i=n-flag时截止 + /// + /// 260 ms 31.9MB + /// + /// + public int[] MethodFor905_1(int[] A) + { + int n = A.Length; + int temp; + int flag = 1; + + for (int i = 0; i < n ; i++) + { + if (A[i] % 2 == 1) + { + temp = A[i]; + A[i] = A[n - flag]; + A[n - flag] = temp; + + flag++; + i--; + } + if (i==n-flag) { break; } + } + return A; + } + + /// + /// 参考 + /// + /// + /// + public int[] MethodFor905_2(int[] A) + { + int l = 0; + int r = A.Length - 1; + while (l < r) + { + while (l < r && A[l] % 2 == 0) + { + l++; + } + while (l < r && A[r] % 2 == 1) + { + r--; + } + if (l < r) + { + int temp = A[l]; + A[l] = A[r]; + A[r] = temp; + } + } + return A; + } + + /// + /// 参考 + /// + /// + /// + public int[] MethodFor905_3(int[] A) + { + return A.Where(x => x % 2 == 0).Concat(A.Where(x => x % 2 != 0)).ToArray(); + } + } +} diff --git a/Week_01/id_86/LeetCode_905_086.py b/Week_01/id_86/LeetCode_905_086.py new file mode 100644 index 00000000..8dc2d523 --- /dev/null +++ b/Week_01/id_86/LeetCode_905_086.py @@ -0,0 +1,4 @@ + +class Solution(object): + def sortArrayByParity(self, A): + return [a for a in A if not a % 2] + [a for a in A if a % 2] diff --git a/Week_01/id_86/LeetCode_922_086.c b/Week_01/id_86/LeetCode_922_086.c new file mode 100644 index 00000000..a8a87d3a --- /dev/null +++ b/Week_01/id_86/LeetCode_922_086.c @@ -0,0 +1,21 @@ +int *MethodFor922_1(int const *A, int ASize, int *BSize) +{ + int o = 1; + int e = 0; + int *ret = (int *)malloc(sizeof(int) * (*BSize = ASize)); + + for (int i = 0; i < *BSize; ++i) + { + if (A[i] % 2 == 0) + { + ret[e] = A[i]; + e = e + 2; + } + else + { + ret[o] = A[i]; + o = o + 2; + } + } + return ret; +} \ No newline at end of file diff --git a/Week_01/id_86/LeetCode_922_086.cs b/Week_01/id_86/LeetCode_922_086.cs new file mode 100644 index 00000000..43d5b551 --- /dev/null +++ b/Week_01/id_86/LeetCode_922_086.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AlgorithmTest +{ + /// + /// 922. Sort Array By Parity II + /// Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.You may return any answer array that satisfies this condition. + /// + public class LeetCode_922_086 + { + /// + /// 316ms 35.4MB + /// + /// + /// + public int[] MethodFor922_1(int[] A) + { + int n = A.Length; + int[] B = new int[n]; + + int e = 0; + int o = 1; + + for (int i = 0; i < n; i++) + { + if (A[i] % 2 == 0) + { + B[e] = A[i]; + e = e + 2; + } + else + { + B[o] = A[i]; + o = o + 2; + } + } + return B; + } + } +} diff --git a/Week_01/id_86/LeetCode_922_086.py b/Week_01/id_86/LeetCode_922_086.py new file mode 100644 index 00000000..2a239c8d --- /dev/null +++ b/Week_01/id_86/LeetCode_922_086.py @@ -0,0 +1,4 @@ +class Solution: + def sortArrayByParityII(self, A): + e, o = [a for a in A if not a % 2], [a for a in A if a % 2] + return [e.pop() if not i % 2 else o.pop() for i in range(len(A))] From 19a74b28320b16fed95c701156350bd37036b306 Mon Sep 17 00:00:00 2001 From: XinRuoShi Date: Fri, 19 Apr 2019 11:30:55 +0800 Subject: [PATCH 135/780] LC 083 --- Week_01/id_86/LeetCode_083_086.c | 24 ++++++++++++++++++ Week_01/id_86/LeetCode_083_086.cs | 41 +++++++++++++++++++++++++++++++ Week_01/id_86/LeetCode_083_086.py | 14 +++++++++++ 3 files changed, 79 insertions(+) create mode 100644 Week_01/id_86/LeetCode_083_086.c create mode 100644 Week_01/id_86/LeetCode_083_086.cs create mode 100644 Week_01/id_86/LeetCode_083_086.py diff --git a/Week_01/id_86/LeetCode_083_086.c b/Week_01/id_86/LeetCode_083_086.c new file mode 100644 index 00000000..14ff68ee --- /dev/null +++ b/Week_01/id_86/LeetCode_083_086.c @@ -0,0 +1,24 @@ +//simple C + +void MethodFor083_1(struct ListNode* head) +{ + if (head == NULL) + { + return NULL; + } + struct ListNode *p, *q; + p = head; + while (p->next) + { + q = p->next; + if (p->val == q->val) + { + p->next = q->next; + } + else + { + p = q; + } + } + return head; +} \ No newline at end of file diff --git a/Week_01/id_86/LeetCode_083_086.cs b/Week_01/id_86/LeetCode_083_086.cs new file mode 100644 index 00000000..2e01c148 --- /dev/null +++ b/Week_01/id_86/LeetCode_083_086.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AlgorithmTest +{ + public class LeetCode_083_086 + { + /// + /// 92ms 23.9MB + /// + /// + /// + public ListNode MethodFor093_1(ListNode head) + { + if (head == null) + return null; + if (head.next == null) + return head; + else + { + ListNode listNode = head; + while (listNode.next != null) + { + if (listNode.next.val == listNode.val) + { + listNode.next = listNode.next.next; + } + else + { + listNode = listNode.next; + } + } + } + + return head; + } + } +} diff --git a/Week_01/id_86/LeetCode_083_086.py b/Week_01/id_86/LeetCode_083_086.py new file mode 100644 index 00000000..5590e3d9 --- /dev/null +++ b/Week_01/id_86/LeetCode_083_086.py @@ -0,0 +1,14 @@ + +class Solution(object): + def RemoveDuplicatesfromSortedList(self, head): + """ + :type head: ListNode + :rtype: ListNode + """ + cur = head + while cur and cur.next: + if cur.val == cur.next.val: + cur.next = cur.next.next + else: + cur = cur.next + return head \ No newline at end of file From 7fff72a84256c15535b9ff7d4dc4767a4d59a25e Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Fri, 19 Apr 2019 11:38:49 +0800 Subject: [PATCH 136/780] Create LeetCode_687_2.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 687. 最长同值路径 https://leetcode-cn.com/problems/longest-univalue-path/ --- Week_01/id_2/LeetCode_687_2.cs | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Week_01/id_2/LeetCode_687_2.cs diff --git a/Week_01/id_2/LeetCode_687_2.cs b/Week_01/id_2/LeetCode_687_2.cs new file mode 100644 index 00000000..c0d6ff69 --- /dev/null +++ b/Week_01/id_2/LeetCode_687_2.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode +{ + public class 最长同值路径 + { + public class TreeNode + { + public int val; + public TreeNode left; + public TreeNode right; + public TreeNode(int x) { val = x; } + } + + int max = 0; + + public int LongestUnivaluePath(TreeNode root) + { + F(root); + return max; + } + + int F(TreeNode root) + { + if (root == null) + { + return 0; + } + + int left = F(root.left); + int right = F(root.right); + if (root.val == root?.left?.val) + { + left++; + } + else + { + left = 0; + } + + if (root.val == root?.right?.val) + { + right++; + } + else + { + right = 0; + } + + max = Math.Max(left + right, max); + return Math.Max(left, right); + } + } +} From 20e0c266c5f0b9f428a510201c2baa8fa8d28f02 Mon Sep 17 00:00:00 2001 From: yuqiu <41912446@qq.com> Date: Fri, 19 Apr 2019 11:47:52 +0800 Subject: [PATCH 137/780] 01_503_next-greater-element-ii --- Week_01/id_6/LeetCode_503_6.java | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Week_01/id_6/LeetCode_503_6.java diff --git a/Week_01/id_6/LeetCode_503_6.java b/Week_01/id_6/LeetCode_503_6.java new file mode 100644 index 00000000..f78b59d8 --- /dev/null +++ b/Week_01/id_6/LeetCode_503_6.java @@ -0,0 +1,75 @@ + + + + // LeetCode 503 + // 遍历数组,每个数都和其后面的数据比较,直到循环回到自己的位置 + // 100, 1, 11, 1, 110, 109 + // 当前值 小 小 小 大 + // 那么[当前值 -> 110] 之间的数据,都应该用110替换。 + // 可以用栈来暂存这些数据。栈空表明区间内的所有数据都替换完成 + + // 由于我们是替换数据,所以栈中存的应该是元素的索引值 + + // 取一个元素,如果该元素比栈顶元素小,直接压栈 + // 如果比栈顶元素大,则开始替换栈中元素。最后将该元素压栈 + public int[] nextGreaterElements2(int[] nums) { + Stack stack = new Stack<>(); + int len = nums.length; + int[] rst = new int[len]; + Arrays.fill(rst, -1); + + // 由于是循环数组,遍历时长度取2*len + // 长度超过len时,不再入栈 + for (int i = 0; i < 2 * len; i++) { + int ii = i % len; + // 出栈条件判断 + while (!stack.isEmpty() && nums[ii] > nums[stack.peek()]) { + rst[stack.pop()] = nums[ii]; + } + + // 入栈条件判断 + // 由于当前元素可能导致出栈操作,所以要等出栈完成后,再做入栈判断 + if (i < len){ + stack.push(ii); + } + } + + return rst; + } + + + public int[] nextGreaterElements(int[] nums) { + Stack stack = new Stack<>(); + int len = nums.length; + int[] rst = new int[len]; + Arrays.fill(rst, -1); + + // 由于是循环数组,遍历时长度取2*len + for (int i = 0; i < 2 * len; i++) { + int ii = i % len; + // 出栈条件判断 + if (!stack.isEmpty() && nums[ii] > nums[stack.peek()]) { + while (!stack.isEmpty()) { + // 当前值不再大于栈顶值结束出栈 + if (nums[ii] <= nums[stack.peek()]){ + break; + } + rst[stack.pop()] = nums[ii]; + } + } + // 入栈条件判断 + // 由于当前元素可能导致出栈操作,所以要等出栈完成后,再做入栈判断 + if (i < len && stack.isEmpty()) { + stack.push(ii); + continue; + } + if (!stack.isEmpty() && nums[ii] <= nums[stack.peek()]) { + if (i < len) { + stack.push(ii); + } + } + + } + + return rst; + } \ No newline at end of file From 4b53f300139e66ba7072286fce91078041dffeba Mon Sep 17 00:00:00 2001 From: HanFeng Date: Fri, 19 Apr 2019 12:24:10 +0800 Subject: [PATCH 138/780] week_01&441 --- Week_01/id_71/LeetCode_441_71.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Week_01/id_71/LeetCode_441_71.js diff --git a/Week_01/id_71/LeetCode_441_71.js b/Week_01/id_71/LeetCode_441_71.js new file mode 100644 index 00000000..df559bb8 --- /dev/null +++ b/Week_01/id_71/LeetCode_441_71.js @@ -0,0 +1,16 @@ +/** + * @param {number} n + * @return {number} + */ +var arrangeCoins = function (n) { + if (n === 0) { + return 0 + } + let temp = n + for (let i = 1; i <= n; i++) { + temp = temp - i + if (temp === 0 || temp < i + 1) { + return i + } + } +}; \ No newline at end of file From bea1461c98d3ff2adc78f2adef6d8c9585e4056c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=BD=AC?= Date: Fri, 19 Apr 2019 13:19:17 +0800 Subject: [PATCH 139/780] Create LeetCode_83_100.java add leetcode #83 --- Week_01/id_100/LeetCode_83_100.java | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Week_01/id_100/LeetCode_83_100.java diff --git a/Week_01/id_100/LeetCode_83_100.java b/Week_01/id_100/LeetCode_83_100.java new file mode 100644 index 00000000..179b3557 --- /dev/null +++ b/Week_01/id_100/LeetCode_83_100.java @@ -0,0 +1,28 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + ListNode pre = head; + ListNode pre_next = pre.next; + if(pre == null || pre_next == null){ + return head; + } + while(pre_next != null){ + if(pre.val == pre_next.val){ + pre_next = pre_next.next; + pre = pre_next; + }else{ + pre = pre_next; + pre_next = pre_next.next; + } + } + return head; + + } +} From ecb85cd75ad3f0881238ae7868848727cb3a912f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=88=88?= Date: Wed, 17 Apr 2019 23:48:27 +0800 Subject: [PATCH 140/780] Create Longest Univalue Path --- Week_01/id_24/Longest_Univalue_Path.rb | 33 ++++++++++++++ Week_01/id_24/NOTE.md | 23 +++++++++- .../Remove Duplicates from Sorted List.rb | 28 ++++++++++++ Week_01/id_24/valid _anagram.rb | 44 ------------------- Week_01/id_24/valid_anagram.rb | 40 +++++++++++++++++ 5 files changed, 123 insertions(+), 45 deletions(-) create mode 100644 Week_01/id_24/Longest_Univalue_Path.rb create mode 100644 Week_01/id_24/Remove Duplicates from Sorted List.rb delete mode 100644 Week_01/id_24/valid _anagram.rb create mode 100644 Week_01/id_24/valid_anagram.rb diff --git a/Week_01/id_24/Longest_Univalue_Path.rb b/Week_01/id_24/Longest_Univalue_Path.rb new file mode 100644 index 00000000..8856c55d --- /dev/null +++ b/Week_01/id_24/Longest_Univalue_Path.rb @@ -0,0 +1,33 @@ +# Definition for a binary tree node. +# class TreeNode +# attr_accessor :val, :left, :right +# def initialize(val) +# @val = val +# @left, @right = nil, nil +# end +# end + +# @param {TreeNode} root +# @return {Integer} +def longest_univalue_path(root) + path_length = 0 + + get_path_length(root) + + return path_length +end + +def get_path_length(root) + return 0 if root.nil? + left_path_length = get_path_length(root.left) + right_path_length = get_path_length(root.right) + left_length, right_length = 0, 0 + + if !root.left.nil? && root.left.val == root.val + left_length = left_path_length + 1 + elsif !root.right.nil? && root.right.val == root.val + right_length = right_path_length + 1 + end + path_length = [path_length, (left_length + right_length)].max + return [left_length, right_length].max +end diff --git a/Week_01/id_24/NOTE.md b/Week_01/id_24/NOTE.md index c684e62f..4adb8d6b 100644 --- a/Week_01/id_24/NOTE.md +++ b/Week_01/id_24/NOTE.md @@ -1 +1,22 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 + +242.有效字母异位词 +首先需要确定题目的描述有效字母异位词的含义 +刚开始结合例子的理解是字母按顺序交换,1和2换位,3和4换位,依次类推 +在这个思路下想的是首先我遍历原串按照次序存储字母,遍历目标串依次交换对比刚才的存储顺序。 +后来看评论才理解,易位词指的是相同数量和种类的字母的不同排列,次序不一定是1和2互换,3和4互换,相对来说更简单了,所以我们理解题目 +含义很重要,需要先理解题目在去做题。 +下面是思路: +1.首先遍历原串s, 把字母存到哈希表source_hash里面,key是字母,value是出现次数 +2.遍历目标串t,依次查寻目标串的字母是否出现在source_hash中,如果没出现直接返回false,如果找到了,将其对应的值将其减一,清楚哈希表中值为空的数据 +3.遍历完成之后,检查source_hash是否为空,为空说明字符种类和数量一致返回true,不为空返回false。 +优化 +将哈希表转化为数组,字母的ascll码做下标,出现字数作为数组元素,进一步优化。 + +83. 删除排序链表中的重复元素 +该问题比较简单,因为链表已经排序,只需要顺序检查next节点的值是否等于当前节点的值,如果相等,删除next节点,移动指针到next节点的next节点,需要注意的问题是注意链表的边界条件,头结点和尾节点的问题。 +看到一个好的方法是使用递归的方案去解决删除重复节点的思路。 + +687. 最长同值路径 +该问题想到用递归去求解,但是实际递归代码实现有问题,还需要进一步优化。 + diff --git a/Week_01/id_24/Remove Duplicates from Sorted List.rb b/Week_01/id_24/Remove Duplicates from Sorted List.rb new file mode 100644 index 00000000..4e941de4 --- /dev/null +++ b/Week_01/id_24/Remove Duplicates from Sorted List.rb @@ -0,0 +1,28 @@ +# 递归删除 +def delete_duplicates(head) + if head.nil? || head.next.nil? + return head + end + + head.next = delete_duplicates(head.next) + if head.val == head.next.val + head = head.next + end + return head +end +# 常规思路 +# 注意边界条件 +def delete_duplicates(head) + if head.nil? || head.next.nil? + return head + end + current = head + while !current.nil? && !current.next.nil? do + if current.val == current.next.val + current.next = current.next.next + else + current = current.next + end + end + return head +end diff --git a/Week_01/id_24/valid _anagram.rb b/Week_01/id_24/valid _anagram.rb deleted file mode 100644 index 8221d0cf..00000000 --- a/Week_01/id_24/valid _anagram.rb +++ /dev/null @@ -1,44 +0,0 @@ -# @param {String} s -# @param {String} t -# @return {Boolean} - -# 解法一 -def is_anagram(s, t) - source_hash = {} - s.each_char { |s| - if source_hash[s] - source_hash[s] += 1 - else - source_hash[s] = 1 - end - } - t.each_char { |t| - return false unless source_hash.keys.include? t - source_hash[t] -= 1 - source_hash.delete_if {|_, value| value == 0 } - } - return true if source_hash.empty? - return false -end -#解法二 -def is_anagram(s, t) - x = Array.new(26, 0) - for i in 0..s.length-1 do - value = s[i].ord - 97 - x[value] ? x[value] += 1 : x[value] = 0 - end - for j in 0..t.length-1 do - value = t[j].ord - 97 - return false if x[value] == 0 - x[value] -= 1 - end - return true if x.sum == 0 - return false -end - -# 解法三 -def is_anagram(s, t) - s_sort = s.split("").sort - t_sort = t.split("").sort - s_sort == t_sort -end diff --git a/Week_01/id_24/valid_anagram.rb b/Week_01/id_24/valid_anagram.rb new file mode 100644 index 00000000..4a66d52d --- /dev/null +++ b/Week_01/id_24/valid_anagram.rb @@ -0,0 +1,40 @@ +# 解法一 +def is_anagram(s, t) + source_hash = {} + s.each_char { |s| + if source_hash[s] + source_hash[s] += 1 + else + source_hash[s] = 1 + end + } + t.each_char { |t| + return false unless source_hash.keys.include? t + source_hash[t] -= 1 + source_hash.delete_if {|_, value| value == 0 } + } + return true if source_hash.empty? + return false +end +#解法二 +def is_anagram(s, t) + x = Array.new(26, 0) + for i in 0..s.length-1 do + value = s[i].ord - 97 + x[value] ? x[value] += 1 : x[value] = 0 + end + for j in 0..t.length-1 do + value = t[j].ord - 97 + return false if x[value] == 0 + x[value] -= 1 + end + return true if x.sum == 0 + return false +end + +# 解法三 +def is_anagram(s, t) + s_sort = s.split("").sort + t_sort = t.split("").sort + s_sort == t_sort +end From 388a316710b59f1985db1938e56cefba11d882d8 Mon Sep 17 00:00:00 2001 From: lige Date: Fri, 19 Apr 2019 14:10:35 +0800 Subject: [PATCH 141/780] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_24/leet_code.md | 89 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Week_01/id_24/leet_code.md diff --git a/Week_01/id_24/leet_code.md b/Week_01/id_24/leet_code.md new file mode 100644 index 00000000..9f17a78d --- /dev/null +++ b/Week_01/id_24/leet_code.md @@ -0,0 +1,89 @@ +### LeetCode + 题目: [83. Remove Duplicates from Sorted List](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/) + + 解题: + +```ruby +# 常规思路 +# 注意边界条件 +def delete_duplicates(head) + if head.nil? || head.next.nil? + return head + end + current = head + while !current.nil? && !current.next.nil? do + if current.val == current.next.val + current.next = current.next.next + else + current = current.next + end + end + return head +end + +# 递归删除 +def delete_duplicates(head) + if head.nil? || head.next.nil? + return head + end + + head.next = delete_duplicates(head.next) + if head.val == head.next.val + head = head.next + end + return head +end +``` + +### LeetCode + 题目: [242. Valid Anagram](https://leetcode-cn.com/problems/valid-anagram/) + + 解题: + 1.常规思路遍历字符串S,存储到哈希表中,遍历字符串t,依次查找哈希表中是否有该字母元素, + 哈希表中元素值为0时,删除该元素,最后判读哈希表是否为空 + 2.优化思路,不使用编程语言自己的哈希表,使用自己构建的数组存储字母元素,优化执行效率 + 3.看到别人的解法觉得很好,把两个字符串进行排列,比较两个字符串是否相同 + +```ruby +# 解法一 +def is_anagram(s, t) + source_hash = {} + s.each_char { |s| + if source_hash[s] + source_hash[s] += 1 + else + source_hash[s] = 1 + end + } + t.each_char { |t| + return false unless source_hash.keys.include? t + source_hash[t] -= 1 + source_hash.delete_if {|_, value| value == 0 } + } + return true if source_hash.empty? + return false +end + +#解法二 +def is_anagram(s, t) + x = Array.new(26, 0) + for i in 0..s.length-1 do + value = s[i].ord - 97 + x[value] ? x[value] += 1 : x[value] = 0 + end + for j in 0..t.length-1 do + value = t[j].ord - 97 + return false if x[value] == 0 + x[value] -= 1 + end + return true if x.sum == 0 + return false +end + +# 解法三 +def is_anagram(s, t) + s_sort = s.split("").sort + t_sort = t.split("").sort + s_sort == t_sort +end +``` From c66fdf539973c1769fb6d21298d8c1ec81d97d37 Mon Sep 17 00:00:00 2001 From: CRGT_Ghcoder Date: Fri, 19 Apr 2019 14:36:05 +0800 Subject: [PATCH 142/780] leetcode:153/20/242/324/33/81 --- Week_01/id_31/LeetCode_153_031.swift | 21 ++++++++ Week_01/id_31/LeetCode_20_031.swift | 23 ++++++++ Week_01/id_31/LeetCode_242_031.swift | 36 +++++++++++++ Week_01/id_31/LeetCode_324_031.swift | 81 ++++++++++++++++++++++++++++ Week_01/id_31/LeetCode_33_031.swift | 65 ++++++++++++++++++++++ Week_01/id_31/LeetCode_81_031.swift | 15 ++++++ 6 files changed, 241 insertions(+) create mode 100644 Week_01/id_31/LeetCode_153_031.swift create mode 100644 Week_01/id_31/LeetCode_20_031.swift create mode 100644 Week_01/id_31/LeetCode_242_031.swift create mode 100644 Week_01/id_31/LeetCode_324_031.swift create mode 100644 Week_01/id_31/LeetCode_33_031.swift create mode 100644 Week_01/id_31/LeetCode_81_031.swift diff --git a/Week_01/id_31/LeetCode_153_031.swift b/Week_01/id_31/LeetCode_153_031.swift new file mode 100644 index 00000000..dc42dada --- /dev/null +++ b/Week_01/id_31/LeetCode_153_031.swift @@ -0,0 +1,21 @@ +// +// LeetCode_153_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/15. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +// 时间复杂度 O(n) +class Solution { + func findMin(_ nums: [Int]) -> Int { + guard nums.count > 0 else { return -1 } + if var result = nums.first { + _ = nums.map { result = min(result, $0) } + return result + } + return -1 + } +} diff --git a/Week_01/id_31/LeetCode_20_031.swift b/Week_01/id_31/LeetCode_20_031.swift new file mode 100644 index 00000000..38064abd --- /dev/null +++ b/Week_01/id_31/LeetCode_20_031.swift @@ -0,0 +1,23 @@ +// +// LeetCode_20_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/16. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + var stack: [Character] = [] + func isValid(_ s: String) -> Bool { + _ = s.map { + if let lastChar = stack.last, ((lastChar == "{" && $0 == "}") || (lastChar == "(" && $0 == ")") || (lastChar == "[" && $0 == "]")) { + stack.removeLast() + } else { + stack.append($0) + } + } + return stack.isEmpty + } +} diff --git a/Week_01/id_31/LeetCode_242_031.swift b/Week_01/id_31/LeetCode_242_031.swift new file mode 100644 index 00000000..1f237787 --- /dev/null +++ b/Week_01/id_31/LeetCode_242_031.swift @@ -0,0 +1,36 @@ +// +// LeetCode_242_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/18. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + func isAnagram(_ s: String, _ t: String) -> Bool { + if (s.count != t.count) { return false } + var collect: [Character: Int] = [:] + for sChar in s { + if collect.keys.contains(sChar), var sValue = collect[sChar] { + sValue += 1 + collect[sChar] = sValue + } else { + collect[sChar] = 1 + } + } + + for tChar in t { + if collect.keys.contains(tChar), var tValue = collect[tChar], tValue > 0 { + tValue -= 1 + if (tValue == 0) { + collect.removeValue(forKey: tChar) + } else { + collect[tChar] = tValue + } + } + } + return collect.isEmpty + } +} diff --git a/Week_01/id_31/LeetCode_324_031.swift b/Week_01/id_31/LeetCode_324_031.swift new file mode 100644 index 00000000..4183d118 --- /dev/null +++ b/Week_01/id_31/LeetCode_324_031.swift @@ -0,0 +1,81 @@ +// +// LeetCode_324_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/19. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + func wiggleSort(_ nums: inout [Int]) { + qSort(0, nums.count - 1, &nums) + createWiggle(&nums) + } + + private func createWiggle(_ nums: inout [Int], _ fromLeft: Bool = true) { + var data: [Int] = [] + var from = 0 + var to = nums.count - 1 + var mid = (from + to) / 2 + if fromLeft { + for _ in from...mid { + if (from < nums.count) { + if data.count > 0, let last = data.last, nums[from] >= last { + return createWiggle(&nums, false) + } + data.append(nums[from]) + from += 1 + } + if (mid + 1 < nums.count) { + if data.count > 0, let last = data.last, nums[mid+1] <= last { + return createWiggle(&nums, false) + } + data.append(nums[mid + 1]) + mid += 1 + } + } + } else { + let mIndex = mid + for _ in mid...to { + if (mid >= 0) { + data.append(nums[mid]) + mid -= 1 + } + if (to > mIndex) { + data.append(nums[to]) + to -= 1 + } + } + } + nums = data + } + + private func qSort(_ from: Int, _ to: Int, _ nums: inout [Int]) { + if from < to { + let mid = findPartition(from, to, &nums) + qSort(from, mid - 1, &nums) + qSort(mid + 1, to, &nums) + } + } + + private func findPartition(_ from: Int, _ to: Int, _ nums: inout [Int]) -> Int { + let indexNumber = nums[from] + var from = from + var to = to + while from < to { + while nums[to] >= indexNumber && from < to { + to -= 1 + } + nums[from] = nums[to] + + while nums[from] <= indexNumber && from < to { + from += 1 + } + nums[to] = nums[from] + } + nums[from] = indexNumber + return from + } +} diff --git a/Week_01/id_31/LeetCode_33_031.swift b/Week_01/id_31/LeetCode_33_031.swift new file mode 100644 index 00000000..ca9b0140 --- /dev/null +++ b/Week_01/id_31/LeetCode_33_031.swift @@ -0,0 +1,65 @@ +// +// LeetCode_33_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/18. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + var temp: [Int: Int] = [:] + func search(_ nums: [Int], _ target: Int) -> Int { + var nums = nums + if (nums.isEmpty) { return -1 } + for i in 0...nums.count - 1 { temp[nums[i]] = i } + qSort(0, nums.count - 1, &nums) + return binaryFind(nums, target, 0, nums.count - 1) + } + + private func binaryFind(_ nums: [Int], _ target: Int, _ from: Int, _ to: Int) -> Int { + if (from > to) { return -1 } + var from = from + var to = to + let mid = (from + to) / 2 + if nums[mid] == target { + if let v = temp[nums[mid]] { return v } + return -1 + } else if nums[mid] > target { + to = mid - 1 + return binaryFind(nums, target, from, to) + } else { + from = mid + 1 + return binaryFind(nums, target, from, to) + } + } + + private func qSort(_ from: Int, _ to: Int, _ nums: inout [Int]) { + if from < to { + let findPartition = partition(from, to, &nums) + qSort(from, findPartition - 1, &nums) + qSort(findPartition + 1, to, &nums) + } + } + + + private func partition(_ from: Int, _ to: Int, _ nums: inout [Int]) -> Int { + let indexNumber = nums[from] + var i = from + var j = to + while i < j { + while nums[j] >= indexNumber && i < j { + j -= 1 + } + nums[i] = nums[j] + + while nums[i] <= indexNumber && i < j { + i += 1 + } + nums[j] = nums[i] + } + nums[i] = indexNumber + return i + } +} diff --git a/Week_01/id_31/LeetCode_81_031.swift b/Week_01/id_31/LeetCode_81_031.swift new file mode 100644 index 00000000..600b99c0 --- /dev/null +++ b/Week_01/id_31/LeetCode_81_031.swift @@ -0,0 +1,15 @@ +// +// LeetCode_81_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/15. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + func search(_ nums: [Int], _ target: Int) -> Bool { + return nums.contains(target) + } +} From 725c385b1eb944b4db606693af3591e4b2b270d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E8=8D=A3=E8=BE=89?= Date: Fri, 19 Apr 2019 15:02:34 +0800 Subject: [PATCH 143/780] =?UTF-8?q?=E7=AC=AC21=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_65/LeetCode_21_065.java | 92 ++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 Week_01/id_65/LeetCode_21_065.java diff --git a/Week_01/id_65/LeetCode_21_065.java b/Week_01/id_65/LeetCode_21_065.java new file mode 100644 index 00000000..ac03456c --- /dev/null +++ b/Week_01/id_65/LeetCode_21_065.java @@ -0,0 +1,92 @@ +package com.imooc.activiti.helloworld; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * @author shironghui on 2019/4/18. + */ +class SolutionMerge { + public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { + ListNode newListNode = new ListNode(0); + ListNode cur = newListNode; + while (l1 != null && l2 != null) { + if (l1.val < l2.val) { + cur.next = l1; + cur = cur.next; + l1 = l1.next; + } else { + cur.next = l2; + cur = cur.next; + l2 = l2.next; + } + } + if (l1 == null) { + cur.next = l2; + } else { + cur.next = l1; + } + return newListNode.next; + } +} +public class TestMerge { + public static int[] stringToIntegerArray(String input) { + input = input.trim(); + input = input.substring(1, input.length() - 1); + if (input.length() == 0) { + return new int[0]; + } + + String[] parts = input.split(","); + int[] output = new int[parts.length]; + for(int index = 0; index < parts.length; index++) { + String part = parts[index].trim(); + output[index] = Integer.parseInt(part); + } + return output; + } + + public static ListNode stringToListNode(String input) { + // Generate array from the input + int[] nodeValues = stringToIntegerArray(input); + + // Now convert that list into linked list + ListNode dummyRoot = new ListNode(0); + ListNode ptr = dummyRoot; + for(int item : nodeValues) { + ptr.next = new ListNode(item); + ptr = ptr.next; + } + return dummyRoot.next; + } + + public static String listNodeToString(ListNode node) { + if (node == null) { + return "[]"; + } + + String result = ""; + while (node != null) { + result += Integer.toString(node.val) + ", "; + node = node.next; + } + return "[" + result.substring(0, result.length() - 2) + "]"; + } + + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + String line; + while ((line = in.readLine()) != null) { + ListNode l1 = stringToListNode(line); + line = in.readLine(); + ListNode l2 = stringToListNode(line); + + ListNode ret = SolutionMerge.mergeTwoLists(l1, l2); + + String out = listNodeToString(ret); + + System.out.print(out); + } + } +} From 847bc358a12733e7f79bd8b7eda4dd693ca457da Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Fri, 19 Apr 2019 15:11:07 +0800 Subject: [PATCH 144/780] Create LeetCode_242_2.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 242. 有效的字母异位词 https://leetcode-cn.com/problems/valid-anagram/submissions/ --- Week_01/id_2/LeetCode_242_2.cs | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Week_01/id_2/LeetCode_242_2.cs diff --git a/Week_01/id_2/LeetCode_242_2.cs b/Week_01/id_2/LeetCode_242_2.cs new file mode 100644 index 00000000..7aa1f7cb --- /dev/null +++ b/Week_01/id_2/LeetCode_242_2.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode +{ + class _242_有效的字母异位词 + { + public bool IsAnagram(string s, string t) + { + if ((s == string.Empty && t == string.Empty) || s == t) + { + return true; + } + + int[] a = new int[26]; + for (int i = 0; i < s.Length; i++) + { + a[s[i] - 'a']++; + } + + for (int i = 0; i < t.Length; i++) + { + a[t[i] - 'a']--; + } + + for (int i = 0; i < a.Length; i++) + { + if (a[i] != 0) + { + return false; + } + } + + return true; + } + } +} From 3cb623977130fb9c29cb08a7ca1ff5144958dedd Mon Sep 17 00:00:00 2001 From: Yimeng Chen Date: Fri, 19 Apr 2019 15:13:55 +0800 Subject: [PATCH 145/780] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=B8=A4=E9=81=93?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=EF=BC=8C"=E5=8F=82=E8=80=83"=E4=BA=86?= =?UTF-8?q?=E4=B8=8B=E8=AE=A8=E8=AE=BA=E5=8C=BA=E7=9A=84=E7=AD=94=E6=A1=88?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_128/21.go | 24 ++++++++++++++++++++++++ Week_01/id_128/905.go | 10 ++++++++++ Week_01/id_128/NOTE.md | 5 ++++- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_128/21.go create mode 100644 Week_01/id_128/905.go diff --git a/Week_01/id_128/21.go b/Week_01/id_128/21.go new file mode 100644 index 00000000..273eb60e --- /dev/null +++ b/Week_01/id_128/21.go @@ -0,0 +1,24 @@ +/** + * Definition for singly-linked list. + * type ListNode struct { + * Val int + * Next *ListNode + * } + */ +func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { +if l1 == nil{ +return l2 +} +if l2 == nil{ +return l1 +} +var res *ListNode +if l1.Val >= l2.Val{ +res = l2 +res.Next = mergeTwoLists(l1, l2.Next) +}else{ +res = l1 +res.Next = mergeTwoLists(l1.Next, l2) +} +return res +} diff --git a/Week_01/id_128/905.go b/Week_01/id_128/905.go new file mode 100644 index 00000000..df0e3cc0 --- /dev/null +++ b/Week_01/id_128/905.go @@ -0,0 +1,10 @@ +func sortArrayByParity(A []int) []int { + i := 0 + for j:=0;j Date: Fri, 19 Apr 2019 15:19:55 +0800 Subject: [PATCH 146/780] delete --- .idea/algorithm.iml | 8 ++++++++ .idea/misc.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ 4 files changed, 28 insertions(+) create mode 100644 .idea/algorithm.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/algorithm.iml b/.idea/algorithm.iml new file mode 100644 index 00000000..c956989b --- /dev/null +++ b/.idea/algorithm.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..28a804d8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..2ba6d76a --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 37f5df353de3fd871a8742353eae9089205bbf39 Mon Sep 17 00:00:00 2001 From: Yimeng Chen Date: Fri, 19 Apr 2019 15:20:59 +0800 Subject: [PATCH 147/780] delete --- .idea/algorithm.iml | 8 -------- .idea/misc.xml | 6 ------ .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 4 files changed, 28 deletions(-) delete mode 100644 .idea/algorithm.iml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/algorithm.iml b/.idea/algorithm.iml deleted file mode 100644 index c956989b..00000000 --- a/.idea/algorithm.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 28a804d8..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 2ba6d76a..00000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7f..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 9db63c84484da00975713941d953dbc4a9c188c3 Mon Sep 17 00:00:00 2001 From: oxcz Date: Fri, 19 Apr 2019 15:50:39 +0800 Subject: [PATCH 148/780] first week --- Week_01/id_135/LeetCode_81_135.java | 9 +++++++++ Week_01/id_135/LeetCode_905_135.java | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 Week_01/id_135/LeetCode_81_135.java create mode 100644 Week_01/id_135/LeetCode_905_135.java diff --git a/Week_01/id_135/LeetCode_81_135.java b/Week_01/id_135/LeetCode_81_135.java new file mode 100644 index 00000000..61ac5c01 --- /dev/null +++ b/Week_01/id_135/LeetCode_81_135.java @@ -0,0 +1,9 @@ +class Solution { + public boolean search(int[] nums, int target) { + for(int i = 0; i < nums.length; i++){ + if(nums[i] == target) + return true; + } + return false; + } +} \ No newline at end of file diff --git a/Week_01/id_135/LeetCode_905_135.java b/Week_01/id_135/LeetCode_905_135.java new file mode 100644 index 00000000..f9eff27e --- /dev/null +++ b/Week_01/id_135/LeetCode_905_135.java @@ -0,0 +1,17 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + if(A == null || A.length == 1) + return A; + int x = 0; + int y = A.length - 1; + int[] res = new int[A.length]; + for(int i = 0; i < A.length; i++){ + if(A[i] % 2 == 0){ + res[x++] = A[i]; + }else{ + res[y--] = A[i]; + } + } + return res; + } +} \ No newline at end of file From d2063a8d6a324f9ac06d27c655345c03a0689f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E8=8D=A3=E8=BE=89?= Date: Fri, 19 Apr 2019 16:19:27 +0800 Subject: [PATCH 149/780] =?UTF-8?q?=E7=AC=AC905=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_65/LeetCode_905_065.java | 85 +++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Week_01/id_65/LeetCode_905_065.java diff --git a/Week_01/id_65/LeetCode_905_065.java b/Week_01/id_65/LeetCode_905_065.java new file mode 100644 index 00000000..67223bc8 --- /dev/null +++ b/Week_01/id_65/LeetCode_905_065.java @@ -0,0 +1,85 @@ +package com.imooc.activiti.helloworld; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * @author shironghui on 2019/4/18. + */ + + +class Solution3 { + public static int[] sortArrayByParity(int[] A) { + int length=A.length; + int[] B=new int[length]; + int[] C=new int[length]; + int j=0; + int l=0; + for(int i=0;i Date: Fri, 19 Apr 2019 16:21:01 +0800 Subject: [PATCH 150/780] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_126/LeetCode_24_126.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Week_01/id_126/LeetCode_24_126.java diff --git a/Week_01/id_126/LeetCode_24_126.java b/Week_01/id_126/LeetCode_24_126.java new file mode 100644 index 00000000..af9fbd4e --- /dev/null +++ b/Week_01/id_126/LeetCode_24_126.java @@ -0,0 +1,27 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode swapPairs(ListNode head) { + //判断当前值和下一个值是否为空 + //不为空 交换 + //为空 不动 + + if(head==null||head.next==null){ + return head; + } + + ListNode listNode=new ListNode(0); + listNode.val=head.val; + listNode.next=swapPairs(head.next.next); + head=head.next; + head.next=listNode; + return head; + + } +} \ No newline at end of file From 784bdda0d446551206195ce2b3e89601d40fe6c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E8=8D=A3=E8=BE=89?= Date: Fri, 19 Apr 2019 16:47:18 +0800 Subject: [PATCH 151/780] =?UTF-8?q?=E7=AC=AC922=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_65/LeetCode_922_065.java | 93 +++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 Week_01/id_65/LeetCode_922_065.java diff --git a/Week_01/id_65/LeetCode_922_065.java b/Week_01/id_65/LeetCode_922_065.java new file mode 100644 index 00000000..95300c48 --- /dev/null +++ b/Week_01/id_65/LeetCode_922_065.java @@ -0,0 +1,93 @@ +package com.imooc.activiti.helloworld; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * @author shironghui on 2019/4/18. + */ + + +class Solution4 { + public static int[] sortArrayByParity2(int[] A) { + int length=A.length; + int[] B=new int[length/2]; + int[] C=new int[length/2]; + int[] D=new int[length]; + int j=0; + int l=0; + int f=0; + int g=0; + for(int i=0;i Date: Fri, 19 Apr 2019 17:58:24 +0800 Subject: [PATCH 152/780] Create leetcode_687_118.java --- Week_01/id_118/leetcode_687_118.java | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Week_01/id_118/leetcode_687_118.java diff --git a/Week_01/id_118/leetcode_687_118.java b/Week_01/id_118/leetcode_687_118.java new file mode 100644 index 00000000..92c75f44 --- /dev/null +++ b/Week_01/id_118/leetcode_687_118.java @@ -0,0 +1,43 @@ +/** + * https://leetcode-cn.com/problems/longest-univalue-path/ + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +class Solution { + + int result; + + public int longestUnivaluePath(TreeNode root) { + result = 0; + longestUnivaluePathByRoot(root); + return result; + } + + + // 从 root 向下的最长同值路径。 + public int longestUnivaluePathByRoot(TreeNode root){ + if(null==root){ + return 0; + } + + int left = longestUnivaluePathByRoot(root.left); + int right = longestUnivaluePathByRoot(root.right); + int arrowLeft = 0, arrowRight = 0; + + if(root.left!=null && root.left.val==root.val){ + arrowLeft += left + 1; + } + if(root.right!=null && root.right.val==root.val){ + arrowRight += right + 1; + } + + result = Math.max(result, arrowLeft + arrowRight); + return arrowLeft+arrowRight; + } + +} From 6d4de8196fc24c2d226697ce572f1531e665e778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E8=8D=A3=E8=BE=89?= Date: Fri, 19 Apr 2019 19:06:56 +0800 Subject: [PATCH 153/780] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=AC=E5=8F=B7?= =?UTF-8?q?=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_65/LeetCode_922_065.java | 52 +++++++++++++---------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/Week_01/id_65/LeetCode_922_065.java b/Week_01/id_65/LeetCode_922_065.java index 95300c48..a3ea5915 100644 --- a/Week_01/id_65/LeetCode_922_065.java +++ b/Week_01/id_65/LeetCode_922_065.java @@ -3,47 +3,43 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Stack; /** * @author shironghui on 2019/4/18. */ -class Solution4 { - public static int[] sortArrayByParity2(int[] A) { - int length=A.length; - int[] B=new int[length/2]; - int[] C=new int[length/2]; - int[] D=new int[length]; - int j=0; - int l=0; - int f=0; - int g=0; - for(int i=0;i mappings; + //Initialize hash map with mappings.this simply makes the code easier to read. + public Solution6(){ + this.mappings=new HashMap(); + this.mappings.put(')','('); + this.mappings.put('}','{'); + this.mappings.put(']','['); + } + public boolean isValid(String s){ + Stack stack=new Stack<>(); + for(int i=0;i Date: Fri, 19 Apr 2019 19:38:30 +0800 Subject: [PATCH 154/780] Add first task --- Week_01/id_117/LeetCode_21_117.md | 34 +++++++++++++++++++++++++++++++ Week_01/id_117/LeetCode_83_117.md | 31 ++++++++++++++++++++++++++++ Week_01/id_117/NOTE.md | 10 ++++++++- 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_117/LeetCode_21_117.md create mode 100644 Week_01/id_117/LeetCode_83_117.md diff --git a/Week_01/id_117/LeetCode_21_117.md b/Week_01/id_117/LeetCode_21_117.md new file mode 100644 index 00000000..98dceace --- /dev/null +++ b/Week_01/id_117/LeetCode_21_117.md @@ -0,0 +1,34 @@ +```go +/** + * Definition for singly-linked list. + * type ListNode struct { + * Val int + * Next *ListNode + * } + */ +func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { + res := &ListNode{} + cur := res + for l1 != nil || l2 != nil { + if l1 == nil { + cur.Next = l2 + l2 = nil + continue + } + if l2 == nil { + cur.Next = l1 + l1 = nil + continue + } + + if l1.Val > l2.Val { + cur.Next = l2 + cur, l2 = cur.Next, l2.Next + } else { + cur.Next = l1 + cur, l1 = cur.Next, l1.Next + } + } + return res.Next +} +``` diff --git a/Week_01/id_117/LeetCode_83_117.md b/Week_01/id_117/LeetCode_83_117.md new file mode 100644 index 00000000..f1b1a95c --- /dev/null +++ b/Week_01/id_117/LeetCode_83_117.md @@ -0,0 +1,31 @@ +```go +/** + * Definition for singly-linked list. + * type ListNode struct { + * Val int + * Next *ListNode + * } + */ +func deleteDuplicates(head *ListNode) *ListNode { + if head==nil{ + return head + } + if head.Next==nil{ + return head + } + p:=head + q:=p.Next + for q!=nil{ + if p.Val==q.Val{ + p.Next=q.Next + q=p.Next + continue + } + p=p.Next + q=p.Next + + } + return head +} + +``` diff --git a/Week_01/id_117/NOTE.md b/Week_01/id_117/NOTE.md index c684e62f..38a54937 100644 --- a/Week_01/id_117/NOTE.md +++ b/Week_01/id_117/NOTE.md @@ -1 +1,9 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 + +### 工作内容 +1.学习`java` +2.学习`elastic search` + +**说明:** +转眼周五了,先完成作业,等会儿练习. +我不会错过这个与大家一起的学习机会的. From 5ac957867f212046743e4f32fbde1f5f966c402e Mon Sep 17 00:00:00 2001 From: hijkoo Date: Fri, 19 Apr 2019 20:47:44 +0800 Subject: [PATCH 155/780] Create LeetCode_21_12.go --- Week_01/id_12/LeetCode_21_12.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Week_01/id_12/LeetCode_21_12.go diff --git a/Week_01/id_12/LeetCode_21_12.go b/Week_01/id_12/LeetCode_21_12.go new file mode 100644 index 00000000..ae714481 --- /dev/null +++ b/Week_01/id_12/LeetCode_21_12.go @@ -0,0 +1,26 @@ +/** + * Definition for singly-linked list. + * type ListNode struct { + * Val int + * Next *ListNode + * } + */ +func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { + if l1 == nil{ + return l2 + } + if l2 == nil{ + return l1 + } + var res *ListNode + if l1.Val >= l2.Val{ + res = l2 + l2 = l2.Next + }else{ + res = l1 + l1 = l1.Next + } + + res.Next = mergeTwoLists(l1,l2) + return res +} From bb51ffd22299c8070153edc0afaa4e10359df762 Mon Sep 17 00:00:00 2001 From: hijkoo Date: Fri, 19 Apr 2019 20:48:46 +0800 Subject: [PATCH 156/780] Create LeetCode_83_12.php --- Week_01/id_12/LeetCode_83_12.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Week_01/id_12/LeetCode_83_12.php diff --git a/Week_01/id_12/LeetCode_83_12.php b/Week_01/id_12/LeetCode_83_12.php new file mode 100644 index 00000000..5e58f67b --- /dev/null +++ b/Week_01/id_12/LeetCode_83_12.php @@ -0,0 +1,22 @@ +/** + * Definition for a singly-linked list. + * class ListNode { + * public $val = 0; + * public $next = null; + * function __construct($val) { $this->val = $val; } + * } + */ + +class Solution { + public function deleteDuplicates($headNode) { + $current = $headNode; + while($current->next !=null){ + if($current->val == $current->next->val ){ + $current->next = $current->next->next; + }else{ + $current = $current->next; + } + } + return $headNode; + } +} From 3242fa3707e384d30b0c2976710c95f971fbdd42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=A2=E6=A1=83=E5=85=AD?= <49054754+HongChao6@users.noreply.github.com> Date: Fri, 19 Apr 2019 20:49:36 +0800 Subject: [PATCH 157/780] LeetCode441 --- Week_01/id_131/LeetCode_441_131.cpp | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Week_01/id_131/LeetCode_441_131.cpp diff --git a/Week_01/id_131/LeetCode_441_131.cpp b/Week_01/id_131/LeetCode_441_131.cpp new file mode 100644 index 00000000..91f27aa7 --- /dev/null +++ b/Week_01/id_131/LeetCode_441_131.cpp @@ -0,0 +1,41 @@ +class Solution { +public: + int findSuitData(vector& unorderV, int index) + { + if (unorderV.empty()) + { + unorderV.push_back(index); + return -1; + } + int lastIndex = unorderV[unorderV.size() - 1]; + if (index % 2 != lastIndex % 2) + { + unorderV.pop_back(); + return lastIndex; + } + else + { + unorderV.push_back(index); + } + return -1; + } + + vector sortArrayByParityII(vector& A) { + vector unorderV; + for (int begin = 0; begin < A.size(); ++begin) + { + if (begin % 2 != A[begin] % 2) + { + int i = findSuitData(unorderV, begin); + if (i >= 0) + { + int tmpData = A[begin]; + A[begin] = A[i]; + A[i] = tmpData; + } + } + } + return A; + } + +}; \ No newline at end of file From 2470d1ea83c5ff0708da980701a44b58075ad638 Mon Sep 17 00:00:00 2001 From: CRGT_Ghcoder Date: Fri, 19 Apr 2019 21:24:19 +0800 Subject: [PATCH 158/780] add leetcode 687 --- Week_01/id_31/LeetCode_687_031.swift | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Week_01/id_31/LeetCode_687_031.swift diff --git a/Week_01/id_31/LeetCode_687_031.swift b/Week_01/id_31/LeetCode_687_031.swift new file mode 100644 index 00000000..b93b6d71 --- /dev/null +++ b/Week_01/id_31/LeetCode_687_031.swift @@ -0,0 +1,36 @@ +// +// LeetCode_687_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/19. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + func longestUnivaluePath(_ root: TreeNode?) -> Int { + guard let _ = root else { return 0 } + let childrenPath = max(longestUnivaluePath(root?.left), longestUnivaluePath(root?.right)) + let s = search(root) + let rootPath = s.left + s.right + return max(childrenPath, rootPath) + } + + private func search(_ root: TreeNode?) -> (left: Int, right: Int) { + guard let rootv = root else { return (left: 0, right: 0) } + var leftv: Int = 0 + var rightv: Int = 0 + if rootv.left?.val == rootv.val { + leftv = 1 + findMax(search(root?.left)) + } + if rootv.right?.val == rootv.val { + rightv = 1 + findMax(search(root?.right)) + } + return (left: leftv, right: rightv) + } + + private func findMax(_ t: (Int, Int)) -> Int { + return max(t.0, t.1) + } +} From baf91c02ec2655c18f88bb7947f9af6e20011030 Mon Sep 17 00:00:00 2001 From: Stephen Chiang Date: Fri, 19 Apr 2019 22:10:13 +0800 Subject: [PATCH 159/780] Week_01 --- Week_01/.DS_Store | Bin 0 -> 6148 bytes Week_01/id_38/LeetCode_142_38.py | 42 +++++++++++++++++++++++++++++++ Week_01/id_38/LeetCode_698_38.py | 32 +++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 Week_01/.DS_Store create mode 100644 Week_01/id_38/LeetCode_142_38.py create mode 100644 Week_01/id_38/LeetCode_698_38.py diff --git a/Week_01/.DS_Store b/Week_01/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..44be00eb2de284d777cd19e95f83431a552a0dbe GIT binary patch literal 6148 zcmeHKI|>3Z5S{S@f{mqRt{^s+LG%P3Knp7vC~3%1Cy6b<|X76 zJ3Atx%iDe?G7*sx+)y4ibj|k7JJ!pH0^vAgao=3er_1@!$$b|v?of`hm#xfOeA}T> z0V+TRr~nn90-shOE9_|e>4SM56`%q?uYi3Y3f!z~C(aaDcEI=H5#Hiv@r+ zu?a*3ra=V;RkOv=pd(%~uO>EuK^M*DL-S_M4n_TToL@X$v<7md0#u-_KtGlftN&~G zoBqE|;))7Tfxl8f2dm9$i6>=k?L5wEZGrFLmh*(0VeS+RUXFoYjlb| WO>6?4j=0l-{24G^XjI_a3cLV#0u&Vh literal 0 HcmV?d00001 diff --git a/Week_01/id_38/LeetCode_142_38.py b/Week_01/id_38/LeetCode_142_38.py new file mode 100644 index 00000000..7a1ab171 --- /dev/null +++ b/Week_01/id_38/LeetCode_142_38.py @@ -0,0 +1,42 @@ +class Solution(object): + + def detectCycle(self, head): + if not head: + return None + node_in_cycle = self.meeting_node(head) + if not node_in_cycle: + return None + + cycle_length = 1 + temporary_node_in_cycle = node_in_cycle.next + while temporary_node_in_cycle: + if temporary_node_in_cycle == node_in_cycle: + break + temporary_node_in_cycle = temporary_node_in_cycle.next + cycle_length += 1 + + first_pointer = head + for i in range(0, cycle_length): + first_pointer = first_pointer.next + second_pointer = head + while True: + if first_pointer == second_pointer: + return second_pointer + first_pointer = first_pointer.next + second_pointer = second_pointer.next + + def meeting_node(self, head): + if not head: + return None + slow_pointer = head.next + if not slow_pointer: + return None + fast_pointer = slow_pointer.next + while slow_pointer and fast_pointer: + if slow_pointer == fast_pointer: + return fast_pointer + slow_pointer = slow_pointer.next + fast_pointer = fast_pointer.next + if fast_pointer: + fast_pointer = fast_pointer.next + return None diff --git a/Week_01/id_38/LeetCode_698_38.py b/Week_01/id_38/LeetCode_698_38.py new file mode 100644 index 00000000..059135be --- /dev/null +++ b/Week_01/id_38/LeetCode_698_38.py @@ -0,0 +1,32 @@ +class Solution(object): + def canPartitionKSubsets(self, nums, k): + if not nums or len(nums) == 0 or k <= 0 or k > len(nums): + return False + total = sum(nums) + if total % k > 0: + return False + target = total / k + nums = sorted(nums) + row = len(nums) - 1 + while nums[row] == target: + row -= 1 + k -= 1 + groups = [0] * k + return self.search(groups, row, nums, target) + + def search(self, groups, row, nums, target): + if row < 0: + return True + value = nums[row] + row -= 1 + for i in range(0, len(groups)): + if groups[i] + value <= target: + groups[i] += value + if self.search(groups, row, nums, target): + return True + groups[i] -= value + if groups[i] == 0: + break + return False + + From 7983091316d3148bea6dc6613749d9b6d383e120 Mon Sep 17 00:00:00 2001 From: liutong-cnu <1511767012@qq.com> Date: Fri, 19 Apr 2019 22:11:57 +0800 Subject: [PATCH 160/780] Add files via upload --- Week_01/id_144/leetcode_7_144.py | 13 +++++++++++++ Week_01/id_144/leetcode_9_144.py | 11 +++++++++++ 2 files changed, 24 insertions(+) create mode 100644 Week_01/id_144/leetcode_7_144.py create mode 100644 Week_01/id_144/leetcode_9_144.py diff --git a/Week_01/id_144/leetcode_7_144.py b/Week_01/id_144/leetcode_7_144.py new file mode 100644 index 00000000..c39efd08 --- /dev/null +++ b/Week_01/id_144/leetcode_7_144.py @@ -0,0 +1,13 @@ +class Solution: + def reverse(self, x: int) -> int: + if x == 0: + return 0 + s = str(x) + x = "" + if s[0] == "-": + x += "-" + x += s[len(s)-1::-1].lstrip("0").rstrip("-") + x = int(x) + if -2**31 < x < 2**31-1: + return x + return 0 \ No newline at end of file diff --git a/Week_01/id_144/leetcode_9_144.py b/Week_01/id_144/leetcode_9_144.py new file mode 100644 index 00000000..0431d704 --- /dev/null +++ b/Week_01/id_144/leetcode_9_144.py @@ -0,0 +1,11 @@ +class Solution: + def isPalindrome(self, x: int) -> bool: + s = str(x) + l = len(s) + mid = int(len(s)/2) + for i in range(mid): + if s[i] != s[l-1-i]: + return False + break + return True + \ No newline at end of file From c6e18a0bd698cf12d158d93050180b769f9918b4 Mon Sep 17 00:00:00 2001 From: liutong-cnu <1511767012@qq.com> Date: Fri, 19 Apr 2019 22:14:14 +0800 Subject: [PATCH 161/780] Update NOTE.md --- Week_01/id_144/NOTE.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Week_01/id_144/NOTE.md b/Week_01/id_144/NOTE.md index c684e62f..1a3a0eae 100644 --- a/Week_01/id_144/NOTE.md +++ b/Week_01/id_144/NOTE.md @@ -1 +1,3 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +这周比较忙,草草的完成了两道简单题,也是第一次在leetcode上刷题,以后会养成习惯。 +周末会把视频课补上,再在leetcode上刷几道题吧。 From b75744bb108197c10a493a81c6d50742dca9d041 Mon Sep 17 00:00:00 2001 From: liutong-cnu <1511767012@qq.com> Date: Fri, 19 Apr 2019 22:14:59 +0800 Subject: [PATCH 162/780] Update NOTE.md --- Week_01/id_144/NOTE.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Week_01/id_144/NOTE.md b/Week_01/id_144/NOTE.md index 1a3a0eae..822465bc 100644 --- a/Week_01/id_144/NOTE.md +++ b/Week_01/id_144/NOTE.md @@ -1,3 +1,4 @@ # 学习笔记 这周比较忙,草草的完成了两道简单题,也是第一次在leetcode上刷题,以后会养成习惯。 -周末会把视频课补上,再在leetcode上刷几道题吧。 +周末会把视频课补上,再在leetcode上刷几道题吧。 +两道题都是整数与字符串的转换处理,没什么难度。 From d493895f48b1c77811ea629efdfb920b3340da22 Mon Sep 17 00:00:00 2001 From: zouyingjie Date: Fri, 19 Apr 2019 22:55:05 +0800 Subject: [PATCH 163/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E6=80=BB?= =?UTF-8?q?=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_1/LeetCode50.java | 3 +- Week_01/id_1/NOTE.md | 93 +++++++++++++++++++++++++++++++++++- 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/Week_01/id_1/LeetCode50.java b/Week_01/id_1/LeetCode50.java index e217a405..fe34f24e 100644 --- a/Week_01/id_1/LeetCode50.java +++ b/Week_01/id_1/LeetCode50.java @@ -19,4 +19,5 @@ private double pow(double x, int n) { return half * half * x; } } -} \ No newline at end of file +} + diff --git a/Week_01/id_1/NOTE.md b/Week_01/id_1/NOTE.md index c684e62f..f0988620 100644 --- a/Week_01/id_1/NOTE.md +++ b/Week_01/id_1/NOTE.md @@ -1 +1,92 @@ -# 学习笔记 \ No newline at end of file +### 一. 第一周学习总结 + +#### 1. 关于链表题目的做题总结 + +做了作业中两道关于链表的题目,结合以前做的链表题目,发现自己用的方法基本有三种: + +- 遍历:链表和数组一样,基本的遍历是逃不了的,重点是怎么提高遍历效率的问题。 +- 反转:反转也是常用的方式,关于反转最主要的是记录三个节点:当前节点,当前节点的 prev 节点和 next 节点。整个反转过程就是这三个节点的不断变化。然后在反转的过程中可能需要做一些特殊的处理,比如本周的 LeetCode 24、25两道题目,都是要在反转的时候要讲前一组的尾节点的 next 指向本次反转后的头节点。 +- 快慢指针:包括查看链表是否有环,获取链表的中间节点等题目都可以用快慢指针的方式进行,当快指针到达末尾时,满指针刚好到达链表的中间,有环的话两者最终有机会相遇。 + + +#### 2. pow(x, n) 解题思路与递归简记 + +最先想到的就是循环相乘了,先暴力搞出来再说,代码如下 + +```Java + +public class Solution { + double myPow(double x, int n) { + int result = 1; + for (int i = 1; i <= n; i ++) { + result *= x; + } + return result; + } +} +``` + +这种解法时间复杂度为 O(N),实际提交可能会超时,因此需要改进。这里用到数学知识: + +> a^m * a^n = a^(m+n) + +因此以 2 的 10 次方为例: + +``` +2^10 = 2^5 * 2^5 +2^5 = 2^2 * 2^2 * 2 +2^2 = 2^1 * 2^1 +2^1 = 2^0 * 2 +``` + +因此每一个指数幂的计算都可以进行折半计算,这样就可以通过递归的形式进行计算。 + +递归公式为: + +``` +n 为偶数: x^n = x^(n/2) * x^(n/2) +n 为奇数: x^n = x^(n/2) * x^(n/2) * x +``` + +终止条件为: + +``` +n = 0, x^0 = 1 +``` + +实现代码如下: + +```Java +public class Solution { + double myPow(double x, int n) { + + double result = this.pow(x, Math.abs(n)); + + if (n < 0) { + return -n; + } + return n; + } + + private double pow(double x, int n) { + if (n == 0) { + return 1; + } + double half = pow(x, n / 2); + if (n % 2 == 0) { + return half * half; + } else { + return half * half * x; + } + } +} +``` + +最终返回结果要考虑 n 为负数的情况,因此先取绝对值进行计算,如果为负数则返回计算结果的倒数。整个算法的复杂度由 O(N) 变为了 O(logN)。 + +关于递归最重要的还是要找到递归公式,如王争老师在专栏中提到的三步: + +- 分解出子问题,子问题的解题思路通用:这里的 a^m * a^n = a^(m+n) 就是典型的案例。 +- 递归过程的计算:每次计算的结果是子问题的结果汇总,这里就是指数为奇数和偶数时的不同的计算公式。 +- 终止条件:这里的终止条件就是幂为 0 的时候。 + From c0db300f4d5355ed3ab45e3782eebdca67796c26 Mon Sep 17 00:00:00 2001 From: liutong-cnu <1511767012@qq.com> Date: Fri, 19 Apr 2019 23:03:32 +0800 Subject: [PATCH 164/780] Delete leetcode_9_144.py --- Week_01/id_144/leetcode_9_144.py | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 Week_01/id_144/leetcode_9_144.py diff --git a/Week_01/id_144/leetcode_9_144.py b/Week_01/id_144/leetcode_9_144.py deleted file mode 100644 index 0431d704..00000000 --- a/Week_01/id_144/leetcode_9_144.py +++ /dev/null @@ -1,11 +0,0 @@ -class Solution: - def isPalindrome(self, x: int) -> bool: - s = str(x) - l = len(s) - mid = int(len(s)/2) - for i in range(mid): - if s[i] != s[l-1-i]: - return False - break - return True - \ No newline at end of file From 3139b94bc78ea09f06171de7adea68684b2d8722 Mon Sep 17 00:00:00 2001 From: liutong-cnu <1511767012@qq.com> Date: Fri, 19 Apr 2019 23:03:45 +0800 Subject: [PATCH 165/780] Delete leetcode_7_144.py --- Week_01/id_144/leetcode_7_144.py | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 Week_01/id_144/leetcode_7_144.py diff --git a/Week_01/id_144/leetcode_7_144.py b/Week_01/id_144/leetcode_7_144.py deleted file mode 100644 index c39efd08..00000000 --- a/Week_01/id_144/leetcode_7_144.py +++ /dev/null @@ -1,13 +0,0 @@ -class Solution: - def reverse(self, x: int) -> int: - if x == 0: - return 0 - s = str(x) - x = "" - if s[0] == "-": - x += "-" - x += s[len(s)-1::-1].lstrip("0").rstrip("-") - x = int(x) - if -2**31 < x < 2**31-1: - return x - return 0 \ No newline at end of file From 55960f3ef0228cb2a3abf64117db2d5883ace381 Mon Sep 17 00:00:00 2001 From: liutong-cnu <1511767012@qq.com> Date: Fri, 19 Apr 2019 23:04:08 +0800 Subject: [PATCH 166/780] Add files via upload --- Week_01/id_144/leetcode_83_144.py | 20 ++++++++++++++++++++ Week_01/id_144/leetcode_905_144.py | 11 +++++++++++ 2 files changed, 31 insertions(+) create mode 100644 Week_01/id_144/leetcode_83_144.py create mode 100644 Week_01/id_144/leetcode_905_144.py diff --git a/Week_01/id_144/leetcode_83_144.py b/Week_01/id_144/leetcode_83_144.py new file mode 100644 index 00000000..a1bd5235 --- /dev/null +++ b/Week_01/id_144/leetcode_83_144.py @@ -0,0 +1,20 @@ +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, x): +# self.val = x +# self.next = None + +class Solution: + def deleteDuplicates(self, head: ListNode) -> ListNode: + if not head: + return head + p = head + q = head.next + while q: + if q.val != p.val: + p.next = q + p = p.next + q = q.next + if p!= q: + p.next = None + return head \ No newline at end of file diff --git a/Week_01/id_144/leetcode_905_144.py b/Week_01/id_144/leetcode_905_144.py new file mode 100644 index 00000000..13d185f9 --- /dev/null +++ b/Week_01/id_144/leetcode_905_144.py @@ -0,0 +1,11 @@ +class Solution: + def sortArrayByParity(self, A: List[int]) -> List[int]: + s1 = [] + s2 = [] + for a in A: + if a %2 == 0: + s1.append(a) + else: + s2.append(a) + return s1 + s2 + \ No newline at end of file From 698a7e1c51d07d75cc8ebbb7552a7c4163155d09 Mon Sep 17 00:00:00 2001 From: CRGT_Ghcoder Date: Fri, 19 Apr 2019 23:17:36 +0800 Subject: [PATCH 167/780] add leetcode 164/441 --- Week_01/id_31/LeetCode_164_031.swift | 50 ++++++++++++++++++++++++++++ Week_01/id_31/LeetCode_441_031.swift | 27 +++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 Week_01/id_31/LeetCode_164_031.swift create mode 100644 Week_01/id_31/LeetCode_441_031.swift diff --git a/Week_01/id_31/LeetCode_164_031.swift b/Week_01/id_31/LeetCode_164_031.swift new file mode 100644 index 00000000..8d37ae28 --- /dev/null +++ b/Week_01/id_31/LeetCode_164_031.swift @@ -0,0 +1,50 @@ +// +// LeetCode_164_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/19. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + func maximumGap(_ nums: [Int]) -> Int { + guard nums.count > 0 else { return 0 } + var nums = nums + qSort(&nums, 0, nums.count - 1) + var maxSpace = 0 + for i in 0...nums.count - 1 { + if (nums.count > i + 1) { + maxSpace = max(maxSpace, nums[i+1] - nums[i]) + } + } + return maxSpace + } + + private func qSort(_ nums: inout [Int], _ from: Int, _ to:Int) { + if from < to { + let mid = findPartition(&nums, from, to) + qSort(&nums, from, mid) + qSort(&nums, mid + 1, to) + } + } + + private func findPartition(_ nums: inout [Int], _ from: Int, _ to: Int) -> Int { + var from = from + var to = to + let indexNumber = nums[from] + while from < to { + while nums[to] >= indexNumber && from < to { + to -= 1 + } + nums[from] = nums[to] + while nums[from] <= indexNumber && from < to { + from += 1 + } + nums[to] = nums[from] + } + nums[from] = indexNumber + return from + } +} diff --git a/Week_01/id_31/LeetCode_441_031.swift b/Week_01/id_31/LeetCode_441_031.swift new file mode 100644 index 00000000..139630d3 --- /dev/null +++ b/Week_01/id_31/LeetCode_441_031.swift @@ -0,0 +1,27 @@ +// +// LeetCode_441_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/19. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + func arrangeCoins(_ n: Int) -> Int { + var total = 0 + var k = 1 + let n = n + while n >= k { + total += k + if total == n { + return k + } else if total > n { + return k - 1 + } + k += 1 + } + return 0 + } +} From 651a8c619383a53069650e135309f43c8e30a9fc Mon Sep 17 00:00:00 2001 From: hotboy <2152160@gmail.com> Date: Fri, 19 Apr 2019 23:22:54 +0800 Subject: [PATCH 168/780] Create LeetCode_83_0.cs --- Week_01/id_34/LeetCode_83_0.cs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Week_01/id_34/LeetCode_83_0.cs diff --git a/Week_01/id_34/LeetCode_83_0.cs b/Week_01/id_34/LeetCode_83_0.cs new file mode 100644 index 00000000..fa2286c4 --- /dev/null +++ b/Week_01/id_34/LeetCode_83_0.cs @@ -0,0 +1,29 @@ + public class Solution + { + public ListNode DeleteDuplicates(ListNode head) + { + int currentValue = head.val; + int nextValue = 0; + + + if(head == null|| head.next==null) + { return head; } + + ListNode copyHead = head; + while(copyHead.next!=null) + { + currentValue = copyHead.val; + nextValue = copyHead.next.val; + if(currentValue==nextValue) + { + copyHead.next = copyHead.next.next; + } + else + { + copyHead = copyHead.next; + } + } + + return head; + } + } From 9309e456bb9463ef7e70a2114411fe01c68789f1 Mon Sep 17 00:00:00 2001 From: hotboy <2152160@gmail.com> Date: Fri, 19 Apr 2019 23:27:24 +0800 Subject: [PATCH 169/780] Create LeetCode_905_0.cs --- Week_01/id_34/LeetCode_905_0.cs | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Week_01/id_34/LeetCode_905_0.cs diff --git a/Week_01/id_34/LeetCode_905_0.cs b/Week_01/id_34/LeetCode_905_0.cs new file mode 100644 index 00000000..2ca32675 --- /dev/null +++ b/Week_01/id_34/LeetCode_905_0.cs @@ -0,0 +1,38 @@ + public class Solution + { + public int[] SortArrayByParity(int[] A) + { + if (A == null && A.Length == 0) + { + return A; + } + int indexHead = 0; + int indexTail = A.Length - 1; + int tempValue = 0; + while (indexHead < indexTail) + { + if (A[indexHead] % 2 == 1 && A[indexTail] % 2 == 0) + { + tempValue = A[indexHead]; + A[indexHead] = A[indexTail]; + A[indexTail] = tempValue; + indexHead++; + indexTail--; + } + else if (A[indexHead] % 2 == 0 && A[indexTail] % 2 == 1) + { + indexHead++; + indexTail--; + } + else if (A[indexHead] % 2 == 1) + { + indexTail--; + } + else if (A[indexTail] % 2 == 0) + { + indexHead++; + } + } + return A; + } + } From 32c64cd036a96a65e528bae635b2b958734c3e16 Mon Sep 17 00:00:00 2001 From: kdb_reboot Date: Fri, 19 Apr 2019 23:33:03 +0800 Subject: [PATCH 170/780] first homework --- Week_01/id_3/21/21 | Bin 0 -> 11688 bytes Week_01/id_3/21/21.c | 110 +++++++++++++++++++++++++++++++++++++++++++ Week_01/id_3/83/83 | Bin 0 -> 11576 bytes Week_01/id_3/83/83.c | 69 +++++++++++++++++++++++++++ 4 files changed, 179 insertions(+) create mode 100755 Week_01/id_3/21/21 create mode 100644 Week_01/id_3/21/21.c create mode 100755 Week_01/id_3/83/83 create mode 100644 Week_01/id_3/83/83.c diff --git a/Week_01/id_3/21/21 b/Week_01/id_3/21/21 new file mode 100755 index 0000000000000000000000000000000000000000..047df70857608bfac2a70039dcdbe2d0ff0a2a6f GIT binary patch literal 11688 zcmeHNdvH|Oc|Uh|C9PJ{YC!@dAoYTgjqPal;3eC^Xa#~55f5YG$JF?;+PzwBS?wyj zcQKGUFcvu0D7er(N?kXh?o5WHiA$TAL{n&ujcx4Kosv!xYw9+GTYD^w-Kc|2X&s~f zzH`sFx_eoiblU&gGqd;mzTfva&wKB8&fWdpz3W|?Cb+o8J%XgpatrBHilt480qGPS zq7v7|Vv!&-kHjo}r$wN(%2gGbsaN4{Q1a_=S%8x+RCY|cg+$Agt`s?0WuZ)k2ugtb zsIA9qqzD?64AWuNjy;O9ABp65Qu&=!eoUuS!KA4sO7spLKb zB1ItAtf>!0lWDP`x2J2Z-X25YAu}Z5nhL6c)^C-pDU9#+J9d;#{@i=s=;2E1a4~{pNDU zhSPn(eY@nU6AOgFuR zYwb;);7A@M{lyE@C{2GsGBxeuc`5%n$uvY4&q(>ZBvTVFo|H2A4;+CkOWOxMqd$Hm zGWySvk+-L|_Vpev`z~xFhijHevO0iB({pyi=fm2Y){$oQ??c!gIb3!WG;-(F$mly} zBf7AWM0BBM$Ml7PQ0+|zW&9mysns(w{2wC2!z;GQFt=TUf8>R0?#Sp=jvIE85!$713Gmn0d8_Efa}zl zxbwyRb4iBgs-$C`Ub4PaPkMz;MJ#kGGV<7j$j^ofL)Sf_=mlwfAu_fd=vFKVsl5Q> zNnuuiOo{xMC6z-tdC7yT6U zuKPoR&vm~}De(Eqlz#{W8JSuj*ayl`j8qnN+XIUZa=REftq@Lr2BPk0*;81Zn|xF9+i5bO`x!wWSg|pZ7){9IFp)zP z8QXL<9$8i`dv2CZ?)&BR^lMmF)_M;=5Wc@>^o{WLFz%(MYi@a~G!wlqJo-t`=#}2v z-jVnG3!k_rr$0s$4t-z-+umgV-qHW;9lf${^cUgj`hSd!oYf+C{!{)vdM5nlj_||b z9pOj9`q?8h_tRxODr7wM)S%~cQyeROf%|UCF}(P_ifWF5HlU?vK$n6Jg0`cJw9ISJ zwX2{HgEn9#?7`j80XhkKfSxQU^uDK}?b{}_JppY&b%pncRuLea-r3`*gWi=~O4|#u z1O{Zk6!u%m*dJK$Z`fE{^{DrNSTq0b+m|g_OfdQ5_7q!TM}6Qzz7ONK4Sjf%z_35? zgllb0x$9?Wkrn&50oR~!TZ;4>3;Jh(e-8S3>KpsJYc(>UI#1)*fw3?^MVCMDJFYH& z!&B~VfAFxU%fIw1Wf6bt6Xg+q$4JE{e`nU;5%#x+{Y$(2LD<2*%kP!%M-SrfL>w2z z`Tz2Nas)Wv;rvG3PK8{eT8+vXmAt5JitwoYL!;7j9<@Npd{4|*GUrnZ9r};1O=k!? zrWPURNGB*GK;hhIT zANN=a?$;S*$GI5S{~HQtJ3Jm_|1ho+!tEyIVHFRLFxE@YDJ9>p^#7q`?uQEhzeaeU z=?r*9^}k$Az+6Rd;R$g%{0f=#fOUac9rY8{4@c$RW>(K>WZbl~dtR(ykq=6w&w zZdb*2BA$vrkYM@y5-g+h1&^l;8z4B8eV@GX6Yj4hiTx}D_hDkoyyf1fNTHQqhD!zU z-gDq4JRi-6Rpn0rc&_y0Dk`aCo{yiz)mwRv_+Jtqs9Xs{≪⃒RQ^5j*N6{R-cF5} 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 Di>#D+ literal 0 HcmV?d00001 diff --git a/Week_01/id_3/21/21.c b/Week_01/id_3/21/21.c new file mode 100644 index 00000000..62a590a4 --- /dev/null +++ b/Week_01/id_3/21/21.c @@ -0,0 +1,110 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ +#include +#include + +struct ListNode +{ + int val; + struct ListNode *next; +}; + +struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) { + struct ListNode *head = NULL; + struct ListNode *tail = NULL; + struct ListNode *p = l1; + struct ListNode *q = l2; + struct ListNode *tmp; + + while(NULL != p && NULL != q) + { + //find + if(p->val <= q->val) + { + tmp = p; + p = p->next; + } + else + { + tmp = q; + q = q->next; + } + + //insert + if(NULL == head) + { + head = tmp; + tail = tmp; + } + else + { + tail->next = tmp; + tail = tmp; + } + } + + //remain + tmp = NULL != p ? p : q; + if(NULL == head) + { + head = tmp; + } + else + { + tail->next = tmp; + } + + return head; +} + +void printLinkList(struct ListNode* head) +{ + struct ListNode *p = head; + + while(NULL != p) + { + printf("%d ", p->val); + p = p->next; + } + + printf("\n"); +} + +int main() +{ + struct ListNode *l1 = NULL; + struct ListNode *l2 = NULL; + struct ListNode *l3 = NULL; + struct ListNode *p; + int a[1] = {0}; + int loop; + + for(loop = 0; loop < 0; loop++) + { + p = (struct ListNode*)malloc(sizeof(struct ListNode)); + p->val = a[loop]; + p->next = NULL == l1 ? NULL : l1; + l1 = p; + } + + for(loop = 0; loop < 1; loop++) + { + p = (struct ListNode*)malloc(sizeof(struct ListNode)); + p->val = a[loop]; + p->next = NULL == l2 ? NULL : l2; + l2 = p; + } + + printLinkList(l1); + printLinkList(l2); + + l3 = mergeTwoLists(l1, l2); + printLinkList(l3); + + return 0; +} \ No newline at end of file diff --git a/Week_01/id_3/83/83 b/Week_01/id_3/83/83 new file mode 100755 index 0000000000000000000000000000000000000000..e3c08af6be5723e4c322e775ce639bdfe86e38a3 GIT binary patch literal 11576 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 +#include + +struct ListNode{ + int val; + struct ListNode *next; +}; + +struct ListNode* deleteDuplicates(struct ListNode* head) { + struct ListNode* p = head; + struct ListNode* q; + struct ListNode* tmp; + + while(NULL != p){ + q = p->next; + while(NULL != q && p->val == q->val){ + tmp = q; + q = q->next; + free(tmp); + } + + p->next = q; + p = p->next; + } + + return head; +} + +void printLinkList(struct ListNode* head) +{ + struct ListNode *p = head; + + while(NULL != p) + { + printf("%d ", p->val); + p = p->next; + } + + printf("\n"); +} + +int main(int argc, char *argv[]) +{ + struct ListNode *head = NULL; + struct ListNode *p; + int loop; + + for(loop = 1; loop < argc; loop++) + { + p = (struct ListNode*)malloc(sizeof(struct ListNode)); + p->val = strtol(argv[loop], 0, 10); + p->next = NULL == head ? NULL : head; + head = p; + } + + printLinkList(head); + + head = deleteDuplicates(head); + printLinkList(head); + + return 0; +} From 43f4cc642e63d7403f45154f7771741f8d1b6d7b Mon Sep 17 00:00:00 2001 From: kdb_reboot Date: Fri, 19 Apr 2019 23:50:57 +0800 Subject: [PATCH 171/780] =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_3/NOTE.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Week_01/id_3/NOTE.md b/Week_01/id_3/NOTE.md index c684e62f..e0dd0763 100644 --- a/Week_01/id_3/NOTE.md +++ b/Week_01/id_3/NOTE.md @@ -1 +1,6 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +本周投身项目,时间不是很充足,只做了两道简单的算法题,周日如果没事,会补做第一周的其他作业 +做了两道题:83(合并有序链表)和21(删除有序链表中的重复元素) +心得: +- ListNode *p 只是指针,如果引用未初始化的p, 比如p->next 就会发生访问访问野指针,编译器报segment fault +- 构造测试数据可以通过命令行传参: int main(int argc, char *argv[]) \ No newline at end of file From 56840bee046941ecbf10577f94a8b93b746b85c7 Mon Sep 17 00:00:00 2001 From: MichaelHuang Date: Sat, 20 Apr 2019 00:04:33 +0800 Subject: [PATCH 172/780] valid anagram --- Week_01/id_33/LeetCode_242_33.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Week_01/id_33/LeetCode_242_33.py diff --git a/Week_01/id_33/LeetCode_242_33.py b/Week_01/id_33/LeetCode_242_33.py new file mode 100644 index 00000000..0d1caae1 --- /dev/null +++ b/Week_01/id_33/LeetCode_242_33.py @@ -0,0 +1,26 @@ +class Solution(object): + def isAnagram(self, s, t): + """ + :type s: str + :type t: str + :rtype: bool + """ + A = [0] * 26 + if len(t) != len(s): + return False + for i in range(len(s)): + A[ord(s[i])-ord('a')] += 1 + for i in range(len(t)): + A[ord(t[i])-ord('a')] -= 1 + for i in range(26): + if A[i] != 0: + return False + return True + +s = "anagram" +t = "nagaram" + +solution = Solution() +print(solution.isAnagram(s, t)) + + From 1514918bb5351cc39d4a14828118e84a27d68006 Mon Sep 17 00:00:00 2001 From: "wei.he" Date: Sat, 20 Apr 2019 00:35:40 +0800 Subject: [PATCH 173/780] LeetCode21 --- Week_01/id_53/LeetCode_21_53.java | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Week_01/id_53/LeetCode_21_53.java diff --git a/Week_01/id_53/LeetCode_21_53.java b/Week_01/id_53/LeetCode_21_53.java new file mode 100644 index 00000000..fe9fa394 --- /dev/null +++ b/Week_01/id_53/LeetCode_21_53.java @@ -0,0 +1,32 @@ +/** + * https://leetcode.com/problems/merge-two-sorted-lists/ + * + * @author hewei + * @date 2019/4/19 23:48 + */ +public class LeetCode_21_53 { + + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if (l1 == null) { + return l2; + } + if (l2 == null) { + return l1; + } + if (l1.val < l2.val) { + l1.next = mergeTwoLists(l1.next,l2); + return l1; + } else { + l2.next = mergeTwoLists(l2.next,l1); + return l2; + } + } + + private class ListNode { + int val; + ListNode next; + public ListNode(int val) { + this.val = val; + } + } +} From a9bedc5ce8a8a0f6d6c5b8008a0dc4ee47b536f0 Mon Sep 17 00:00:00 2001 From: "wei.he" Date: Sat, 20 Apr 2019 00:35:57 +0800 Subject: [PATCH 174/780] LeetCode83_53 --- Week_01/id_53/LeetCode_83_53.java | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Week_01/id_53/LeetCode_83_53.java diff --git a/Week_01/id_53/LeetCode_83_53.java b/Week_01/id_53/LeetCode_83_53.java new file mode 100644 index 00000000..dd4b2d1c --- /dev/null +++ b/Week_01/id_53/LeetCode_83_53.java @@ -0,0 +1,25 @@ +/** + * https://leetcode.com/problems/remove-duplicates-from-sorted-list/ + * + * @author hewei + * @date 2019/4/19 23:26 + */ +public class LeetCode_83_53 { + public ListNode deleteDuplicates(ListNode head) { + ListNode temp = head; + while(temp != null && temp.next != null) { + if (temp.val == temp.next.val) { + temp.next = temp.next.next; + } else { + temp = temp.next; + } + } + return head; + } + + private class ListNode { + int val; + ListNode next; + ListNode(int x) { val = x; } + } +} From 155038f4bfe31280c35fbc5016a7856099a09f66 Mon Sep 17 00:00:00 2001 From: luckypeak Date: Sat, 20 Apr 2019 00:39:05 +0800 Subject: [PATCH 175/780] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E9=93=BE=E8=A1=A8=E6=95=B0=E7=BB=84=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_124/LeetCode_142_124.java | 50 ++++++++++++++++++++++++++++ Week_01/id_124/LeetCode_20_124.java | 35 +++++++++++++++++++ Week_01/id_124/LeetCode_24_124.java | 35 +++++++++++++++++++ Week_01/id_124/LeetCode_83_124.java | 22 ++++++++++++ Week_01/id_124/LeetCode_905_124.java | 35 +++++++++++++++++++ 5 files changed, 177 insertions(+) create mode 100644 Week_01/id_124/LeetCode_142_124.java create mode 100644 Week_01/id_124/LeetCode_20_124.java create mode 100644 Week_01/id_124/LeetCode_24_124.java create mode 100644 Week_01/id_124/LeetCode_83_124.java create mode 100644 Week_01/id_124/LeetCode_905_124.java diff --git a/Week_01/id_124/LeetCode_142_124.java b/Week_01/id_124/LeetCode_142_124.java new file mode 100644 index 00000000..98acb73c --- /dev/null +++ b/Week_01/id_124/LeetCode_142_124.java @@ -0,0 +1,50 @@ +import common.ListNode; + +import java.util.HashSet; +import java.util.Set; + +public class DetectCycle { + public ListNode detectCycle(ListNode head) { + if (head == null || head.next == null) { + return null; + } + ListNode fast = head; + ListNode slow = head; + while (fast != null) { + if (fast.next == null) { + return null; + } + fast = fast.next.next; + slow = slow.next; + if (fast == slow) { + fast = head; + while (fast != slow) { + fast = fast.next; + slow = slow.next; + } + break; + } + + } + + return fast; + } + + public ListNode detectCycleByMap(ListNode head) { + Set set = new HashSet<>(); + while (head != null) { + if (set.contains(head)) { + return head; + } else { + set.add(head); + } + head = head.next; + } + return null; + } + + + public static void main(String[] args) { + + } +} diff --git a/Week_01/id_124/LeetCode_20_124.java b/Week_01/id_124/LeetCode_20_124.java new file mode 100644 index 00000000..5c54b02b --- /dev/null +++ b/Week_01/id_124/LeetCode_20_124.java @@ -0,0 +1,35 @@ +import java.util.HashMap; +import java.util.Map; +import java.util.Stack; + +public class IsValidBrackets { + + public boolean isValid(String s) { + Stack stack = new Stack<>(); + Map brackets = new HashMap<>(); + brackets.put(')', '('); + brackets.put(']', '['); + brackets.put('}', '{'); + char[] cArr = s.toCharArray(); + for (char c : cArr) { + if (stack.isEmpty()){ + stack.push(c); + continue; + } + char topc = stack.peek(); + if (brackets.containsKey(c) && topc == brackets.get(c)) { + stack.pop(); + }else { + stack.push(c); + } + + } + return stack.isEmpty(); + } + + public static void main(String[] args) { + IsValidBrackets brackets = new IsValidBrackets(); + System.out.println(brackets.isValid("()]")); + + } +} diff --git a/Week_01/id_124/LeetCode_24_124.java b/Week_01/id_124/LeetCode_24_124.java new file mode 100644 index 00000000..b797bb34 --- /dev/null +++ b/Week_01/id_124/LeetCode_24_124.java @@ -0,0 +1,35 @@ +import common.ListNode; + +public class SwapPairs { + + public ListNode swapPairs(ListNode head) { + if (head == null || head.next == null) { + return head; + } + ListNode dummy = new ListNode(-1); + dummy.next = head; + ListNode cur = dummy; + while (cur.next != null && cur.next.next != null) { + ListNode next = cur.next; + ListNode nextNext = cur.next.next; + next.next = nextNext.next; + nextNext.next = next; + cur.next = nextNext; + cur = nextNext.next; + } + return dummy.next; + } + + public static void main(String[] args) { + ListNode node1 = new ListNode(1); + ListNode node2 = new ListNode(2); + ListNode node3 = new ListNode(3); + ListNode node4 = new ListNode(4); + node1.next = node2; + node2.next = node3; + node3.next = node4; + SwapPairs swapPairs = new SwapPairs(); + swapPairs.swapPairs(node1); + } + +} diff --git a/Week_01/id_124/LeetCode_83_124.java b/Week_01/id_124/LeetCode_83_124.java new file mode 100644 index 00000000..f9120b29 --- /dev/null +++ b/Week_01/id_124/LeetCode_83_124.java @@ -0,0 +1,22 @@ +import common.ListNode; + +public class DeleteDuplicates { + + public ListNode deleteDuplicates(ListNode head) { + ListNode dummy = new ListNode(-1); + dummy.next = head; + ListNode node = head; + while (node != null) { + if (node.next != null && node.val == node.next.val) { + node.next = node.next.next; + }else { + node = node.next; + } + } + return dummy.next; + } + + public static void main(String[] args) { + + } +} diff --git a/Week_01/id_124/LeetCode_905_124.java b/Week_01/id_124/LeetCode_905_124.java new file mode 100644 index 00000000..b797bb34 --- /dev/null +++ b/Week_01/id_124/LeetCode_905_124.java @@ -0,0 +1,35 @@ +import common.ListNode; + +public class SwapPairs { + + public ListNode swapPairs(ListNode head) { + if (head == null || head.next == null) { + return head; + } + ListNode dummy = new ListNode(-1); + dummy.next = head; + ListNode cur = dummy; + while (cur.next != null && cur.next.next != null) { + ListNode next = cur.next; + ListNode nextNext = cur.next.next; + next.next = nextNext.next; + nextNext.next = next; + cur.next = nextNext; + cur = nextNext.next; + } + return dummy.next; + } + + public static void main(String[] args) { + ListNode node1 = new ListNode(1); + ListNode node2 = new ListNode(2); + ListNode node3 = new ListNode(3); + ListNode node4 = new ListNode(4); + node1.next = node2; + node2.next = node3; + node3.next = node4; + SwapPairs swapPairs = new SwapPairs(); + swapPairs.swapPairs(node1); + } + +} From 5ebac88adc777b2e9a1172610b42d91e26fde7af Mon Sep 17 00:00:00 2001 From: luckypeak Date: Sat, 20 Apr 2019 00:45:21 +0800 Subject: [PATCH 176/780] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AF=8D?= =?UTF-8?q?=E5=BC=82=E4=BD=8D=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_124/LeetCode_242_124.java | 30 ++++++++++++ Week_01/id_124/LeetCode_905_124.java | 68 +++++++++++++++++----------- 2 files changed, 71 insertions(+), 27 deletions(-) create mode 100644 Week_01/id_124/LeetCode_242_124.java diff --git a/Week_01/id_124/LeetCode_242_124.java b/Week_01/id_124/LeetCode_242_124.java new file mode 100644 index 00000000..a6611027 --- /dev/null +++ b/Week_01/id_124/LeetCode_242_124.java @@ -0,0 +1,30 @@ +import java.util.HashMap; +import java.util.Map; + +public class IsAnagram { + + public boolean isAnagramByMap(String s, String t) { + if(s.length() != t.length()){ + return false; + } + Map cMap = new HashMap<>(); + for (Character c : s.toCharArray()) { + Integer cnt = cMap.getOrDefault(c, 0); + cMap.put(c, cnt + 1); + } + for (Character c : t.toCharArray()) { + if (!cMap.containsKey(c)) { + return false; + } + Integer cnt = cMap.getOrDefault(c, 0); + cMap.put(c, cnt - 1); + } + for (Integer cnt : cMap.values()) { + if (cnt > 0) { + return false; + } + } + return true; + } + +} diff --git a/Week_01/id_124/LeetCode_905_124.java b/Week_01/id_124/LeetCode_905_124.java index b797bb34..2c2b6109 100644 --- a/Week_01/id_124/LeetCode_905_124.java +++ b/Week_01/id_124/LeetCode_905_124.java @@ -1,35 +1,49 @@ -import common.ListNode; +public class SortArrayByParity { -public class SwapPairs { + public int[] sortArrayByParity(int[] A) { + int length = A.length; + for (int i = 0, j = length - 1; i < j; ) { + if (A[i] % 2 != 0 && A[j] % 2 != 1) { + int temp = A[j]; + A[j] = A[i]; + A[i] = temp; + i++; + j--; + } else if (A[i] % 2 == 0) { + i++; + } else if (A[j] % 2 == 1) { + j--; + } + } + return A; + + } - public ListNode swapPairs(ListNode head) { - if (head == null || head.next == null) { - return head; + private boolean isOdd(int num) { + return num % 2 == 0; + } + + public int[] sortArrayByParityII(int[] A) { + int length = A.length; + if (length < 2) { + return A; } - ListNode dummy = new ListNode(-1); - dummy.next = head; - ListNode cur = dummy; - while (cur.next != null && cur.next.next != null) { - ListNode next = cur.next; - ListNode nextNext = cur.next.next; - next.next = nextNext.next; - nextNext.next = next; - cur.next = nextNext; - cur = nextNext.next; + for (int i = 0, j = 1; i < length && j < length; ) { + if (isOdd(i) && isOdd(A[i])) { + i += 2; + }else if (!isOdd(j) && !isOdd(A[j])) { + j += 2; + }else { + int temp = A[j]; + A[j] = A[i]; + A[i] = temp; + i+=2; + j+=2; + } + } - return dummy.next; + return A; } - public static void main(String[] args) { - ListNode node1 = new ListNode(1); - ListNode node2 = new ListNode(2); - ListNode node3 = new ListNode(3); - ListNode node4 = new ListNode(4); - node1.next = node2; - node2.next = node3; - node3.next = node4; - SwapPairs swapPairs = new SwapPairs(); - swapPairs.swapPairs(node1); - } } From 27a94a1581380f4cc42f255a61a65d6b769027bc Mon Sep 17 00:00:00 2001 From: salanhess Date: Sat, 20 Apr 2019 00:55:20 +0800 Subject: [PATCH 177/780] Create LeetCode_83_040.go --- Week_01/id_40/LeetCode_83_040.go | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Week_01/id_40/LeetCode_83_040.go diff --git a/Week_01/id_40/LeetCode_83_040.go b/Week_01/id_40/LeetCode_83_040.go new file mode 100644 index 00000000..86b5b1fe --- /dev/null +++ b/Week_01/id_40/LeetCode_83_040.go @@ -0,0 +1,11 @@ +func deleteDuplicates(head *ListNode) *ListNode { + current := head + for current != nil && current.Next != nil { + if current.Next.Data == current.Data { + current.Next = current.Next.Next + } else { + current = current.Next + } + } + return head +} From 723bb814fcd7c40019147a5939b62bff042cb4ab Mon Sep 17 00:00:00 2001 From: salanhess Date: Sat, 20 Apr 2019 00:57:15 +0800 Subject: [PATCH 178/780] Create LeetCode_905_040.go --- Week_01/id_40/LeetCode_905_040.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Week_01/id_40/LeetCode_905_040.go diff --git a/Week_01/id_40/LeetCode_905_040.go b/Week_01/id_40/LeetCode_905_040.go new file mode 100644 index 00000000..63c4726b --- /dev/null +++ b/Week_01/id_40/LeetCode_905_040.go @@ -0,0 +1,31 @@ +package main + +import "fmt" + +func sortArrayByParity(A []int) []int { + if A == nil || len(A) == 1 { + return A + } + left := 0 + right := len(A) - 1 + for left < right { + //左指针对应偶数值,右指针对应奇数值,进行交换 + if (A[left]&1) == 1 && (A[right]&1) == 0 { + A[left], A[right] = A[right], A[left] + } else if (A[left] & 1) == 0 { + //左指针对应的是偶数值,符合题意,继续向右移动 + left++ + } else if (A[right] & 1) == 1 { + //右指针对应的是奇数值,符合题意,继续向左移动 + right-- + } + } + return A +} + +func main() { + fmt.Println("vim-go") + x := []int{1, 2, 3} + x = []int{1} + fmt.Println(sortArrayByParity(x)) +} From d8afa57e916e2aac9c63850e0669cc64a0a65134 Mon Sep 17 00:00:00 2001 From: qiuxiaowei Date: Sat, 20 Apr 2019 01:26:47 +0800 Subject: [PATCH 179/780] Signed-off-by: qiuxiaowei --- Week_01/id_62/LeetCode_242_62.c | 15 +++++++++++++++ Week_01/id_62/LeetCode_441_62.c | 17 +++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 Week_01/id_62/LeetCode_242_62.c create mode 100644 Week_01/id_62/LeetCode_441_62.c diff --git a/Week_01/id_62/LeetCode_242_62.c b/Week_01/id_62/LeetCode_242_62.c new file mode 100644 index 00000000..a3948d9a --- /dev/null +++ b/Week_01/id_62/LeetCode_242_62.c @@ -0,0 +1,15 @@ +bool isAnagram(char* s, char* t) { + int lens = strlen(s); + int lent = strlen(t); + if (lens != lent) return false; + int flag[26] = {0}; + for (int i = 0; i < lens; i++){ + flag[s[i] - 'a']++; + } + for (int i = 0; i < lent; i++){ + if (flag[t[i] - 'a'] == 0) return false; + flag[t[i] - 'a']--; + } + return true; +} +//4MS \ No newline at end of file diff --git a/Week_01/id_62/LeetCode_441_62.c b/Week_01/id_62/LeetCode_441_62.c new file mode 100644 index 00000000..37862825 --- /dev/null +++ b/Week_01/id_62/LeetCode_441_62.c @@ -0,0 +1,17 @@ +int arrangeCoins(int n) { + int low = 0; + int mid = 0; + int high = n; + while(low <= high) + { + mid = (low + high) / 2; + if( 0 <= n - (mid+1)*mid/2 < mid + 1) + return mid; + else if(n - (mid+1)*mid/2 >= mid + 1) + low = mid + 1; + else if(n - (mid+1)*mid/2 < 0) + high = mid - 1; + } +} + +//8ms \ No newline at end of file From 8c17a91dfd5a928cc9abc1c830d2dfe8824301ff Mon Sep 17 00:00:00 2001 From: jacoesad Date: Sat, 20 Apr 2019 01:39:16 +0800 Subject: [PATCH 180/780] Create LeetCode_905_059.py 905. Sort Array By Parity https://leetcode.com/problems/sort-array-by-parity/ --- Week_01/id_59/LeetCode_905_059.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Week_01/id_59/LeetCode_905_059.py diff --git a/Week_01/id_59/LeetCode_905_059.py b/Week_01/id_59/LeetCode_905_059.py new file mode 100644 index 00000000..e69de29b From a38ace27b562d6a69b831cd2561830897f92efb2 Mon Sep 17 00:00:00 2001 From: sadcat Date: Sat, 20 Apr 2019 01:55:54 +0800 Subject: [PATCH 181/780] week01 assignment --- Week_01/id_113/leetcode_242_113.cpp | 22 ++++++++++++++++++++++ Week_01/id_113/leetcode_83_113.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 Week_01/id_113/leetcode_242_113.cpp create mode 100644 Week_01/id_113/leetcode_83_113.cpp diff --git a/Week_01/id_113/leetcode_242_113.cpp b/Week_01/id_113/leetcode_242_113.cpp new file mode 100644 index 00000000..7e277406 --- /dev/null +++ b/Week_01/id_113/leetcode_242_113.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + bool isAnagram(string s, string t) { + char h[128]; + for(int i=0;i<128;i++) { + h[i] = 0; + } + for(int i=0;inext; + while(q != NULL && p->val == q->val) { + q = q->next; + } + + p->next = q; + p = p->next; + } + + return head; + } +}; From 4ec1e5e22a308b03e2275c5a0d4f8408cdce0849 Mon Sep 17 00:00:00 2001 From: jacoesad Date: Sat, 20 Apr 2019 03:00:58 +0800 Subject: [PATCH 182/780] Week 1 905. Sort Array By Parity https://leetcode.com/problems/sort-array-by-parity/ 922. Sort Array By Parity II https://leetcode.com/problems/sort-array-by-parity-ii/ --- Week_01/id_59/LeetCode_905_059.py | 14 ++++++++++++++ Week_01/id_59/LeetCode_922_059.py | 9 +++++++++ Week_01/id_59/NOTE.md | 3 ++- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_59/LeetCode_922_059.py diff --git a/Week_01/id_59/LeetCode_905_059.py b/Week_01/id_59/LeetCode_905_059.py index e69de29b..c38d079d 100644 --- a/Week_01/id_59/LeetCode_905_059.py +++ b/Week_01/id_59/LeetCode_905_059.py @@ -0,0 +1,14 @@ +class Solution: + def sortArrayByParity(self, A: List[int]) -> List[int]: + low, high = 0, len(A) - 1 + while low < high: + if A[low] % 2 > A[high] % 2: + A[low], A[high] = A[high], A[low] + + if A[low] % 2 == 0: + low += 1 + + if A[high] % 2 == 1: + high -= 1 + + return A \ No newline at end of file diff --git a/Week_01/id_59/LeetCode_922_059.py b/Week_01/id_59/LeetCode_922_059.py new file mode 100644 index 00000000..17d810bd --- /dev/null +++ b/Week_01/id_59/LeetCode_922_059.py @@ -0,0 +1,9 @@ +class Solution: + def sortArrayByParityII(self, A: List[int]) -> List[int]: + even = 1 + for odd in range(0, len(A), 2): + if A[odd] % 2: + while A[even] % 2: + even += 2 + A[odd], A[even] = A[even], A[odd] + return A \ No newline at end of file diff --git a/Week_01/id_59/NOTE.md b/Week_01/id_59/NOTE.md index c684e62f..d864abd1 100644 --- a/Week_01/id_59/NOTE.md +++ b/Week_01/id_59/NOTE.md @@ -1 +1,2 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +在老师讲课的过程中,以及自己实践的过程中发现,双指针(python中类似的双变量)在算法解体过程中是非常有用的。 \ No newline at end of file From 835a2c407d4ea855cd36e3544ce70a9419ef513f Mon Sep 17 00:00:00 2001 From: null Date: Sat, 20 Apr 2019 03:29:18 +0800 Subject: [PATCH 183/780] =?UTF-8?q?074-week1=20=E7=AC=AC=E4=B8=80=E5=91=A8?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_74/LeetCode_50_74.java | 23 +++++++++++++++++++++++ Week_01/id_74/LeetCode_83_74.java | 22 ++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Week_01/id_74/LeetCode_50_74.java create mode 100644 Week_01/id_74/LeetCode_83_74.java diff --git a/Week_01/id_74/LeetCode_50_74.java b/Week_01/id_74/LeetCode_50_74.java new file mode 100644 index 00000000..627a0c6f --- /dev/null +++ b/Week_01/id_74/LeetCode_50_74.java @@ -0,0 +1,23 @@ +class Solution { + public double myPow(double x, int n) { + if (n < 0) { + return pow(1 / x, -n); + } + return pow(x, n); + } + + public double pow(double x, long n) { + if (n == 0) { + return 1; + } + if (n == 1) { + return x; + } + double result = pow(x, n / 2); + if (n % 2 == 0) { + return result * result; + } else { + return result * result * x; + } + } +} \ No newline at end of file diff --git a/Week_01/id_74/LeetCode_83_74.java b/Week_01/id_74/LeetCode_83_74.java new file mode 100644 index 00000000..f3bf6c41 --- /dev/null +++ b/Week_01/id_74/LeetCode_83_74.java @@ -0,0 +1,22 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + if (head == null) return null; + ListNode result = head; + while (head.next != null) { + if (head.val == head.next.val) { + head.next = head.next.next; + } else { + head = head.next; + } + } + return result; + } +} \ No newline at end of file From 7e950a35cb4620815687ea555e9987550deb1590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E5=BB=BA?= Date: Sat, 20 Apr 2019 03:35:28 +0800 Subject: [PATCH 184/780] Fixed --- ...{LeetCode_21_117.md => LeetCode_21_117.go} | 16 +++++----- Week_01/id_117/LeetCode_21_117_test.go | 26 ++++++++++++++++ Week_01/id_117/LeetCode_83_117.go | 30 ++++++++++++++++++ Week_01/id_117/LeetCode_83_117.md | 31 ------------------- Week_01/id_117/LeetCode_83_117_test.go | 17 ++++++++++ 5 files changed, 80 insertions(+), 40 deletions(-) rename Week_01/id_117/{LeetCode_21_117.md => LeetCode_21_117.go} (76%) create mode 100644 Week_01/id_117/LeetCode_21_117_test.go create mode 100644 Week_01/id_117/LeetCode_83_117.go delete mode 100644 Week_01/id_117/LeetCode_83_117.md create mode 100644 Week_01/id_117/LeetCode_83_117_test.go diff --git a/Week_01/id_117/LeetCode_21_117.md b/Week_01/id_117/LeetCode_21_117.go similarity index 76% rename from Week_01/id_117/LeetCode_21_117.md rename to Week_01/id_117/LeetCode_21_117.go index 98dceace..9a0a7793 100644 --- a/Week_01/id_117/LeetCode_21_117.md +++ b/Week_01/id_117/LeetCode_21_117.go @@ -1,11 +1,10 @@ -```go -/** - * Definition for singly-linked list. - * type ListNode struct { - * Val int - * Next *ListNode - * } - */ +package solution + +type ListNode struct { + Val int + Next *ListNode +} + func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { res := &ListNode{} cur := res @@ -31,4 +30,3 @@ func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { } return res.Next } -``` diff --git a/Week_01/id_117/LeetCode_21_117_test.go b/Week_01/id_117/LeetCode_21_117_test.go new file mode 100644 index 00000000..4cb6f2e4 --- /dev/null +++ b/Week_01/id_117/LeetCode_21_117_test.go @@ -0,0 +1,26 @@ +package solution + +import ( + "testing" +) + +func TestLeetCode_21_117(t *testing.T) { + node01 := &ListNode{Val: 1} + node02 := &ListNode{Val: 3} + node03 := &ListNode{Val: 3} + node01.Next = node02 + node02.Next = node03 + + node11 := &ListNode{Val: 1} + node12 := &ListNode{Val: 1} + node13 := &ListNode{Val: 2} + node11.Next = node12 + node12.Next = node13 + + newNode := mergeTwoLists(node01, node11) + temNode := newNode + for temNode != nil { + t.Log(temNode.Val) + temNode = temNode.Next + } +} diff --git a/Week_01/id_117/LeetCode_83_117.go b/Week_01/id_117/LeetCode_83_117.go new file mode 100644 index 00000000..5f1e6aae --- /dev/null +++ b/Week_01/id_117/LeetCode_83_117.go @@ -0,0 +1,30 @@ +package solution + +/** + * Definition for singly-linked list. + * type ListNode struct { + * Val int + * Next *ListNode + * } + */ +func deleteDuplicates(head *ListNode) *ListNode { + if head == nil { + return head + } + if head.Next == nil { + return head + } + p := head + q := p.Next + for q != nil { + if p.Val == q.Val { + p.Next = q.Next + q = p.Next + continue + } + p = p.Next + q = p.Next + + } + return head +} diff --git a/Week_01/id_117/LeetCode_83_117.md b/Week_01/id_117/LeetCode_83_117.md deleted file mode 100644 index f1b1a95c..00000000 --- a/Week_01/id_117/LeetCode_83_117.md +++ /dev/null @@ -1,31 +0,0 @@ -```go -/** - * Definition for singly-linked list. - * type ListNode struct { - * Val int - * Next *ListNode - * } - */ -func deleteDuplicates(head *ListNode) *ListNode { - if head==nil{ - return head - } - if head.Next==nil{ - return head - } - p:=head - q:=p.Next - for q!=nil{ - if p.Val==q.Val{ - p.Next=q.Next - q=p.Next - continue - } - p=p.Next - q=p.Next - - } - return head -} - -``` diff --git a/Week_01/id_117/LeetCode_83_117_test.go b/Week_01/id_117/LeetCode_83_117_test.go new file mode 100644 index 00000000..1939429d --- /dev/null +++ b/Week_01/id_117/LeetCode_83_117_test.go @@ -0,0 +1,17 @@ +package solution + +import "testing" + +func TestLeetCode_83_117(t *testing.T) { + node01 := &ListNode{Val: 1} + node02 := &ListNode{Val: 3} + node03 := &ListNode{Val: 3} + node01.Next = node02 + node02.Next = node03 + newNode := deleteDuplicates(node01) + temNode := newNode + for temNode != nil { + t.Log(temNode.Val) + temNode = temNode.Next + } +} From 73e0891daf2f5d1a103e61c176eda1233f67131e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E5=BB=BA?= Date: Sat, 20 Apr 2019 03:49:14 +0800 Subject: [PATCH 185/780] Beautify code --- Week_01/id_117/LeetCode_21_117_test.go | 14 +++++++++++++- Week_01/id_117/LeetCode_83_117_test.go | 16 +++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Week_01/id_117/LeetCode_21_117_test.go b/Week_01/id_117/LeetCode_21_117_test.go index 4cb6f2e4..383dd227 100644 --- a/Week_01/id_117/LeetCode_21_117_test.go +++ b/Week_01/id_117/LeetCode_21_117_test.go @@ -19,8 +19,20 @@ func TestLeetCode_21_117(t *testing.T) { newNode := mergeTwoLists(node01, node11) temNode := newNode + rights := []int{1, 1, 1, 2, 3, 3} + news := []int{} for temNode != nil { - t.Log(temNode.Val) + news = append(news, temNode.Val) temNode = temNode.Next } + if len(rights) != len(news) { + t.Fatalf("False") + } + for i := 0; i < len(rights); i++ { + if news[i] != rights[i] { + t.Fatalf("False") + break + } + } + t.Log("True") } diff --git a/Week_01/id_117/LeetCode_83_117_test.go b/Week_01/id_117/LeetCode_83_117_test.go index 1939429d..8350ad1f 100644 --- a/Week_01/id_117/LeetCode_83_117_test.go +++ b/Week_01/id_117/LeetCode_83_117_test.go @@ -10,8 +10,22 @@ func TestLeetCode_83_117(t *testing.T) { node02.Next = node03 newNode := deleteDuplicates(node01) temNode := newNode + + rights := []int{1, 3} + news := []int{} + for temNode != nil { - t.Log(temNode.Val) + news = append(news, temNode.Val) temNode = temNode.Next } + if len(rights) != len(news) { + t.Fatalf("False") + } + for i := 0; i < len(rights); i++ { + if news[i] != rights[i] { + t.Fatalf("False") + break + } + } + t.Log("True") } From 460cb25f768c3ade79f2a2872eac84e82dc24ac4 Mon Sep 17 00:00:00 2001 From: Xusong Yuan Date: Sat, 20 Apr 2019 07:45:13 +0800 Subject: [PATCH 186/780] add first week assginment --- Week_01/id_44/LeetCode_142_044.java | 32 +++++++++++++++++++++++++++++ Week_01/id_44/LeetCode_441_044.java | 22 ++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 Week_01/id_44/LeetCode_142_044.java create mode 100644 Week_01/id_44/LeetCode_441_044.java diff --git a/Week_01/id_44/LeetCode_142_044.java b/Week_01/id_44/LeetCode_142_044.java new file mode 100644 index 00000000..38151428 --- /dev/null +++ b/Week_01/id_44/LeetCode_142_044.java @@ -0,0 +1,32 @@ +public class LeetCode_142_044 { + public ListNode Solution(ListNode head) { + if (head == null || head.next == null) + return null; + ListNode fast = head; + ListNode slow = head; + + while (fast != null && fast.next != null) { + slow = slow.next; + fast = fast.next.next; + if (fast == slow) { + ListNode find = head; + while (find != slow) { + find = find.next; + slow = slow.next; + } + return find; + } + } + return null; + } +} + +class ListNode { + int val; + ListNode next; + + ListNode(int x) { + val = x; + next = null; + } +} diff --git a/Week_01/id_44/LeetCode_441_044.java b/Week_01/id_44/LeetCode_441_044.java new file mode 100644 index 00000000..6cf6c71e --- /dev/null +++ b/Week_01/id_44/LeetCode_441_044.java @@ -0,0 +1,22 @@ +public class LeetCode_441_044 { + public int solution(int n) { + int i = 1; + int sub = n; + int res = 0; + for (i = 1; i <= n; i++) { + sub = sub - i; + if (sub - (i + 1) < 0) { + res = i; + break; + } + if (sub - (i + 1) == 0) { + res = i + 1; + break; + } + if (sub - (i + 1) > 0) { + continue; + } + } + return res; + } +} From b76542c521507713894717a5ad8b7bfe8a95b52d Mon Sep 17 00:00:00 2001 From: wangfan Date: Sat, 20 Apr 2019 08:38:07 +0800 Subject: [PATCH 187/780] add list --- Week_01/id_57/leetcode_21_057.cpp | 53 +++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Week_01/id_57/leetcode_21_057.cpp diff --git a/Week_01/id_57/leetcode_21_057.cpp b/Week_01/id_57/leetcode_21_057.cpp new file mode 100644 index 00000000..fddc37bf --- /dev/null +++ b/Week_01/id_57/leetcode_21_057.cpp @@ -0,0 +1,53 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +// 递归方法 +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + if (l1 == NULL) return l2; + if (l2 == NULL) return l1; + if (l1->val < l2->val) + { + l1->next = mergeTwoLists(l1->next,l2); + return l1; + } + else + { + l2->next = mergeTwoLists(l1,l2->next); + return l2; + } + + } +}; + +// 二级指针方法 +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + ListNode *head = NULL; + ListNode **pCur = &head; + while(l1 !=NULL && l2 != NULL) + { + if(l1->val < l2->val) + { + *pCur = l1; + l1 = l1->next; + } + else + { + *pCur = l2; + l2 = l2->next; + } + pCur = &(*pCur)->next; + } + *pCur = (l1 != NULL ? l1 : l2); + return head; + + } +}; \ No newline at end of file From 1d996ec0d35e077bf9bb3b409f868a0662b52bef Mon Sep 17 00:00:00 2001 From: pangyanhao Date: Sat, 20 Apr 2019 09:17:31 +0800 Subject: [PATCH 188/780] =?UTF-8?q?=E7=AC=AC2=E9=A2=98=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_9/LeetCode_687_9.cs | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Week_01/id_9/LeetCode_687_9.cs diff --git a/Week_01/id_9/LeetCode_687_9.cs b/Week_01/id_9/LeetCode_687_9.cs new file mode 100644 index 00000000..fac95331 --- /dev/null +++ b/Week_01/id_9/LeetCode_687_9.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProblemSolutions +{ + public class Problem687 : IProblem + { + public class TreeNode + { + public int val; + public TreeNode left; + public TreeNode right; + public TreeNode(int x) { val = x; } + } + + public void RunProblem() + { + throw new NotImplementedException(); + } + + public int LongestUnivaluePath(TreeNode root) + { + /* + * 树的遍历,使用的是“根、左、右”的方式; + * 遍历过程中,有两个职责: + * 1.左右节点和自己同值,那么加起来和最大长度比较一下; + * 2.若节点的值,与父节点的值相同,那么就把左右子树最大的值,再加上自己的值,返回给父节点; + * + * 时间复杂度:就是把树遍历了一遍,顺便做了比较,所以是O(n); + * 空间复杂度:O(1); + */ + + if (root == null) return 0; + TreeSearch(root, root.val); + return maxL; + } + + private int maxL = int.MinValue; + + /// + /// 二叉树遍历求值 + /// + /// 子节点 + /// 父节点的值 + /// 与父节点值相同的节点个数 + private int TreeSearch(TreeNode sonNode, int val) + { + if (sonNode == null) return 0; + + //左右节点和自己同值,那么加起来和最大长度比较一下; + var leftCount = TreeSearch(sonNode.left, sonNode.val); + var rightCount = TreeSearch(sonNode.right, sonNode.val); + maxL = Math.Max(leftCount + rightCount, maxL); + + //若节点的值,与父节点的值相同,那么就把左右子树最大的值,再加上自己的值,返回给父节点; + if (sonNode.val == val) return Math.Max(leftCount, rightCount) + 1; + + return 0; + } + } +} From eeb88f42a98c015a99763e8f53504abf127e46c3 Mon Sep 17 00:00:00 2001 From: pangyanhao Date: Sat, 20 Apr 2019 09:24:52 +0800 Subject: [PATCH 189/780] =?UTF-8?q?=E7=AC=94=E8=AE=B0=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_9/NOTE.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Week_01/id_9/NOTE.md b/Week_01/id_9/NOTE.md index c684e62f..109d61f7 100644 --- a/Week_01/id_9/NOTE.md +++ b/Week_01/id_9/NOTE.md @@ -1 +1,4 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +1. 算法的知识点有很多,要掌握他们,最好的办法是各个击破,也就是说针对每个知识点,每次做大量的题,总结和体会;最怕的是,每个知识点浅尝辄止,初学的时候,每天都做跨多个知识点的题目; +2. 算法的难易,考验的是对这个知识点的掌握程度,体会理解越深越简单,本次做了一个树的题目,题目难易度是“简单”,可我却觉得异常困难,原因其实是,树的题目,我基本没练习过,基础不牢导致; +3. 以上是本周做题总结出来的,现在打算每周单独练习各个知识点,知道掌握和熟悉; \ No newline at end of file From 3d7bfe7dfa3f7d2440add1b91e0e9204cb7d88ce Mon Sep 17 00:00:00 2001 From: yuanxiao Date: Sat, 20 Apr 2019 09:42:07 +0800 Subject: [PATCH 190/780] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_95/DeleteDuplicateValues.py | 27 ++++++++++++++++++++++ Week_01/id_95/sortArrayByParity.py | 32 ++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 Week_01/id_95/DeleteDuplicateValues.py create mode 100644 Week_01/id_95/sortArrayByParity.py diff --git a/Week_01/id_95/DeleteDuplicateValues.py b/Week_01/id_95/DeleteDuplicateValues.py new file mode 100644 index 00000000..3572c1d4 --- /dev/null +++ b/Week_01/id_95/DeleteDuplicateValues.py @@ -0,0 +1,27 @@ +# Definition for singly-linked list. +class ListNode(object): + + def __init__(self, x): + self.val = x + self.next = None + + +class Solution(object): + + def deleteDuplicates(self, head): + + current = head + if current is None: + return head + while current.next is not None: + if current.val == current.next.val: + if current.next.next is not None: + current.next = current.next.next + # current = current.next + else: + current.next = None + else: + current = current.next + return head + + diff --git a/Week_01/id_95/sortArrayByParity.py b/Week_01/id_95/sortArrayByParity.py new file mode 100644 index 00000000..584e5359 --- /dev/null +++ b/Week_01/id_95/sortArrayByParity.py @@ -0,0 +1,32 @@ +class Solution(object): + def sortArrayByParity(self, A): + left = 0 + right = len(A)-1 + middle = int((right+left)/2) + print ("中间值",middle) + while(left Date: Sat, 20 Apr 2019 09:49:27 +0800 Subject: [PATCH 191/780] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E4=BD=8D=E7=BD=AE=E5=88=B094=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/{id_95 => id_94}/DeleteDuplicateValues.py | 0 Week_01/{id_95 => id_94}/sortArrayByParity.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Week_01/{id_95 => id_94}/DeleteDuplicateValues.py (100%) rename Week_01/{id_95 => id_94}/sortArrayByParity.py (100%) diff --git a/Week_01/id_95/DeleteDuplicateValues.py b/Week_01/id_94/DeleteDuplicateValues.py similarity index 100% rename from Week_01/id_95/DeleteDuplicateValues.py rename to Week_01/id_94/DeleteDuplicateValues.py diff --git a/Week_01/id_95/sortArrayByParity.py b/Week_01/id_94/sortArrayByParity.py similarity index 100% rename from Week_01/id_95/sortArrayByParity.py rename to Week_01/id_94/sortArrayByParity.py From 8ca77b1ec7861c7c85862956b6d6e8477a0e0926 Mon Sep 17 00:00:00 2001 From: Yimeng Chen Date: Sat, 20 Apr 2019 10:31:56 +0800 Subject: [PATCH 192/780] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_128/{21.go => LeetCode_21_128.go} | 0 Week_01/id_128/{905.go => LeetCode_905_128.go} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_128/{21.go => LeetCode_21_128.go} (100%) rename Week_01/id_128/{905.go => LeetCode_905_128.go} (100%) diff --git a/Week_01/id_128/21.go b/Week_01/id_128/LeetCode_21_128.go similarity index 100% rename from Week_01/id_128/21.go rename to Week_01/id_128/LeetCode_21_128.go diff --git a/Week_01/id_128/905.go b/Week_01/id_128/LeetCode_905_128.go similarity index 100% rename from Week_01/id_128/905.go rename to Week_01/id_128/LeetCode_905_128.go From 15510db94225697a25a96b31aa666fc5d7292dad Mon Sep 17 00:00:00 2001 From: suke Date: Sat, 20 Apr 2019 10:33:00 +0800 Subject: [PATCH 193/780] week01 --- Week_01/id_121/LeetCode_21_121.java | 31 +++++++++++++++++++++++++++++ Week_01/id_121/LeetCode_83_121.java | 21 +++++++++++++++++++ Week_01/id_121/NOTE.md | 7 ++++++- 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_121/LeetCode_21_121.java create mode 100644 Week_01/id_121/LeetCode_83_121.java diff --git a/Week_01/id_121/LeetCode_21_121.java b/Week_01/id_121/LeetCode_21_121.java new file mode 100644 index 00000000..809f5a82 --- /dev/null +++ b/Week_01/id_121/LeetCode_21_121.java @@ -0,0 +1,31 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + ListNode head = new ListNode(0); + ListNode pos = head; + while(l1 != null && l2 != null){ + if(l1.val <= l2.val){ + pos.next = l1; + l1 = l1.next; + }else{ + pos.next = l2; + l2 = l2.next; + } + pos = pos.next; + } + if(l1 == null && l2 != null){ + pos.next = l2; + }else if(l1 != null && l2 == null){ + pos.next = l1; + } + return head.next; + + } +} \ No newline at end of file diff --git a/Week_01/id_121/LeetCode_83_121.java b/Week_01/id_121/LeetCode_83_121.java new file mode 100644 index 00000000..651de673 --- /dev/null +++ b/Week_01/id_121/LeetCode_83_121.java @@ -0,0 +1,21 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + ListNode cur = head; + while(cur != null && cur.next != null){ + if(cur.val == cur.next.val){ + cur.next = cur.next.next; + }else{ + cur = cur.next; + } + } + return head; + } +} \ No newline at end of file diff --git a/Week_01/id_121/NOTE.md b/Week_01/id_121/NOTE.md index c684e62f..19f0c1e0 100644 --- a/Week_01/id_121/NOTE.md +++ b/Week_01/id_121/NOTE.md @@ -1 +1,6 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 + +## week01 + - 做题之前先看清楚题目条件,并且要充分利用已知条件 + - 写完代码要代入几个边界条件的case 去测试一下 + - 有条件一定要画图,帮助自己思考 \ No newline at end of file From e7f1449721689b2e50f13596fba534bd86d57512 Mon Sep 17 00:00:00 2001 From: YulongZ Date: Sat, 20 Apr 2019 11:15:54 +0800 Subject: [PATCH 194/780] week01 simple solution --- Week_01/id_67/LeetCode_20_67.java | 22 +++++++++++++++++ Week_01/id_67/LeetCode_21_67.java | 36 +++++++++++++++++++++++++++ Week_01/id_67/LeetCode_242_67.java | 18 ++++++++++++++ Week_01/id_67/LeetCode_441_67.java | 33 +++++++++++++++++++++++++ Week_01/id_67/LeetCode_687_67.java | 39 ++++++++++++++++++++++++++++++ Week_01/id_67/LeetCode_83_67.java | 23 ++++++++++++++++++ Week_01/id_67/LeetCode_905_67.java | 32 ++++++++++++++++++++++++ Week_01/id_67/LeetCode_922_67.java | 19 +++++++++++++++ 8 files changed, 222 insertions(+) create mode 100644 Week_01/id_67/LeetCode_20_67.java create mode 100644 Week_01/id_67/LeetCode_21_67.java create mode 100644 Week_01/id_67/LeetCode_242_67.java create mode 100644 Week_01/id_67/LeetCode_441_67.java create mode 100644 Week_01/id_67/LeetCode_687_67.java create mode 100644 Week_01/id_67/LeetCode_83_67.java create mode 100644 Week_01/id_67/LeetCode_905_67.java create mode 100644 Week_01/id_67/LeetCode_922_67.java diff --git a/Week_01/id_67/LeetCode_20_67.java b/Week_01/id_67/LeetCode_20_67.java new file mode 100644 index 00000000..a3ecd5b4 --- /dev/null +++ b/Week_01/id_67/LeetCode_20_67.java @@ -0,0 +1,22 @@ +class Solution { + public boolean isValid(String s) { + Stack stack = new Stack<>(); + char[] chars = s.toCharArray(); + for (char aChar : chars) { + if (stack.size() == 0) { + stack.push(aChar); + } else if (isSym(stack.peek(), aChar)) { + stack.pop(); + } else { + stack.push(aChar); + } + } + return stack.size() == 0; + } + + private boolean isSym(char c1, char c2) { + return (c1 == '(' && c2 == ')') + || (c1 == '[' && c2 == ']') + || (c1 == '{' && c2 == '}'); + } +} \ No newline at end of file diff --git a/Week_01/id_67/LeetCode_21_67.java b/Week_01/id_67/LeetCode_21_67.java new file mode 100644 index 00000000..38dbcc52 --- /dev/null +++ b/Week_01/id_67/LeetCode_21_67.java @@ -0,0 +1,36 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if (l1 == null) return l2; + if (l2 == null) return l1; + + ListNode header = new ListNode(0); + ListNode point = header; + + while (l1 != null && l2 != null) { + if (l1.val <= l2.val) { + point.next = l1; + l1 = l1.next; + } else { + point.next = l2; + l2 = l2.next; + } + point = point.next; + } + if (l1 != null) { + point.next = l1; + } + if (l2 != null) { + point.next = l2; + } + return header.next; + + } +} \ No newline at end of file diff --git a/Week_01/id_67/LeetCode_242_67.java b/Week_01/id_67/LeetCode_242_67.java new file mode 100644 index 00000000..99973511 --- /dev/null +++ b/Week_01/id_67/LeetCode_242_67.java @@ -0,0 +1,18 @@ +class Solution { + public boolean isAnagram(String s, String t) { + int[] x =new int[26]; + + for(char schar: s.toCharArray()){ + x[schar-'a']++; + } + for(char tchar: t.toCharArray()){ + x[tchar-'a']--; + } + for(int i=0;i<26;i++){ + if (x[i] != 0){ + return false; + } + } + return true; + } +} \ No newline at end of file diff --git a/Week_01/id_67/LeetCode_441_67.java b/Week_01/id_67/LeetCode_441_67.java new file mode 100644 index 00000000..21755440 --- /dev/null +++ b/Week_01/id_67/LeetCode_441_67.java @@ -0,0 +1,33 @@ +class Solution { + public int arrangeCoins(int n) { + long start = 0, end = (long) n / 2 + 1, mid; + while (end - start > 1) { + mid = (start + end) >>> 1; + if (mid * (mid + 1) == (long) 2 * n) { + return (int) mid; + } else if (mid * (mid + 1) <= (long) 2 * n) { + start = mid; + } else { + end = mid; + } + } + return (end * (end + 1) == (long) 2 * n) ? (int) end : (int) start; + } + + + public int arrangeCoins2(int n) { + if(n == 0) return 0; + int i=0; + while(n>i){ + + ++i; + n-=i; + } + return i; + } + + public int arrangeCoins3(int n) { + return (int) (Math.sqrt((double) 2*n+0.5)-0.5); + } + +} \ No newline at end of file diff --git a/Week_01/id_67/LeetCode_687_67.java b/Week_01/id_67/LeetCode_687_67.java new file mode 100644 index 00000000..7076f04c --- /dev/null +++ b/Week_01/id_67/LeetCode_687_67.java @@ -0,0 +1,39 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +class Solution { + int sum; + + public int longestUnivaluePath(TreeNode root) { + sum = 0; + childLength(root); + return sum; + } + + public int childLength(TreeNode node) { + if (node == null) return 0; + int LeftChildLength = childLength(node.left); + int RightChildLength = childLength(node.right); + int LeftLength; + int RightLength; + if(node.left != null && node.left.val == node.val){ + LeftLength = LeftChildLength + 1; + }else { + LeftLength = 0; + } + if(node.right !=null && node.right.val == node.val){ + RightLength = RightChildLength + 1; + }else{ + RightLength = 0; + } + + sum = Math.max(sum, LeftLength + RightLength); + return Math.max(LeftLength, RightLength); + } +} \ No newline at end of file diff --git a/Week_01/id_67/LeetCode_83_67.java b/Week_01/id_67/LeetCode_83_67.java new file mode 100644 index 00000000..dce74444 --- /dev/null +++ b/Week_01/id_67/LeetCode_83_67.java @@ -0,0 +1,23 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + if (head == null) return head; + ListNode header = new ListNode(0); + header.next = head; + while (head.next != null) { + if (head.val == head.next.val) { + head.next = head.next.next; + }else { + head = head.next; + } + } + return header.next; + } +} \ No newline at end of file diff --git a/Week_01/id_67/LeetCode_905_67.java b/Week_01/id_67/LeetCode_905_67.java new file mode 100644 index 00000000..e08c438b --- /dev/null +++ b/Week_01/id_67/LeetCode_905_67.java @@ -0,0 +1,32 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + for (int i = 0, j = A.length - 1; i < j; ) { + if (!isOdd(A[i])) { + if (isOdd(A[j])) {//i偶j奇 + ++i; + --j; + } else {//i偶j偶 + ++i; + } + } else { + if (isOdd(A[j])) {//i奇j奇 + --j; + } else {//i奇j偶 + int tmp = A[j]; + A[j] = A[i]; + A[i] = tmp; + } + } + } + return A; + } + + public boolean isOdd(int number) { + if (number % 2 == 0) { + return false; + } else { + return true; + } + } + +} \ No newline at end of file diff --git a/Week_01/id_67/LeetCode_922_67.java b/Week_01/id_67/LeetCode_922_67.java new file mode 100644 index 00000000..37dbc719 --- /dev/null +++ b/Week_01/id_67/LeetCode_922_67.java @@ -0,0 +1,19 @@ +class Solution { + public int[] sortArrayByParityII(int[] A) { + int length = A.length; + int i=0,j=1; + while(i < length){ + if(A[i] % 2 == 0){ + i+=2; + }else { + while(A[j] %2 != 0){ + j+=2; + } + int tmp = A[i]; + A[i] = A[j]; + A[j] = tmp; + } + } + return A; + } +} \ No newline at end of file From 6947409897c4c5ab757ec32bbc3c1260d220eb7f Mon Sep 17 00:00:00 2001 From: Herman <416710685@qq.com> Date: Sat, 20 Apr 2019 11:29:14 +0800 Subject: [PATCH 195/780] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E7=9A=84=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_88/Leetcode_020_088.cpp | 61 ++++++++++++++++++++++++ Week_01/id_88/Leetcode_021_088.cpp | 76 ++++++++++++++++++++++++++++++ Week_01/id_88/Leetcode_024_088.cpp | 41 ++++++++++++++++ Week_01/id_88/Leetcode_083_088.cpp | 41 ++++++++++++++++ Week_01/id_88/Leetcode_687_088.cpp | 54 +++++++++++++++++++++ Week_01/id_88/Leetcode_905_088.cpp | 50 ++++++++++++++++++++ Week_01/id_88/Leetcode_922_088.cpp | 66 ++++++++++++++++++++++++++ Week_01/id_88/NOTE.md | 5 +- 8 files changed, 393 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_88/Leetcode_020_088.cpp create mode 100644 Week_01/id_88/Leetcode_021_088.cpp create mode 100644 Week_01/id_88/Leetcode_024_088.cpp create mode 100644 Week_01/id_88/Leetcode_083_088.cpp create mode 100644 Week_01/id_88/Leetcode_687_088.cpp create mode 100644 Week_01/id_88/Leetcode_905_088.cpp create mode 100644 Week_01/id_88/Leetcode_922_088.cpp diff --git a/Week_01/id_88/Leetcode_020_088.cpp b/Week_01/id_88/Leetcode_020_088.cpp new file mode 100644 index 00000000..5cf7fb3d --- /dev/null +++ b/Week_01/id_88/Leetcode_020_088.cpp @@ -0,0 +1,61 @@ +/* +* 解题思路:建立一个栈,遍历输入的符号串,当遇到'(' '{' '['符号时则进栈, +* 若出现')' '}' ']'时,则从栈中取出一个符号,如果为该右括号的左括号,则表示成功。 +* +*/ + +class Solution { +private: + vector opStack; +public: + bool isValid(string s) { + string::iterator itr = s.begin(); + for (; itr != s.end(); itr++) + { + char temp = *itr; + if (temp == '(' || temp == '{' || temp == '[') + { + opStack.push_back(temp); + } + else if (temp == ')' || temp == '}' || temp == ']') + { + if (!bMatchWithOpStack(temp)) + return false; + else + opStack.pop_back(); + } + } + //如果遍历完字符串后,opStack仍然有未匹配的符号,则表示错误。 + if(!opStack.empty()) return false; + + return true; + } + + bool bMatchWithOpStack(char op) + { + bool ret = false; + //如果opStack为空,表示没有符号与op匹配,返回错误 + if(opStack.empty()) return ret; + + char temp = opStack.back(); + + switch (op) + { + case ')': + if (temp == '(') ret = true; + break; + + case '}': + if (temp == '{') ret = true; + break; + + case ']': + if (temp == '[') ret = true; + break; + default: + break; + } + + return ret; + } +}; \ No newline at end of file diff --git a/Week_01/id_88/Leetcode_021_088.cpp b/Week_01/id_88/Leetcode_021_088.cpp new file mode 100644 index 00000000..90fca21d --- /dev/null +++ b/Week_01/id_88/Leetcode_021_088.cpp @@ -0,0 +1,76 @@ +/* +* 解题思路:建立两个临时指针指向两个链表头,开始遍历,比较当前指针的val值,取小的元素插入到新的链表中即可。 +* +* +*/ + + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +private: + //将节点取出来放到新的链表上,这样处理起来会更容易 + ListNode* newListHead; + ListNode* pNewListCur; + +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + ListNode* pl1 = l1; + ListNode* pl2 = l2; + newListHead = NULL; + pNewListCur = NULL; + + if (l1 == NULL && l2 == NULL) + { + return NULL; + } + + if (l1 == NULL || l2 == NULL) + { + return (l1 == NULL) ? l2 : l1; + } + + while (pl1 != NULL && pl2 != NULL) + { + //把小的取出来插入到新链表中 + if (pl1->val <= pl2->val) + { + InsertToNewList(pl1); + pl1 = pl1->next; + } + else + { + InsertToNewList(pl2); + pl2 = pl2->next; + } + } + + if (pl1 == NULL) + pNewListCur->next = pl2; + else + pNewListCur->next = pl1; + + return newListHead; + + } + + void InsertToNewList(ListNode* node) + { + if (node == NULL) return; + + if (newListHead == NULL) + { + pNewListCur = newListHead = node; + } + else { + pNewListCur->next = node; + pNewListCur = pNewListCur->next; + } + } +}; \ No newline at end of file diff --git a/Week_01/id_88/Leetcode_024_088.cpp b/Week_01/id_88/Leetcode_024_088.cpp new file mode 100644 index 00000000..fe650a59 --- /dev/null +++ b/Week_01/id_88/Leetcode_024_088.cpp @@ -0,0 +1,41 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* swapPairs(ListNode* head) { + ListNode* pFirst = head; + ListNode* pSecond = NULL; + ListNode* pNewListCur = NULL; + + if (head == NULL) return NULL; + + while (pFirst != NULL && pFirst->next != NULL) + { + pSecond = pFirst->next; + + pFirst->next = pSecond->next; + pSecond->next = pFirst; + + if (head == pFirst) + { + pNewListCur = head = pSecond; + } + else + { + pNewListCur->next = pSecond; + } + + pFirst = pFirst->next; + + pNewListCur = pSecond->next; + } + + return head; + } +}; \ No newline at end of file diff --git a/Week_01/id_88/Leetcode_083_088.cpp b/Week_01/id_88/Leetcode_083_088.cpp new file mode 100644 index 00000000..d6605f3f --- /dev/null +++ b/Week_01/id_88/Leetcode_083_088.cpp @@ -0,0 +1,41 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + ListNode* pre = head; + ListNode* cur = head; + int val = 0; + + if (NULL == head) + { + return NULL; + } + + val = cur->val; + + while (cur->next != NULL) + { + cur = cur->next; + if (val == cur->val) + { + pre->next = cur->next; + delete(cur); + cur = pre; + } + else + { + val = cur->val; + pre = cur; + } + } + + return head; + } +}; \ No newline at end of file diff --git a/Week_01/id_88/Leetcode_687_088.cpp b/Week_01/id_88/Leetcode_687_088.cpp new file mode 100644 index 00000000..c90d4988 --- /dev/null +++ b/Week_01/id_88/Leetcode_687_088.cpp @@ -0,0 +1,54 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode(int x) : val(x), left(NULL), right(NULL) {} + * }; + */ + +//#关于第687题的思路,采取自下而上的递归策略会更易理解,也就是采用后序遍历的方法。 +//另外,切勿被题目定义的函数影响了,应自行定义一个递归的函数,否则容易陷入思维死角。 +class Solution { +public: + int longestUnivaluePath(TreeNode* root) { + int max = 0; + + getMaxPath(root, max); + + return max; + } + +private: + //函数的返回值为左右子树的同值路径的边数的最大值,max参数保存的是整棵树最大的同值路径 + int getMaxPath(TreeNode* root, int& max) { + if (root == NULL) return 0; + + if (root->left == NULL && root->right == NULL) + { + return 0; + } + + //先遍历左子树,再遍历右子树,再处理root,相当于是后序遍历 + int retLeft = getMaxPath(root->left, max); + int retRight = getMaxPath(root->right, max); + + int left = 0; + if (root->left != NULL && root->val == root->left->val) + { + left = retLeft + 1; + } + + int right = 0; + if (root->right != NULL && root->val == root->right->val) + { + right = retRight + 1; + } + + //计算max的时候需要左右值相加 + max = (max > (right + left)) ? max : (right + left); + + return (right > left) ? right : left; + } +}; \ No newline at end of file diff --git a/Week_01/id_88/Leetcode_905_088.cpp b/Week_01/id_88/Leetcode_905_088.cpp new file mode 100644 index 00000000..3a544f2b --- /dev/null +++ b/Week_01/id_88/Leetcode_905_088.cpp @@ -0,0 +1,50 @@ +/* +* 解题思路:分别用head tail指向首尾两个元素,从首尾两个元素开始, +* (1)如果头元素为奇数,尾元素为偶数,则两数交换,head指向下一个元素,tail指向上一个元素 +* (2)如果头元素为奇数,尾元素为奇数,则head不动,tail指向上一个元素 +* (3)如果头元素为偶数,尾元素为偶数,则head指向下一个元素,tail不动 +* (4)如果头元素为偶数,尾元素为奇数,则head指向下一个元素,tail指向上一个元素 +* 直到head>=tail +* +*/ + +class Solution { +public: + vector sortArrayByParity(vector& A) { + int head = 0; + int tail = A.size() - 1; + int tmp = 0; + + while (head < tail) + { + if (A.at(head) % 2 != 0) + { + if (A.at(tail) % 2 == 0) + { + tmp = A.at(head); + A.at(head) = A.at(tail); + A.at(tail) = tmp; + head++; + tail--; + } + else + { + tail--; + } + } + else + { + if (A.at(tail) % 2 == 0) + { + head++; + } + else + { + head++; + tail--; + } + } + } + return A; + } +}; \ No newline at end of file diff --git a/Week_01/id_88/Leetcode_922_088.cpp b/Week_01/id_88/Leetcode_922_088.cpp new file mode 100644 index 00000000..04e9cd22 --- /dev/null +++ b/Week_01/id_88/Leetcode_922_088.cpp @@ -0,0 +1,66 @@ +/* +* 解题思路:先遍历一遍数组, +* (1)把下标index为奇数,val为偶数的元素,按照(index,val)插入到链表head1中 +* (2)把下标index为偶数,val为奇数的元素,按照(index,val)插入到链表head2中 +* 按照这两个链表的index和val进行数组值的交换即可 +* +*/ + +class Solution { + +struct ListNode { + int index; + int val; + ListNode *next; + ListNode(int i, int v) : index(i),val(v),next(NULL) {} +}; +public: + vector sortArrayByParityII(vector& A) { + int index = 0; + ListNode* head1 = NULL; + ListNode* head2 = NULL; + ListNode* pCur1 = NULL; + ListNode* pCur2 = NULL; + + for (int i = 0; i < A.size(); i++) + { + if (i % 2 == 0) + { + if (A.at(i) % 2 != 0) + { + ListNode* newNode = new ListNode(i, A.at(i)); + InsertList(&head1, newNode); + } + } + else + { + if (A.at(i) % 2 == 0) + { + ListNode* newNode = new ListNode(i, A.at(i)); + InsertList(&head2, newNode); + } + } + } + + pCur1 = head1; + pCur2 = head2; + + while (pCur1 != NULL && pCur2 != NULL) + { + A.at(pCur1->index) = pCur2->val; + A.at(pCur2->index) = pCur1->val; + pCur1 = pCur1->next; + pCur2 = pCur2->next; + } + + return A; + + } + +private: + void InsertList(ListNode** head, ListNode* node) + { + node->next = *head; + *head = node; + } +}; \ No newline at end of file diff --git a/Week_01/id_88/NOTE.md b/Week_01/id_88/NOTE.md index c684e62f..c7b04df0 100644 --- a/Week_01/id_88/NOTE.md +++ b/Week_01/id_88/NOTE.md @@ -1 +1,4 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 + +#关于第687题的思路,采取自下而上的递归策略会更易理解,也就是采用后序遍历的方法。另外,切勿被题目定义的函数影响了,应自行定义一个递归的函数,否则容易陷入思维死角。 + From d6a554781311fd00c535828b0464c7a09cf30753 Mon Sep 17 00:00:00 2001 From: suke Date: Sat, 20 Apr 2019 12:05:56 +0800 Subject: [PATCH 196/780] 905 --- Week_01/id_121/LeetCode_905_121.java | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Week_01/id_121/LeetCode_905_121.java diff --git a/Week_01/id_121/LeetCode_905_121.java b/Week_01/id_121/LeetCode_905_121.java new file mode 100644 index 00000000..27a21878 --- /dev/null +++ b/Week_01/id_121/LeetCode_905_121.java @@ -0,0 +1,37 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + if(A == null || A.length < 1 || A.length > 5000){ + return null; + } + int head = 0; + int tail = A.length - 1; + while(head >=0 && tail>= 0 && head < A.length && tail < A.length && head < tail){ + if(!isOdd(A[head]) && isOdd(A[tail])){ + head ++; + tail --; + }else if(isOdd(A[head]) && !isOdd(A[tail])){ + swap(A,head,tail); + head ++; + tail --; + }else if(isOdd(A[head]) && isOdd(A[tail])){ + tail --; + }else if(!isOdd(A[head]) && !isOdd(A[tail])){ + head ++; + } + + } + return A; + } + public void swap(int[] arr,int head,int tail){ + int tmp = arr[head]; + arr[head] = arr[tail]; + arr[tail] = tmp; + } + public boolean isOdd(int a){ + if(a%2 == 1){ //是奇数 + return true; + } + return false; + } + +} \ No newline at end of file From d7be5823ee0a12b7c87577a644b789cf674be2b2 Mon Sep 17 00:00:00 2001 From: wangzhao Date: Sat, 20 Apr 2019 12:15:08 +0800 Subject: [PATCH 197/780] =?UTF-8?q?=E5=AD=A6=E5=8F=B7085=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...dListCycleII.java => LeetCode_142_85.java} | 15 ++- ...ortedFindMin.java => LeetCode_153_85.java} | 5 +- ...ListSortMerge.java => LeetCode_21_85.java} | 7 +- ...ListSwapPairs.java => LeetCode_24_85.java} | 8 +- ...ReverseKGroup.java => LeetCode_25_85.java} | 8 +- Week_01/id_85/LeetCode_324_85.java | 57 +++++++++ Week_01/id_85/LeetCode_33_85.java | 64 ++++++++++ Week_01/id_85/LeetCode_503_85.java | 115 ++++++++++++++++++ Week_01/id_85/LeetCode_50_85.java | 73 +++++++++++ Week_01/id_85/LeetCode_698_85.java | 90 ++++++++++++++ ...kedListDelDup.java => LeetCode_83_85.java} | 11 +- ...SortByParity.java => LeetCode_905_85.java} | 17 +-- Week_01/id_85/NOTE.md | 38 +++++- 13 files changed, 478 insertions(+), 30 deletions(-) rename Week_01/id_85/{LinkedListCycleII.java => LeetCode_142_85.java} (94%) rename Week_01/id_85/{ArraySortedFindMin.java => LeetCode_153_85.java} (95%) rename Week_01/id_85/{LinkedListSortMerge.java => LeetCode_21_85.java} (94%) rename Week_01/id_85/{LinkedListSwapPairs.java => LeetCode_24_85.java} (94%) rename Week_01/id_85/{LinkedListReverseKGroup.java => LeetCode_25_85.java} (95%) create mode 100644 Week_01/id_85/LeetCode_324_85.java create mode 100644 Week_01/id_85/LeetCode_33_85.java create mode 100644 Week_01/id_85/LeetCode_503_85.java create mode 100644 Week_01/id_85/LeetCode_50_85.java create mode 100644 Week_01/id_85/LeetCode_698_85.java rename Week_01/id_85/{LinkedListDelDup.java => LeetCode_83_85.java} (97%) rename Week_01/id_85/{ArraySortByParity.java => LeetCode_905_85.java} (87%) diff --git a/Week_01/id_85/LinkedListCycleII.java b/Week_01/id_85/LeetCode_142_85.java similarity index 94% rename from Week_01/id_85/LinkedListCycleII.java rename to Week_01/id_85/LeetCode_142_85.java index d5391f87..4564d984 100644 --- a/Week_01/id_85/LinkedListCycleII.java +++ b/Week_01/id_85/LeetCode_142_85.java @@ -1,8 +1,11 @@ import java.util.HashMap; +public class LeetCode_142_85 { + +} /** * @Package: - * @ClassName: LinkedListCycleII + * @ClassName: LeetCode_142_85.LinkedListCycleII * @Description: 给定一个链表,返回链表开始入环的第一个结点。 如果链表无环,则返回 null 难度:中 * @leetCode url : https://leetcode.com/problems/linked-list-cycle-ii/ * @Author: wangzhao @@ -10,8 +13,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class LinkedListCycleII { - +class LinkedListCycleII { /** * @@ -43,9 +45,6 @@ public ListNode detectCycle2(ListNode head) { return null; } - - - return null; } @@ -83,10 +82,10 @@ public static void main(String[] args) { while (node != null&&resultNode!=null) { i++; if (node==resultNode){ - break; + break; } node = node.next; } System.out.println("入环位置:"+i); } -} +} \ No newline at end of file diff --git a/Week_01/id_85/ArraySortedFindMin.java b/Week_01/id_85/LeetCode_153_85.java similarity index 95% rename from Week_01/id_85/ArraySortedFindMin.java rename to Week_01/id_85/LeetCode_153_85.java index 5c92e878..0617c2bc 100644 --- a/Week_01/id_85/ArraySortedFindMin.java +++ b/Week_01/id_85/LeetCode_153_85.java @@ -1,3 +1,6 @@ +public class LeetCode_153_85 { +} + /** * @Package: * @ClassName: ArraySortedFindMin @@ -12,7 +15,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class ArraySortedFindMin { +class ArraySortedFindMin { public int findMin(int[] nums) { diff --git a/Week_01/id_85/LinkedListSortMerge.java b/Week_01/id_85/LeetCode_21_85.java similarity index 94% rename from Week_01/id_85/LinkedListSortMerge.java rename to Week_01/id_85/LeetCode_21_85.java index 37a54d87..70c18117 100644 --- a/Week_01/id_85/LinkedListSortMerge.java +++ b/Week_01/id_85/LeetCode_21_85.java @@ -1,6 +1,9 @@ +public class LeetCode_21_85 { + +} /** * @Package: - * @ClassName: LinkedListSortMerge + * @ClassName: LeetCode_21_85.LinkedListSortMerge * @Description: 有序链表合并为一个新的有序链表 * @leetcode url :https://leetcode.com/problems/merge-two-sorted-lists * @Author: wangzhao @@ -8,7 +11,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class LinkedListSortMerge { +class LinkedListSortMerge { /** diff --git a/Week_01/id_85/LinkedListSwapPairs.java b/Week_01/id_85/LeetCode_24_85.java similarity index 94% rename from Week_01/id_85/LinkedListSwapPairs.java rename to Week_01/id_85/LeetCode_24_85.java index 8136e630..24cb07e8 100644 --- a/Week_01/id_85/LinkedListSwapPairs.java +++ b/Week_01/id_85/LeetCode_24_85.java @@ -1,6 +1,8 @@ +public class LeetCode_24_85 { +} /** * @Package: - * @ClassName: LinkedListSwapPairs + * @ClassName: LeetCode_24_85.LinkedListSwapPairs * @Description: 给定一个链表,两两交换其中相邻的结点 难度:中 * @leetCode url:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ * @Author: wangzhao @@ -8,7 +10,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class LinkedListSwapPairs { +class LinkedListSwapPairs { /** *思路: @@ -67,4 +69,4 @@ public static void main(String[] args) { resultNode = resultNode.next; } } -} +} \ No newline at end of file diff --git a/Week_01/id_85/LinkedListReverseKGroup.java b/Week_01/id_85/LeetCode_25_85.java similarity index 95% rename from Week_01/id_85/LinkedListReverseKGroup.java rename to Week_01/id_85/LeetCode_25_85.java index 8b51a158..2251a34b 100644 --- a/Week_01/id_85/LinkedListReverseKGroup.java +++ b/Week_01/id_85/LeetCode_25_85.java @@ -1,6 +1,8 @@ +public class LeetCode_25_85 { +} /** * @Package: - * @ClassName: LinkedListReverseKGroup + * @ClassName: LeetCode_25_85.LinkedListReverseKGroup * @Description: 给出一个链表,每 k 个结点一组进行翻转,并返回翻转后的链表。 * k 是一个正整数,它的值小于或等于链表的长度。如果结点总数不是 k 的整数倍,那么将最后剩余结点保持原有顺序。 * 难度:困难 @@ -10,7 +12,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class LinkedListReverseKGroup { +class LinkedListReverseKGroup { public ListNode reverseKGroup(ListNode head, int k) { @@ -98,4 +100,4 @@ public static void main(String[] args) { resultNode = resultNode.next; } } -} +} \ No newline at end of file diff --git a/Week_01/id_85/LeetCode_324_85.java b/Week_01/id_85/LeetCode_324_85.java new file mode 100644 index 00000000..fa45aee2 --- /dev/null +++ b/Week_01/id_85/LeetCode_324_85.java @@ -0,0 +1,57 @@ +import java.util.Arrays; + +public class LeetCode_324_85 { +} + +/** + * @Package: + * @ClassName: WiggleSortII + * @Description: ***************************************** + * **************给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。 + * ************** 难度:中 + * @Author: wangzhao + * @Date: 2019-04-20 10:35:56 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +class WiggleSortII { + + public void wiggleSort(int[] nums) { + + if (nums == null) return; + + nums = sort(nums); + int left = nums.length % 2 == 0 ? nums.length / 2 - 1 : nums.length / 2; + int right = nums.length - 1; + int[] _nums = new int[nums.length]; + for (int i = 0; i < _nums.length; i++) { + if (i % 2 == 0) { + _nums[i] = nums[left]; + left--; + } else { + _nums[i] = nums[right]; + right--; + } + } + + for (int i = 0; i < nums.length; i++) { + nums[i] = _nums[i]; + } + Arrays.stream(nums).forEach(i -> System.out.print(i + ",")); + } + + private int[] sort(int[] nums) { + //TODO:自写代码实现排序 + Arrays.sort(nums); + return nums; + } + + + public static void main(String[] args) { + + int[] nums = {1, 1, 2, 1, 2, 2, 1}; + new WiggleSortII().wiggleSort(nums); + + } +} + diff --git a/Week_01/id_85/LeetCode_33_85.java b/Week_01/id_85/LeetCode_33_85.java new file mode 100644 index 00000000..cb3e560b --- /dev/null +++ b/Week_01/id_85/LeetCode_33_85.java @@ -0,0 +1,64 @@ +public class LeetCode_33_85 { +} + +/** + * @Package: + * @ClassName: LeetCode_33_85.ArraySortedSearch + * @Description: ************************************ + * **************假设按照升序排序的数组在预先未知的某个点上进行了旋转。 + * **************( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 + * **************搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 + * **************你可以假设数组中不存在重复的元素。 + * **************算法时间复杂度必须是 O(log n) 级别。 难度:难 + * @leetcode url :https://leetcode-cn.com/problems/search-in-rotated-sorted-array + * @Author: wangzhao + * @Date: 2019-04-17 22:22:56 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +class ArraySortedSearch { + + public int search(int[] nums, int target) { + + if (nums == null || nums.length == 0) { + return -1; + } + if (target == nums[0]) { + return 0; + } + if (target == nums[nums.length - 1]) { + return nums.length - 1; + } + + int left = 0, right = nums.length - 1; + while (left <= right) { + int mid = (right - left) / 2 + left; + if (nums[mid] == target) { + return mid; + } else if (nums[mid] < nums[right]) { + if (nums[mid] < target && nums[right] >= target) { + left = mid + 1; + } else { + right = mid - 1; + } + } else { + if (nums[mid] > target && nums[left] <= target) { + right = mid - 1; + } else { + left = mid + 1; + } + } + } + + return -1; + } + + + public static void main(String[] args) { + int[] nums = {7, 8, 1, 2, 3, 4, 5, 6}; + int target = 2; + + int index = new ArraySortedSearch().search(nums, target); + System.out.println(index); + } +} diff --git a/Week_01/id_85/LeetCode_503_85.java b/Week_01/id_85/LeetCode_503_85.java new file mode 100644 index 00000000..87383ae4 --- /dev/null +++ b/Week_01/id_85/LeetCode_503_85.java @@ -0,0 +1,115 @@ +import java.util.Stack; + +public class LeetCode_503_85 { +} + +/** + * @Package: + * @ClassName: NextGreaterElementII + * @Description: *************************** + * **************给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素), + * **************输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序, + * **************这个数字之后的第一个比它更大的数, + * **************这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。难度:中 + * @leetcode url:https://leetcode.com/problems/next-greater-element-ii/ + * @Author: wangzhao + * @Date: 2019-04-18 14:51:45 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +class NextGreaterElementII { + + + public int[] nextGreaterElements(int[] nums) { + + if (nums == null || nums.length == 0) { + return nums; + } + int[] res = new int[nums.length]; + + for (int i = 0; i < nums.length; i++) { + int bigger = -1; + int prevIndex = -1; + int afterIndex = i; + while (true) { + afterIndex++; + if (afterIndex == nums.length) { + prevIndex++; + afterIndex--; + if (prevIndex == i) { + break; + } + if (nums[prevIndex] > nums[i]) { + bigger = nums[prevIndex]; + break; + } + } + if (nums[afterIndex] > nums[i]) { + bigger = nums[afterIndex]; + break; + } + } + res[i] = bigger; + } + + return res; + } + + /** + * 利用单调栈,存放数组下标 + */ + public int[] nextGreaterElements2(int[] nums) { + + if (nums == null || nums.length == 0) { + return nums; + } + + Stack stack = new Stack<>(); + int[] res = new int[nums.length]; + for (int i = 0; i < res.length; i++) { + res[i] = -1; + } + boolean isGoon = true; + for (int i = 0; i < nums.length; i++) { + + while (true) { + Integer n = null; + try { + n = stack.peek(); + } catch (Exception e) { + break; + } + if (nums[n] < nums[i]) { + res[n] = nums[i]; + stack.pop(); + } else { + break; + } + } + stack.push(i); + if (i == nums.length - 1 && isGoon) { + isGoon = false; + i = -1; + } else if (i == nums.length - 1 && !isGoon) { + break; + } + } + return res; + } + + public static void main(String[] args) { + + int[] arr = {5, 4, 3, 2, 1}; + + int[] res = new NextGreaterElementII().nextGreaterElements(arr); + for (int r : res) { + System.out.print(r + ","); + } + System.out.println(""); + System.out.println("----------------------------------------"); + res = new NextGreaterElementII().nextGreaterElements2(arr); + for (int r : res) { + System.out.print(r + ","); + } + } +} diff --git a/Week_01/id_85/LeetCode_50_85.java b/Week_01/id_85/LeetCode_50_85.java new file mode 100644 index 00000000..7ed57381 --- /dev/null +++ b/Week_01/id_85/LeetCode_50_85.java @@ -0,0 +1,73 @@ +public class LeetCode_50_85 { +} + +/** + * @Package: + * @ClassName: PowXN + * @Description: 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 难度:中 + * @leetCode url:https://leetcode.com/problems/powx-n/ + * @Author: wangzhao + * @Date: 2019-04-20 11:56:45 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +class PowXN { + + /** + * leetcode结果超时 + */ + public double myPow2(double x, int n) { + + if (n == 0) { + return 1; + } + if (x == 0) { + return 0; + } + double r = 1; + + for (int i = 0; i < (n < 0 ? -n : n); i++) { + r = r * x; + } + if (n < 0) { + return 1 / r; + } else { + return r; + } + } + + public double myPow(double x, int n) { + + if (n == 0) { + return 1; + } + if (x == 0) { + return 0; + } + + if (n < 0) { + return 1 / power(x, n); + } else { + return power(x, n); + } + + } + + public double power(double x, int n) { + if (n == 0) { + return 1; + } + double result = power(x, n / 2); + if (n % 2 == 0) { + return result * result; + } else { + return result * result * x; + } + + } + + public static void main(String[] args) { + double res = new PowXN().myPow(2.00, 10); + System.out.println(res); + } +} diff --git a/Week_01/id_85/LeetCode_698_85.java b/Week_01/id_85/LeetCode_698_85.java new file mode 100644 index 00000000..17a5baaf --- /dev/null +++ b/Week_01/id_85/LeetCode_698_85.java @@ -0,0 +1,90 @@ +import java.util.Arrays; + +public class LeetCode_698_85 { +} + +/** + * @Package: + * @ClassName: RecurvePartKEqualSubsets + * @Description: ***************************** + * **************给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 + * **************示例 1: + * **************输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 + * **************输出: True + * **************说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。 难度:中等 + * @leetCode url:https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ + * @Author: wangzhao + * @Date: 2019-04-19 11:39:28 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +class RecurvePartKEqualSubsets { + + /** + * + * 思路: + * 1.需要均分,因此全集数字之和不能为奇数, + * 2.分割子集之和等于平均数 + * 3.查看所有数字的组合是否满足第二条 + */ + public boolean canPartitionKSubsets(int[] nums, int k) { + + if (nums == null || k == 0) return false; + + if (k == 1) return true; + int sum = Arrays.stream(nums).sum(); + if (sum % k != 0) { + return false; + } + if (sum % 2 != 0 && k % 2 == 0) { + return false; + } + int avg = sum / k; + + boolean[] flagNums = new boolean[nums.length]; + + return dfs(nums, k, avg, 0, 0, flagNums); + } + + + /** + * + * @param nums 数组全集 + * @param k 分割数 + * @param avg 平均值 + * @param sum 当前计算和 + * @param nextBegin 下个开始数下标 + * @param flagNums 标记已参与计算结果和为avg的数 + * @return + */ + private boolean dfs(int[] nums, int k, int avg, int sum, int nextBegin, boolean[] flagNums) { + + if (k == 1) { + return true; + } + if (avg == sum) { + return dfs(nums, k - 1, avg, 0, 0, flagNums); + } + + for (int i = nextBegin; i < nums.length; i++) { + if (flagNums[i]) { + continue; + } + flagNums[i] = true; + if (dfs(nums, k, avg, sum + nums[i], i + 1, flagNums)) { + return true; + } + flagNums[i] = false; + } + + return false; + } + + public static void main(String[] args) { + int[] nums = {4, 3, 2, 3, 5, 2, 1}; + int k = 4; + + boolean result = new RecurvePartKEqualSubsets().canPartitionKSubsets(nums, k); + System.out.println(result); + } +} diff --git a/Week_01/id_85/LinkedListDelDup.java b/Week_01/id_85/LeetCode_83_85.java similarity index 97% rename from Week_01/id_85/LinkedListDelDup.java rename to Week_01/id_85/LeetCode_83_85.java index 0d741d8e..f3b332b3 100644 --- a/Week_01/id_85/LinkedListDelDup.java +++ b/Week_01/id_85/LeetCode_83_85.java @@ -1,6 +1,9 @@ +public class LeetCode_83_85 { +} + /** * @Package: - * @ClassName: Solution + * @ClassName: LinkedListDelDup * @Description: 删除排序链表中的重复元素 * @leetcode url :https://leetcode.com/problems/remove-duplicates-from-sorted-list/ * @Author: wangzhao @@ -8,7 +11,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class LinkedListDelDup { +class LinkedListDelDup { public ListNode deleteDuplicates(ListNode head) { @@ -102,6 +105,4 @@ public static void main(String[] args) { resultNode = resultNode.next; } } -} - - +} \ No newline at end of file diff --git a/Week_01/id_85/ArraySortByParity.java b/Week_01/id_85/LeetCode_905_85.java similarity index 87% rename from Week_01/id_85/ArraySortByParity.java rename to Week_01/id_85/LeetCode_905_85.java index 45846684..a9cce9bd 100644 --- a/Week_01/id_85/ArraySortByParity.java +++ b/Week_01/id_85/LeetCode_905_85.java @@ -1,8 +1,12 @@ import java.util.Random; +public class LeetCode_905_85 { + +} + /** * @Package: - * @ClassName: ArraySortByParity + * @ClassName: LeetCode_905_85.ArraySortByParity * @Description: 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 难度:简单 * @leetcode url:https://leetcode.com/problems/sort-array-by-parity/ * @Author: wangzhao @@ -10,7 +14,7 @@ * @Version: 1.0.0 * @Since: 1.8 **/ -public class ArraySortByParity { +class ArraySortByParity { public int[] sortArrayByParity(int[] A) { @@ -56,19 +60,18 @@ public static void main(String[] args) { for (int i = 0; i < arr.length; i++) { int a = r.nextInt(100); - System.out.print(a+","); + System.out.print(a + ","); arr[i] = a; } System.out.println(""); System.out.println("-----------我是分割线-------------"); - int[] arr2={0,1,2,3}; + int[] arr2 = {0, 1, 2, 3}; int[] result = new ArraySortByParity().sortArrayByParity(arr2); for (int i : result) { - System.out.print(i+","); + System.out.print(i + ","); } } -} -//TODO: https://leetcode-cn.com/problems/sort-array-by-parity-ii/ 暂忽略 +} \ No newline at end of file diff --git a/Week_01/id_85/NOTE.md b/Week_01/id_85/NOTE.md index c684e62f..e2219793 100644 --- a/Week_01/id_85/NOTE.md +++ b/Week_01/id_85/NOTE.md @@ -1 +1,37 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +第一周题目 + +链表 +简单:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ ==> 完成 LeetCode_83_85.java +简单:https://leetcode-cn.com/problems/merge-two-sorted-lists ==> 完成 LeetCode_21_85.java +中等:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ ==> 完成 LeetCode_24_85.java +中等:https://leetcode-cn.com/problems/linked-list-cycle-ii ==> 完成 LeetCode_142_85.java +困难:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ ==> 完成 LeetCode_25_85.java + +数组 +简单:https://leetcode-cn.com/problems/sort-array-by-parity/ ==>完成 LeetCode_905_85.java +简单:https://leetcode-cn.com/problems/sort-array-by-parity-ii/ +中等:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/ +中等:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/ ==>完成 LeetCode_153_85.java +困难:https://leetcode-cn.com/problems/search-in-rotated-sorted-array ==>完成 LeetCode_33_85.java + +栈 +简单:https://leetcode-cn.com/problems/valid-parentheses/ +中等:https://leetcode-cn.com/problems/next-greater-element-ii/ ==>完成 LeetCode_503_85.java +困难:https://leetcode-cn.com/problems/maximum-frequency-stack/ + +递归 +简单:https://leetcode-cn.com/problems/longest-univalue-path/ +中等:https://leetcode-cn.com/problems/partition-to-k-equal-sum-subsets/ ==> 完成 LeetCode_698_85.java +困难:https://leetcode-cn.com/problems/special-binary-string/ + +排序 +简单:https://leetcode-cn.com/problems/valid-anagram/ +中等:https://leetcode-cn.com/problems/wiggle-sort-ii/ ==> 完成 LeetCode_324_85.java +困难:https://leetcode-cn.com/problems/maximum-gap/ + +二分查找 +简单:https://leetcode-cn.com/problems/arranging-coins/ +中等:https://leetcode-cn.com/problems/powx-n/ ==> 完成 LeetCode_50_85.java +困难:https://leetcode-cn.com/problems/dungeon-game/ + From 152d3c74f9b2ad5940d68e1cf1a97db417add565 Mon Sep 17 00:00:00 2001 From: xiangfeifei Date: Sat, 20 Apr 2019 13:00:56 +0800 Subject: [PATCH 198/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E7=BB=83?= =?UTF-8?q?=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_77/leet_code.md | 741 +++++++++++++++++++++++++++++++++++++ 1 file changed, 741 insertions(+) create mode 100644 Week_01/id_77/leet_code.md diff --git a/Week_01/id_77/leet_code.md b/Week_01/id_77/leet_code.md new file mode 100644 index 00000000..22da9cc7 --- /dev/null +++ b/Week_01/id_77/leet_code.md @@ -0,0 +1,741 @@ +### 链表 + +#### [83. 删除排序链表中的重复元素](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/) + +给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 + +**示例 1:** + +``` +输入: 1->1->2 +输出: 1->2 +``` + +**示例 2:** + +``` +输入: 1->1->2->3->3 +输出: 1->2->3 +``` + +**代码:** + +```java +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + ListNode pointer = head; + + while(pointer!=null){ + if(pointer.next!=null && pointer.val== pointer.next.val){ + pointer.next = pointer.next.next; + }else{ + pointer = pointer.next; + } + + } + return head; + } +} +``` + +#### [21. 合并两个有序链表](https://leetcode-cn.com/problems/merge-two-sorted-lists/) + +将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 + +**示例:** + +``` +输入:1->2->4, 1->3->4 +输出:1->1->2->3->4->4 +``` + +**代码:** + +```java +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + ListNode p1 = l1; + ListNode p2 = l2; + + if(l1==null){ + return l2; + }else if(l2==null){ + return l1; + } + ListNode listNew ; + if(p1.val2->3->4, 你应该返回 2->1->4->3. +``` + +**代码:** + +```java +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode swapPairs(ListNode head) { + if(head == null || head.next == null){ + return head; + } + ListNode slowPointer = head; + ListNode fastPointer = head.next; + ListNode p=fastPointer.next; + + fastPointer.next = slowPointer; + slowPointer.next =p; + + if(p == null){ + return fastPointer; + } + head = fastPointer; + ListNode headPointer = fastPointer.next; + + slowPointer = p; + fastPointer = p.next; + + while(slowPointer != null && fastPointer !=null){ + p=fastPointer.next; + fastPointer.next = slowPointer; + slowPointer.next =p; + headPointer.next = fastPointer; + headPointer = fastPointer.next; + slowPointer = p; + if(p!=null){ + fastPointer = p.next; + }else{ + fastPointer= null; + } + } + return head; + } +} +``` + +#### [142. 环形链表 II](https://leetcode-cn.com/problems/linked-list-cycle-ii/) + +给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 `null`。 + +为了表示给定链表中的环,我们使用整数 `pos` 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 `pos` 是 `-1`,则在该链表中没有环。 + +**说明:**不允许修改给定的链表。 + + + +**示例 1:** + +``` +输入:head = [3,2,0,-4], pos = 1 +输出:tail connects to node index 1 +解释:链表中有一个环,其尾部连接到第二个节点。 +``` + +![img](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist.png) + +**示例 2:** + +``` +输入:head = [1,2], pos = 0 +输出:tail connects to node index 0 +解释:链表中有一个环,其尾部连接到第一个节点。 +``` + +![img](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test2.png) + +**示例 3:** + +``` +输入:head = [1], pos = -1 +输出:no cycle +解释:链表中没有环。 +``` + +![img](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2018/12/07/circularlinkedlist_test3.png) + +**代码:** + +```java +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public ListNode detectCycle(ListNode head) { + Set cache = new HashSet(); + + while(head != null){ + if(cache.contains(head)){ + return head; + }else{ + cache.add(head); + head = head.next; + } + } + + return null; + + } +} +``` + +#### 25.k个一组翻转链表 + +给出一个链表,每 *k* 个节点一组进行翻转,并返回翻转后的链表。 + +*k* 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 *k* 的整数倍,那么将最后剩余节点保持原有顺序。 + +**示例 :** + +给定这个链表:`1->2->3->4->5` + +当 *k* = 2 时,应当返回: `2->1->4->3->5` + +当 *k* = 3 时,应当返回: `3->2->1->4->5` + +**说明 :** + +- 你的算法只能使用常数的额外空间。 +- **你不能只是单纯的改变节点内部的值**,而是需要实际的进行节点交换。 + +**代码:** + +```java +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode reverseKGroup(ListNode head, int k) { + + if(head == null){ + return null; + } + + //记录头节点 + ListNode headPointer = head; + //记录尾节点 + ListNode tailPointer = head; + //记录节点个数 + int n = 0; + while(tailPointer != null){ + n++; + if(n == k){ + //k以后的节点递归处理 + ListNode tmpTail = reverseKGroup(tailPointer.next,k); + //反转前k个节点 并链接尾节点 + reverseK(headPointer,k).next = tmpTail; + break; + } + tailPointer = tailPointer.next; + } + + if(n < k){ + //不足k个节点 直接返回头节点 + return headPointer; + }else{ + //有k个节点 返回反转后的头节点 即原来的尾节点 + return tailPointer; + } + + + } + + public ListNode reverseK(ListNode head, int k){ + if(k == 1){ + return head; + } + ListNode headNew = reverseK(head.next,k-1); + headNew.next = head; + head.next = null; + + return head; + } + + +} +``` + +### 数组 + +#### [905. 按奇偶排序数组](https://leetcode-cn.com/problems/sort-array-by-parity/) + +给定一个非负整数数组 `A`,返回一个由 `A` 的所有偶数元素组成的数组,后面跟 `A` 的所有奇数元素。 + +你可以返回满足此条件的任何数组作为答案。 + + + +**示例:** + +``` +输入:[3,1,2,4] +输出:[2,4,3,1] +输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 +``` + + + +**提示:** + +1. `1 <= A.length <= 5000` +2. `0 <= A[i] <= 5000` + +```java +class Solution { + + + public int[] sortArrayByParity(int[] A) { + int[] arr =new int[A.length]; + int start = -1, end = A.length; + for(int i=0;i -1; + }else if(nums[0] == target){ + return true; + }else{ + while(left < end && nums[left] == nums[left+1]){ + left++; + } + while(right > 0 && nums[right] == nums[right-1]){ + right--; + } + } + + int maxIndex = -1; + + while(left <= right){ + mid = left + ((right - left) >> 1); + if(nums[mid] > nums[mid+1]){ + maxIndex = mid; + break; + }else if(nums[mid] < nums[0]){ + right = mid -1; + }else{ + left = mid +1; + } + } + if(target < nums[0]){ + return binarySearch(nums,target,maxIndex+1 ,end) > -1; + }else{ + return binarySearch(nums,target,0 ,maxIndex) > -1; + } + + } + + public int binarySearch(int[] nums,int target,int left ,int right){ + if(left>right){ + return -1; + } + int mid = left + ((right - left) >> 1); + if(nums[mid] > target){ + return binarySearch(nums,target,left,mid-1); + }else if(nums[mid] < target){ + return binarySearch(nums,target,mid + 1,right); + }else{ + return mid; + } + } +} +``` + +#### [153. 寻找旋转排序数组中的最小值](https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/) + +假设按照升序排序的数组在预先未知的某个点上进行了旋转。 + +( 例如,数组 `[0,1,2,4,5,6,7]` 可能变为 `[4,5,6,7,0,1,2]` )。 + +请找出其中最小的元素。 + +你可以假设数组中不存在重复元素。 + +**示例 1:** + +``` +输入: [3,4,5,1,2] +输出: 1 +``` + +**示例 2:** + +``` +输入: [4,5,6,7,0,1,2] +输出: 0 +``` + +**代码:** + +```java +class Solution { + public int findMin(int[] nums) { + int left = 0,right = nums.length-1,end = nums.length-1,mid; + if(end < 0){ + return -1; + }else if(end == 0){ + return nums[0]; + } + + if(nums[0]> 1); + if(nums[mid] > nums[mid+1]){ + maxIndex = mid; + break; + }else if(nums[mid] < nums[0]){ + right = mid -1; + }else{ + left = mid +1; + } + } + return nums[maxIndex + 1]; + } +} +``` + +#### [33. 搜索旋转排序数组](https://leetcode-cn.com/problems/search-in-rotated-sorted-array/) + +假设按照升序排序的数组在预先未知的某个点上进行了旋转。 + +( 例如,数组 `[0,1,2,4,5,6,7]` 可能变为 `[4,5,6,7,0,1,2]` )。 + +搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 `-1` 。 + +你可以假设数组中不存在重复的元素。 + +你的算法时间复杂度必须是 *O*(log *n*) 级别。 + +**示例 1:** + +``` +输入: nums = [4,5,6,7,0,1,2], target = 0 +输出: 4 +``` + +**示例 2:** + +``` +输入: nums = [4,5,6,7,0,1,2], target = 3 +输出: -1 +``` + +**代码:** + +```java +class Solution { + + public int search(int[] nums, int target) { + int left = 0,right = nums.length-1,end = nums.length-1,mid; + if(end < 0){ + return -1; + }else if(end == 0){ + return nums[0] == target ? 0 : -1; + } + + if(nums[0]> 1); + if(nums[mid] > nums[mid+1]){ + maxIndex = mid; + break; + }else if(nums[mid] < nums[0]){ + right = mid -1; + }else{ + left = mid +1; + } + } + + //比较最大值 进行区间二分查找 + if(target < nums[0]){ + return binarySearch(nums,target,maxIndex+1 ,end) ; + }else{ + return binarySearch(nums,target,0 ,maxIndex) ; + } + +} + +public int binarySearch(int[] nums,int target,int left ,int right){ + if(left>right){ + return -1; + } + int mid = left + ((right - left) >> 1); + if(nums[mid] > target){ + return binarySearch(nums,target,left,mid-1); + }else if(nums[mid] < target){ + return binarySearch(nums,target,mid + 1,right); + }else{ + return mid; + } +} +} +``` + +### 栈 + +#### [20. 有效的括号](https://leetcode-cn.com/problems/valid-parentheses/) + +```java +给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 + +有效字符串需满足: + +左括号必须用相同类型的右括号闭合。 +左括号必须以正确的顺序闭合。 +注意空字符串可被认为是有效字符串。 + +示例 1: + +输入: "()" +输出: true +示例 2: + +输入: "()[]{}" +输出: true +示例 3: + +输入: "(]" +输出: false +示例 4: + +输入: "([)]" +输出: false +示例 5: + +输入: "{[]}" +输出: true +``` + +**代码:** + +```java +class Solution { + public boolean isValid(String s) { + Stack stack = new Stack(); + if(s.length() == 0){ + return true; + } + boolean flag = true; + char ch; + for(int i=0;i0){ + return false; + }else { + return flag; + } + } +} +``` + From 1ccb02ddac24bff1f738317359e13b170c2f9de4 Mon Sep 17 00:00:00 2001 From: suke Date: Sat, 20 Apr 2019 13:10:09 +0800 Subject: [PATCH 199/780] 922 --- Week_01/id_121/LeetCode_922_121.java | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Week_01/id_121/LeetCode_922_121.java diff --git a/Week_01/id_121/LeetCode_922_121.java b/Week_01/id_121/LeetCode_922_121.java new file mode 100644 index 00000000..0bbdc9c1 --- /dev/null +++ b/Week_01/id_121/LeetCode_922_121.java @@ -0,0 +1,36 @@ +class Solution { + public int[] sortArrayByParityII(int[] A) { + if(A.length < 2 || A.length > 20000 || A.length % 2 != 0){ + return null; + } + + int even = 0; + int odd = 1; + while(even < A.length && odd < A.length){ + if(!isOdd(A[even]) && isOdd(A[odd])){ + odd = odd + 2; + even = even + 2; + }else if(isOdd(A[even]) && !isOdd(A[odd])){ + swap(A,even,odd); + odd = odd + 2; + even = even + 2; + }else if(isOdd(A[odd]) && isOdd(A[even])){ + odd = odd + 2; + }else if(!isOdd(A[odd]) && !isOdd(A[even])){ + even = even + 2; + } + } + return A; + } + public void swap(int[] arr,int head,int tail){ + int tmp = arr[head]; + arr[head] = arr[tail]; + arr[tail] = tmp; + } + public boolean isOdd(int a){ + if(a%2 == 1){ //是奇数 + return true; + } + return false; + } +} \ No newline at end of file From 512eccb919b0d6fa75ed1ea2fd1ffa119751dad9 Mon Sep 17 00:00:00 2001 From: hongchao6 Date: Sat, 20 Apr 2019 13:18:44 +0800 Subject: [PATCH 200/780] LeetCode_687 --- Week_01/id_131/LeetCode_687_131.cpp | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Week_01/id_131/LeetCode_687_131.cpp diff --git a/Week_01/id_131/LeetCode_687_131.cpp b/Week_01/id_131/LeetCode_687_131.cpp new file mode 100644 index 00000000..8c929135 --- /dev/null +++ b/Week_01/id_131/LeetCode_687_131.cpp @@ -0,0 +1,40 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode(int x) : val(x), left(NULL), right(NULL) {} + * }; + 㷨 + + getMaxLen Ϊӽڵ node ͷijȡ node.Left ڵ node ֵͬ +ֵͻ 1 + getMaxLen node.right ڵҲһ + +Ǽ󳤶ʱѡ𰸽Ǹýڵϵļͷ֮͡ǽЩѡ𰸼¼Ѵ𰸡 + */ +class Solution { + +private: + int maxLen = 0; + +public: + int longestUnivaluePath(TreeNode* root) + { + if(NULL == root) return 0; + getMaxLen(root, root->val); + return maxLen; + } + int getMaxLen(TreeNode* root, int val) + { + if(NULL == root) return 0; + int leftLen = getMaxLen(root->left, root->val); + int rightLen = getMaxLen(root->right, root->val); + maxLen = std::max(maxLen, leftLen+rightLen); + if(root->val == val) + { + return std::max(leftLen, rightLen) + 1; + } + return 0; + } +}; \ No newline at end of file From 42a37591bf528ed44e20aeba23b74e755ffa902e Mon Sep 17 00:00:00 2001 From: guoshufeng <123456ab> Date: Sat, 20 Apr 2019 13:20:08 +0800 Subject: [PATCH 201/780] gsf --- Week_01/id_30/LeetCode_20_30.java | 53 +++++++++++++++++++ .../id_30/{D21.java => LeetCode_21_30.java} | 2 +- Week_01/id_30/LeetCode_242_30.java | 23 ++++++++ Week_01/id_30/LeetCode_441_30.java | 33 ++++++++++++ Week_01/id_30/LeetCode_687_30.java | 35 ++++++++++++ .../id_30/{D83.java => LeetCode_83_30.java} | 2 +- Week_01/id_30/LeetCode_905_30.java | 31 +++++++++++ Week_01/id_30/LeetCode_922_30.java | 41 ++++++++++++++ 8 files changed, 218 insertions(+), 2 deletions(-) create mode 100644 Week_01/id_30/LeetCode_20_30.java rename Week_01/id_30/{D21.java => LeetCode_21_30.java} (95%) create mode 100644 Week_01/id_30/LeetCode_242_30.java create mode 100644 Week_01/id_30/LeetCode_441_30.java create mode 100644 Week_01/id_30/LeetCode_687_30.java rename Week_01/id_30/{D83.java => LeetCode_83_30.java} (93%) create mode 100644 Week_01/id_30/LeetCode_905_30.java create mode 100644 Week_01/id_30/LeetCode_922_30.java diff --git a/Week_01/id_30/LeetCode_20_30.java b/Week_01/id_30/LeetCode_20_30.java new file mode 100644 index 00000000..0fbf3d8c --- /dev/null +++ b/Week_01/id_30/LeetCode_20_30.java @@ -0,0 +1,53 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class LeetCode_22_30 { + + public static void main(String[] args) { + String str = "(]"; + System.out.println(isValid(str)); + + } + + public static boolean isValid(String s) { + + Stack stack = new Stack<>(); + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + if (c == '(' || c == '[' || c == '{') { + stack.add(s.charAt(i)); + } else { + if (stack.isEmpty()) { + return false; + } + Character pop = stack.pop(); + if (c == ')' && pop != '(') { + return false; + } + if (c == ']' && pop != '[') { + return false; + } + if (c == '}' && pop != '{') { + return false; + } + + } + } + return stack.isEmpty(); + } + // 虽然慢,面试让我说就说栈,让我写,写这个嘿嘿。 + public boolean isValid1(String s) { + while (s.length() != 0) { + int length = s.length(); + s = s.replace("()", "").replace("[]", "").replace("{}", ""); + if (length == s.length()) { + return false; + } + } + return true; + } +} diff --git a/Week_01/id_30/D21.java b/Week_01/id_30/LeetCode_21_30.java similarity index 95% rename from Week_01/id_30/D21.java rename to Week_01/id_30/LeetCode_21_30.java index fd8d421f..b3e787d6 100644 --- a/Week_01/id_30/D21.java +++ b/Week_01/id_30/LeetCode_21_30.java @@ -5,7 +5,7 @@ /** * @author gsf */ -public class D21 { +public class LeetCode_21_30 { public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode node = new ListNode(0); diff --git a/Week_01/id_30/LeetCode_242_30.java b/Week_01/id_30/LeetCode_242_30.java new file mode 100644 index 00000000..387c2c7a --- /dev/null +++ b/Week_01/id_30/LeetCode_242_30.java @@ -0,0 +1,23 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class LeetCode_242_30 { + + public static void main(String[] args) { + + String s = "anagram", t = "nagaram"; + System.out.println(isAnagram(s, t)); + } + + public static boolean isAnagram(String s, String t) { + char[] ss = s.toCharArray(); + char[] tt = t.toCharArray(); + Arrays.sort(ss); + Arrays.sort(tt); + return String.valueOf(ss).equals(String.valueOf(tt)); + } +} diff --git a/Week_01/id_30/LeetCode_441_30.java b/Week_01/id_30/LeetCode_441_30.java new file mode 100644 index 00000000..2609c280 --- /dev/null +++ b/Week_01/id_30/LeetCode_441_30.java @@ -0,0 +1,33 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class LeetCode_441_30 { + + public static void main(String[] args) { + int i = arrangeCoins(5); + System.out.println(i); + } + public static int arrangeCoins(int n) { + if (n <= 1) { + return n; + } + long low = 0; + long high = n; + while (low < high) { + // 二分法查询硬币可以摆放的行数 + long mid = low + (high - low) / 2; + // 核心公式 放满n行用的硬币数:n*(n+1)/2 + // 如果给的硬币数大于mid,证明比这行多去右面去找行数,如果小去左边找行数 + if (mid * (mid + 1) / 2 <= n) { + low = mid + 1; + } else { + high = mid; + } + } + return (int) (low - 1); + } +} diff --git a/Week_01/id_30/LeetCode_687_30.java b/Week_01/id_30/LeetCode_687_30.java new file mode 100644 index 00000000..8513ab25 --- /dev/null +++ b/Week_01/id_30/LeetCode_687_30.java @@ -0,0 +1,35 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class LeetCode_687_30 { + + public static void main(String[] args) { + TreeNode bst = new TreeNode(1); + bst.left = new TreeNode(4); + bst.right = new TreeNode(5); + bst.left.left = new TreeNode(4); + bst.left.right = new TreeNode(4); + bst.right.left = new TreeNode(5); + + int i = longestUnivaluePath(bst); + System.out.println(i); + } + public static int longestUnivaluePath(TreeNode root) { + if (root == null) { + return 0; + } + int max = Math.max(longestUnivaluePath(root.left), longestUnivaluePath(root.right)); + return Math.max(max, recursion(root.left, root.val) + recursion(root.right, root.val)); + } + public static int recursion(TreeNode node, int pVal) { + if (node == null || node.val != pVal) { + return 0; + } + return Math.max(recursion(node.left, node.val), recursion(node.right, node.val)) + 1; + } + +} diff --git a/Week_01/id_30/D83.java b/Week_01/id_30/LeetCode_83_30.java similarity index 93% rename from Week_01/id_30/D83.java rename to Week_01/id_30/LeetCode_83_30.java index 1a94a266..89a39cce 100644 --- a/Week_01/id_30/D83.java +++ b/Week_01/id_30/LeetCode_83_30.java @@ -5,7 +5,7 @@ /** * @author gsf */ -public class D83 { +public class LeetCode_83_30 { public static ListNode deleteDuplicates(ListNode head) { ListNode head1 = head; while (head1 != null) { diff --git a/Week_01/id_30/LeetCode_905_30.java b/Week_01/id_30/LeetCode_905_30.java new file mode 100644 index 00000000..baad452b --- /dev/null +++ b/Week_01/id_30/LeetCode_905_30.java @@ -0,0 +1,31 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class LeetCode_905_30 { + + public static int[] sortArrayByParity(int[] A) { + if (A == null || A.length == 0 || A.length == 1) { + return A; + } + int j = A.length - 1; + int i = 0; + while (i < j) { + if ((A[i] & 1) == 1) { + swap(A, i, j); + j--; + continue; + } + i++; + } + return A; + } + public static void swap(int[] arr, int i, int j) { + int tem = arr[i]; + arr[i] = arr[j]; + arr[j] = tem; + } +} diff --git a/Week_01/id_30/LeetCode_922_30.java b/Week_01/id_30/LeetCode_922_30.java new file mode 100644 index 00000000..85ba15bf --- /dev/null +++ b/Week_01/id_30/LeetCode_922_30.java @@ -0,0 +1,41 @@ +package com.shufeng.algorithm.d0_; + +import com.shufeng.algorithm.dto.ListNode; + +/** + * @author gsf + */ +public class LeetCode_922_30 { + + public static void main(String[] args) { + int[] arr = {2, 3, 1, 1, 4, 0, 0, 4, 3, 3}; + int[] ints = sortArrayByParity(arr); + System.out.println(Arrays.toString(ints)); + } + + public static int[] sortArrayByParity(int[] A) { + if (A == null || A.length == 0 || A.length == 1) { + return A; + } + int j = 0; + int i = 1; + while (j < A.length && i < A.length) { + if ((A[i] & 1) == (i & 1)) { + i += 2; + continue; + } + if ((A[j] & 1) == (j & 1)) { + j += 2; + continue; + } + swap(A, i, j); + } + return A; + } + + public static void swap(int[] arr, int i, int j) { + int tem = arr[i]; + arr[i] = arr[j]; + arr[j] = tem; + } +} From 7cd56f7a844222b228c8f011ea6c259cb96033b6 Mon Sep 17 00:00:00 2001 From: guoshufeng <123456ab> Date: Sat, 20 Apr 2019 13:23:06 +0800 Subject: [PATCH 202/780] gsf --- Week_01/id_30/LeetCode_441_30.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Week_01/id_30/LeetCode_441_30.java b/Week_01/id_30/LeetCode_441_30.java index 2609c280..cceec93f 100644 --- a/Week_01/id_30/LeetCode_441_30.java +++ b/Week_01/id_30/LeetCode_441_30.java @@ -1,7 +1,5 @@ package com.shufeng.algorithm.d0_; -import com.shufeng.algorithm.dto.ListNode; - /** * @author gsf */ @@ -21,7 +19,7 @@ public static int arrangeCoins(int n) { // 二分法查询硬币可以摆放的行数 long mid = low + (high - low) / 2; // 核心公式 放满n行用的硬币数:n*(n+1)/2 - // 如果给的硬币数大于mid,证明比这行多去右面去找行数,如果小去左边找行数 + // 如果给的硬币数大于n,证明比这行多去右面去找行数,如果小去左边找行数 if (mid * (mid + 1) / 2 <= n) { low = mid + 1; } else { From 4581b6af5de0850e686287243d19ca3f8447e1f2 Mon Sep 17 00:00:00 2001 From: suke Date: Sat, 20 Apr 2019 13:44:14 +0800 Subject: [PATCH 203/780] 20 --- Week_01/id_121/LeetCode_20_121.java | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Week_01/id_121/LeetCode_20_121.java diff --git a/Week_01/id_121/LeetCode_20_121.java b/Week_01/id_121/LeetCode_20_121.java new file mode 100644 index 00000000..70bbf2fa --- /dev/null +++ b/Week_01/id_121/LeetCode_20_121.java @@ -0,0 +1,40 @@ +class Solution { + static HashMap dic = new HashMap<>(3); + static { + dic.put('(',')'); + dic.put('[',']'); + dic.put('{','}'); + } + public boolean isValid(String s) { + if(s == null){ + return false; + } + if(s.equals("")){ + return true; + } + Stack stack=new Stack(); + char[] chars = s.toCharArray(); + for (int i = 0;i < chars.length;i ++) { + char c = chars[i]; + if(c == '(' || c == '[' || c == '{'){ + stack.push(c); + continue; + } + if(c == ')' || c == ']' || c == '}'){ + if(stack.isEmpty()){ + return false; + } + char pop = (Character)stack.pop(); + Character right = dic.get(pop); + if(right == c ){ + if(stack.isEmpty() && i == chars.length -1){ + return true; + } + continue; + } + return false; + } + } + return false; + } +} \ No newline at end of file From 4f0ffe79db964bb95a939bff7ee59fdd91109231 Mon Sep 17 00:00:00 2001 From: SONGSHAODONG Date: Sat, 20 Apr 2019 14:17:28 +0800 Subject: [PATCH 204/780] Arranging Coins --- Week_01/id_137/LeetCode_441_137.py | 94 ++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Week_01/id_137/LeetCode_441_137.py diff --git a/Week_01/id_137/LeetCode_441_137.py b/Week_01/id_137/LeetCode_441_137.py new file mode 100644 index 00000000..95d612ee --- /dev/null +++ b/Week_01/id_137/LeetCode_441_137.py @@ -0,0 +1,94 @@ +"https://leetcode-cn.com/problems/arranging-coins/" +"Author : Shaodong Song" +"Date : 2019-04-20" + +""" +You have a total of n coins that you want to form in a staircase shape, where every k-th row must have exactly k coins. + +Given n, find the total number of full staircase rows that can be formed. + +n is a non-negative integer and fits within the range of a 32-bit signed integer. + +Example 1: + +n = 5 + +The coins can form the following rows: +* +* * +* * + +Because the 3rd row is incomplete, we return 2. +""" + +class Solution(object): + def arrangeCoins(self, n): + """ + :type n: int + :rtype: int + """ + + if n == 0: + return 0 + + if n == 1: + return 1 + + lo = 0 + mid = 0 + hi = n + + while hi - lo > 1: + mid = (lo + hi) >> 1 + sum_num = mid * (mid + 1) >> 1 + + if sum_num == n: + return mid + elif sum_num > n: + hi = mid + else: + lo = mid + + return lo + + +class Solution1(object): + def arrangeCoins(self, n): + """ + :type n: int + :rtype: int + """ + + i = 1 + num = n + while num >= i: + num -= i + i += 1 + + return i - 1 + + +class Solution2(object): + def arrangeCoins(self, n): + """ + :type n: int + :rtype: int + """ + + num = int((2 * n) ** 0.5) + if n < 2 or (1 + num) * num / 2 <= n: + return num + else: + return num - 1 + + +so = Solution() +so1 = Solution() +so2 = Solution() + +print "arrangeCoins 10 = %d line" % so.arrangeCoins(10) +print "arrangeCoins 9 = %d line" % so1.arrangeCoins(9) +print "arrangeCoins 8 = %d line" % so2.arrangeCoins(8) + + + From 21854ba87cd12f0ab56128f8f46b3a3cea973761 Mon Sep 17 00:00:00 2001 From: SONGSHAODONG Date: Sat, 20 Apr 2019 14:18:00 +0800 Subject: [PATCH 205/780] Longest Univalue Path --- Week_01/id_137/LeetCode_687_137.py | 91 ++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 Week_01/id_137/LeetCode_687_137.py diff --git a/Week_01/id_137/LeetCode_687_137.py b/Week_01/id_137/LeetCode_687_137.py new file mode 100644 index 00000000..5c293b20 --- /dev/null +++ b/Week_01/id_137/LeetCode_687_137.py @@ -0,0 +1,91 @@ +"https://leetcode-cn.com/problems/longest-univalue-path/" +"Author : Shaodong Song" +"Date : 2019-04-20" + +""" +Given a binary tree, find the length of the longest path where each node in the path has the same value. This path may or may not pass through the root. + +Note: The length of path between two nodes is represented by the number of edges between them. + +--> Example 1: + +Input: + + 1 + / \ + 2 1 + +Output: 1 + +--> Example 2: + +Input: + + 1 + / \ + 1 1 + +Output: 2 +""" + +"Definition for a binary tree node." +class TreeNode(object): + def __init__(self, x): + self.val = x + self.left = None + self.right = None + +class Solution(object): + + max_path = 0; + + def findUnivaluePathCore(self, root, val): + if root == None: + return 0 + + left = self.findUnivaluePathCore(root.left, root.val) + right = self.findUnivaluePathCore(root.right, root.val) + + self.max_path = max(self.max_path, left + right) + + " when the current node and the parent node are the same," + " return longest univalue path length that can be formed by the current node." + " otherwise return 0." + + if root.val == val: + return max(left, right) + 1 + + return 0 + + def longestUnivaluePath(self, root): + """ + :type root: TreeNode + :rtype: int + """ + if root == None: + return 0 + + self.findUnivaluePathCore(root, root.val) + + return self.max_path + + +root = TreeNode(1) + +"case 1" +""" +root.left = TreeNode(2) +root.right = TreeNode(1) +""" + +"case 2" +root.left = TreeNode(1) +root.right = TreeNode(1) + +"case n" +"..." + +so = Solution() + +print "longestUnivaluePath = %d" % so.longestUnivaluePath(root) + From 070b9a9a7dd5a96730b07dfb50d6ff755e0cd786 Mon Sep 17 00:00:00 2001 From: baiyaguang <301070179@qq.com> Date: Sat, 20 Apr 2019 14:59:58 +0800 Subject: [PATCH 206/780] LeetCode_83_81 --- Week_01/id_81/LeetCode_83_81.java | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Week_01/id_81/LeetCode_83_81.java diff --git a/Week_01/id_81/LeetCode_83_81.java b/Week_01/id_81/LeetCode_83_81.java new file mode 100644 index 00000000..0af85464 --- /dev/null +++ b/Week_01/id_81/LeetCode_83_81.java @@ -0,0 +1,35 @@ +/** + * 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 + * 示例 1: + * 输入: 1->1->2 + * 输出: 1->2 + * 示例 2: + * 输入: 1->1->2->3->3 + * 输出: 1->2->3 +*/ + +public class DeleteDuplicateNode { + + /** + * @desc 发现上一种方法完全没有必要去那样,应为链表是已经排序好的了,并且已知前一个节点的当前的节点,可以直接进行比较 + * @annotation 注意在head为 null 的情况和链表只有一个节点的情况 + * @param head + * @return + */ + public static ListNode deleteDuplicatesV1(ListNode head) { + if (head == null || head.next == null) + return head; + ListNode current = head; + ListNode pre = null; + while (current != null) { + if (pre == null || pre.val != current.val) { + pre = current; // 保存上一节点,防止断链 + current = current.next; + } else { + pre.next = current.next; + current = pre.next; + } + } + return head; + } +} From bb2163cbf51761837b3356244aff2cba9fbcec9c Mon Sep 17 00:00:00 2001 From: yuze wang Date: Sat, 20 Apr 2019 15:40:46 +0800 Subject: [PATCH 207/780] =?UTF-8?q?#136=20=E4=BD=9C=E4=B8=9A=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_136/merge-two-sorted-lists.js | 36 +++++++++++++++++++ .../remove-duplicates-from-sorted-list.js | 22 ++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 Week_01/id_136/merge-two-sorted-lists.js create mode 100644 Week_01/id_136/remove-duplicates-from-sorted-list.js diff --git a/Week_01/id_136/merge-two-sorted-lists.js b/Week_01/id_136/merge-two-sorted-lists.js new file mode 100644 index 00000000..3feb316c --- /dev/null +++ b/Week_01/id_136/merge-two-sorted-lists.js @@ -0,0 +1,36 @@ +/** + * Definition for singly-linked list. + * function ListNode(val) { + * this.val = val; + * this.next = null; + * } + */ +/** + * @param {ListNode} l1 + * @param {ListNode} l2 + * @return {ListNode} + */ +var mergeTwoLists = function(l1, l2) { + let p1 =l1; + let p2 =l2; + let dummy = new ListNode(null); + dummy.next = p1; + let prev = dummy; + while(p1 && p2){ + if(p1.val < p2.val){ + prev = p1; + p1 = p1.next; + }else{ + prev.next = p2; + p2 = p2.next; + prev = prev.next; + prev.next = p1; + } + } + if(p2){ + prev.next = p2; + } + + return dummy.next; + +}; \ No newline at end of file diff --git a/Week_01/id_136/remove-duplicates-from-sorted-list.js b/Week_01/id_136/remove-duplicates-from-sorted-list.js new file mode 100644 index 00000000..6a5b5e27 --- /dev/null +++ b/Week_01/id_136/remove-duplicates-from-sorted-list.js @@ -0,0 +1,22 @@ +/** + * Definition for singly-linked list. + * function ListNode(val) { + * this.val = val; + * this.next = null; + * } + */ +/** + * @param {ListNode} head + * @return {ListNode} + */ +var deleteDuplicates = function(head) { + let current = head; + while (current != null && current.next != null) { + if (current.next.val == current.val) { + current.next = current.next.next; + } else { + current = current.next; + } + } + return head; +}; \ No newline at end of file From d51f95be721359e9cd925ca90df56078db064c04 Mon Sep 17 00:00:00 2001 From: baiyaguang <301070179@qq.com> Date: Sat, 20 Apr 2019 15:43:24 +0800 Subject: [PATCH 208/780] LeetCode_21_81 --- Week_01/id_81/LeetCode_21_81.java | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Week_01/id_81/LeetCode_21_81.java diff --git a/Week_01/id_81/LeetCode_21_81.java b/Week_01/id_81/LeetCode_21_81.java new file mode 100644 index 00000000..1e0968c7 --- /dev/null +++ b/Week_01/id_81/LeetCode_21_81.java @@ -0,0 +1,56 @@ +/* + * https://leetcode-cn.com/problems/merge-two-sorted-lists/ + * + * @author apple + * @desc 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 + * 示例: 输入:1->2->4, 1->3->4 + * 输出:1->1->2->3->4->4 + */ +public class MergeTwoListNode { + + // @desc 刚开始是有两种思路吧: 1. 将其中一个链表的数据插入到另一个列表之中 2. 重新定义一个链表将其加入。 + // 我使用的是第二种方式 + // 注意点:在编写代码的时候遇到了很多坑吧,应该就是自己平时练的太少,很多地方刚开始都没有想到。 + // 1. 要定义两个节点,一个节点用来保存合并生成的 头结点 head,一个节点负责去合并两个链表;我一开始只定义了一个节点 + // 2. head = new ListNode(l1.val); 这里赋值时,我最开始 是这样赋值的 head = + // list,这里傻了,忘了链表的指针了,导致后边赋值时,直接把好多的值都覆盖掉了 + // 3. 还有一个问题就是,赋值后一定要记得 continue + + public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if (l1 == null) + return l2; + if (l2 == null) + return l1; + ListNode head = null; + ListNode pre = null; + while (l1 != null && l2 != null) { + if (l1.val <= l2.val) { + if (pre == null) { + head = new ListNode(l1.val); + pre = head; + } else { + pre.next = new ListNode(l1.val); + pre = pre.next; + } + l1 = l1.next; + continue; + } + if (l2.val < l1.val) { + if (pre == null) { + head = new ListNode(l2.val); + pre = head; + } else { + pre.next = new ListNode(l2.val); + pre = pre.next; + } + l2 = l2.next; + continue; + } + } + if (l1 == null) + pre.next = l2; + if (l2 == null) + pre.next = l1; + return head; + } +} From 85f09b32a052f1b8b2bfe2e0933f7586b7851ac0 Mon Sep 17 00:00:00 2001 From: gebitang Date: Sat, 20 Apr 2019 15:52:50 +0800 Subject: [PATCH 209/780] first week work: No. 24 and No.33 problems. --- Week_01/id_87/LeetCode_24_87.java | 26 +++++++++++++++++++ Week_01/id_87/LeetCode_33_86.java | 43 +++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 Week_01/id_87/LeetCode_24_87.java create mode 100644 Week_01/id_87/LeetCode_33_86.java diff --git a/Week_01/id_87/LeetCode_24_87.java b/Week_01/id_87/LeetCode_24_87.java new file mode 100644 index 00000000..d5ec0e5e --- /dev/null +++ b/Week_01/id_87/LeetCode_24_87.java @@ -0,0 +1,26 @@ +/** +24. Swap Nodes in Pairs + +Given a linked list, swap every two adjacent nodes and return its head. + +You may not modify the values in the list's nodes, only nodes itself may be changed. + + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode swapPairs(ListNode head) { + if(head == null || head.next == null) { + return head; + }else { + ListNode newHead = head.next; + head.next = swapPairs(head.next.next); + newHead.next = head; + return newHead; + } + } +} \ No newline at end of file diff --git a/Week_01/id_87/LeetCode_33_86.java b/Week_01/id_87/LeetCode_33_86.java new file mode 100644 index 00000000..dd70cc8d --- /dev/null +++ b/Week_01/id_87/LeetCode_33_86.java @@ -0,0 +1,43 @@ + +/** +33. Search in Rotated Sorted Array + +Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. + +(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]). + +You are given a target value to search. If found in the array return its index, otherwise return -1. + +You may assume no duplicate exists in the array. + +Your algorithm's runtime complexity must be in the order of O(log n). + + */ +class Solution { + public int search(int[] nums, int target) { + return pureBinarySearch(nums, target); + } + + /** + * inspired by idea from https://leetcode.com/problems/search-in-rotated-sorted-array/discuss/14435/Clever-idea-making-it-simple + */ + public int pureBinarySearch(int[] nums, int target) { + if(nums == null || nums.length == 0) return -1; + + int low = 0; int high = nums.length; + + while (low < high) { + int mid = (low + high)/2; + int num = (nums[mid] < nums[0]) == (target < nums[0]) ? nums[mid] : target < nums[0] ? - Integer.MAX_VALUE : Integer.MAX_VALUE; + + if(num < target) { + low = mid +1; + }else if(num > target) { + high = mid; + }else { + return mid; + } + } + return -1; + } +} From 4a4e8bbca2457237c5de26d635dce40f29002b16 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:07:30 +0000 Subject: [PATCH 210/780] Create LeetCode142.java --- Week_01/id_63/LeetCode142.java | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Week_01/id_63/LeetCode142.java diff --git a/Week_01/id_63/LeetCode142.java b/Week_01/id_63/LeetCode142.java new file mode 100644 index 00000000..4f7a2615 --- /dev/null +++ b/Week_01/id_63/LeetCode142.java @@ -0,0 +1,41 @@ +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public ListNode detectCycle(ListNode head) { + if (head == null || head.next == null) { + return null; + } + ListNode node = head; + ListNode node2 = head; + while (true) { + node = node.next; + node2 = node2.next; + if (node2 == null) { + return null; + } else { + node2 = node2.next; + if (node2 == null) { + return null; + } + if (node2 == node) { + break; + } + } + } + node = head; + while (node != node2) { + node = node.next; + node2 = node2.next; + } + return node; + } +} From ef5bbf599f7eaf50a3677070d0ef642da5659dd8 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:08:38 +0000 Subject: [PATCH 211/780] Create LeetCode206.java --- Week_01/id_63/LeetCode206.java | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Week_01/id_63/LeetCode206.java diff --git a/Week_01/id_63/LeetCode206.java b/Week_01/id_63/LeetCode206.java new file mode 100644 index 00000000..fc67fad7 --- /dev/null +++ b/Week_01/id_63/LeetCode206.java @@ -0,0 +1,28 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode reverseList(ListNode head) { + if (head == null || head.next == null) { + return head; + } + ListNode pre = null; + ListNode node = head; + ListNode next = null; + while (true) { + next = node.next; + node.next = pre; + if (next == null) { + break; + } + pre = node; + node = next; + } + return node; + } +} From 9b3c9fd8ad5bca72339d9726f166e96992cc998e Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:09:39 +0000 Subject: [PATCH 212/780] Create LeetCode21.java --- Week_01/id_63/LeetCode21.java | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Week_01/id_63/LeetCode21.java diff --git a/Week_01/id_63/LeetCode21.java b/Week_01/id_63/LeetCode21.java new file mode 100644 index 00000000..e3e194a3 --- /dev/null +++ b/Week_01/id_63/LeetCode21.java @@ -0,0 +1,46 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if (l1 == null) { + return l2; + } + if (l2 == null) { + return l1; + } + ListNode node1 = l1; + ListNode node2 = l2; + ListNode head = null; + ListNode tail = null; + ListNode node = null; + while (node1 != null && node2 != null) { + if (node1.val <= node2.val) { + node = node1; + node1 = node1.next; + } else { + node = node2; + node2 = node2.next; + } + if (head == null) { + head = node; + } else { + tail.next = node; + } + tail = node; + } + if (node1 != null) { + tail.next = node1; + return head; + } + if (node2 != null) { + tail.next = node2; + } + return head; + } +} From 4e4e25f6980f0ce1d47a6e1e98a5f1bf6a2e8815 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:10:10 +0000 Subject: [PATCH 213/780] Create LeetCode83.java --- Week_01/id_63/LeetCode83.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Week_01/id_63/LeetCode83.java diff --git a/Week_01/id_63/LeetCode83.java b/Week_01/id_63/LeetCode83.java new file mode 100644 index 00000000..14c3986e --- /dev/null +++ b/Week_01/id_63/LeetCode83.java @@ -0,0 +1,23 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + ListNode node = head; + ListNode next = null; + while (node != null) { + next = node.next; + if (next != null && node.val == next.val) { + node.next = next.next; + } else { + node = node.next; + } + } + return head; + } +} From 00d0b1f248d358d8becf08a0c18eb73accab31d1 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:10:41 +0000 Subject: [PATCH 214/780] Create LeetCode141.java --- Week_01/id_63/LeetCode141.java | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Week_01/id_63/LeetCode141.java diff --git a/Week_01/id_63/LeetCode141.java b/Week_01/id_63/LeetCode141.java new file mode 100644 index 00000000..4fb04680 --- /dev/null +++ b/Week_01/id_63/LeetCode141.java @@ -0,0 +1,35 @@ +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public boolean hasCycle(ListNode head) { + if (head == null || head.next == null) { + return false; + } + boolean result = false; + ListNode node = head; + ListNode node2 = head; + while (node != null && node2 != null) { + node = node.next; + node2 = node2.next; + if (node2 == null) { + break; + } else { + node2 = node2.next; + if (node2 == node) { + result = true; + break; + } + } + } + return result; + } +} From 0176e8b9d62f90208ecf51553a37421c5ba8aaaf Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:11:44 +0000 Subject: [PATCH 215/780] Update LeetCode141.java --- Week_01/id_63/LeetCode141.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Week_01/id_63/LeetCode141.java b/Week_01/id_63/LeetCode141.java index 4fb04680..4555f24f 100644 --- a/Week_01/id_63/LeetCode141.java +++ b/Week_01/id_63/LeetCode141.java @@ -1,3 +1,8 @@ +/* +https://leetcode-cn.com/problems/linked-list-cycle/ +给定一个链表,判断链表中是否有环。 +为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 +*/ /** * Definition for singly-linked list. * class ListNode { From 4e427909fb346b0f0e3069db596f262dc66d2350 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:13:01 +0000 Subject: [PATCH 216/780] Update LeetCode21.java --- Week_01/id_63/LeetCode21.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Week_01/id_63/LeetCode21.java b/Week_01/id_63/LeetCode21.java index e3e194a3..216c3d95 100644 --- a/Week_01/id_63/LeetCode21.java +++ b/Week_01/id_63/LeetCode21.java @@ -1,3 +1,7 @@ +/* +https://leetcode-cn.com/problems/merge-two-sorted-lists/ +将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 +*/ /** * Definition for singly-linked list. * public class ListNode { From 1ba19899583ccd21b48454974e55d31cfd1b35ed Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:13:47 +0000 Subject: [PATCH 217/780] Update LeetCode83.java --- Week_01/id_63/LeetCode83.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Week_01/id_63/LeetCode83.java b/Week_01/id_63/LeetCode83.java index 14c3986e..1909cfa7 100644 --- a/Week_01/id_63/LeetCode83.java +++ b/Week_01/id_63/LeetCode83.java @@ -1,3 +1,7 @@ +/* +https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ +给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 +*/ /** * Definition for singly-linked list. * public class ListNode { From 0175b53cc8cc480ed934ad372cc030ae7bc88e26 Mon Sep 17 00:00:00 2001 From: yuze wang Date: Sat, 20 Apr 2019 16:14:07 +0800 Subject: [PATCH 218/780] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D=20By=20=E4=BB=A3=E7=A0=81=E6=96=87=E4=BB=B6=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E8=A7=84=E5=88=99=EF=BC=9ALeetCode=5F=E9=A2=98?= =?UTF-8?q?=E7=9B=AE=E5=BA=8F=E5=8F=B7=5F=E5=AD=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_136/{merge-two-sorted-lists.js => LeetCode_21_136.js} | 0 .../{remove-duplicates-from-sorted-list.js => LeetCode_83_136.js} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_136/{merge-two-sorted-lists.js => LeetCode_21_136.js} (100%) rename Week_01/id_136/{remove-duplicates-from-sorted-list.js => LeetCode_83_136.js} (100%) diff --git a/Week_01/id_136/merge-two-sorted-lists.js b/Week_01/id_136/LeetCode_21_136.js similarity index 100% rename from Week_01/id_136/merge-two-sorted-lists.js rename to Week_01/id_136/LeetCode_21_136.js diff --git a/Week_01/id_136/remove-duplicates-from-sorted-list.js b/Week_01/id_136/LeetCode_83_136.js similarity index 100% rename from Week_01/id_136/remove-duplicates-from-sorted-list.js rename to Week_01/id_136/LeetCode_83_136.js From a46f761322ed1a65ccd817e92ca6a4bc82a298a6 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:15:02 +0000 Subject: [PATCH 219/780] Update LeetCode142.java --- Week_01/id_63/LeetCode142.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Week_01/id_63/LeetCode142.java b/Week_01/id_63/LeetCode142.java index 4f7a2615..4e79d604 100644 --- a/Week_01/id_63/LeetCode142.java +++ b/Week_01/id_63/LeetCode142.java @@ -1,3 +1,9 @@ +/* +https://leetcode-cn.com/problems/linked-list-cycle-ii/ +给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 +为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 +说明:不允许修改给定的链表。 +*/ /** * Definition for singly-linked list. * class ListNode { From 353705a613894788cd2b130ebaab0bbff9a4c86a Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:15:47 +0000 Subject: [PATCH 220/780] Update LeetCode206.java --- Week_01/id_63/LeetCode206.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Week_01/id_63/LeetCode206.java b/Week_01/id_63/LeetCode206.java index fc67fad7..817a898d 100644 --- a/Week_01/id_63/LeetCode206.java +++ b/Week_01/id_63/LeetCode206.java @@ -1,3 +1,7 @@ +/* +https://leetcode-cn.com/problems/reverse-linked-list/ +反转一个单链表。 +*/ /** * Definition for singly-linked list. * public class ListNode { From c3af4eb46d571abd22274f32076129e227115c67 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:22:05 +0000 Subject: [PATCH 221/780] Update NOTE.md --- Week_01/id_63/NOTE.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Week_01/id_63/NOTE.md b/Week_01/id_63/NOTE.md index c684e62f..9793ea72 100644 --- a/Week_01/id_63/NOTE.md +++ b/Week_01/id_63/NOTE.md @@ -1 +1,4 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +## 如果题目不是特别一目了然很容易的那种,最好是先分析和画图,尤其是边界条件,这样事半功倍。 +## 根据边界条件和不同的参数组合写测试代码。 +## 如果在线写效率不高,那就用IDE写,本地测试通过后再提交。 From bc3d88684b13cb73f3b6f1671f442257a1f67616 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:28:00 +0000 Subject: [PATCH 222/780] Rename LeetCode141.java to LeetCode_141_63.java --- Week_01/id_63/{LeetCode141.java => LeetCode_141_63.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_63/{LeetCode141.java => LeetCode_141_63.java} (100%) diff --git a/Week_01/id_63/LeetCode141.java b/Week_01/id_63/LeetCode_141_63.java similarity index 100% rename from Week_01/id_63/LeetCode141.java rename to Week_01/id_63/LeetCode_141_63.java From 521b4d4d315d90dddf7f0fa8d3391a4155b532e4 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:28:34 +0000 Subject: [PATCH 223/780] Rename LeetCode83.java to LeetCode_83_63.java --- Week_01/id_63/{LeetCode83.java => LeetCode_83_63.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_63/{LeetCode83.java => LeetCode_83_63.java} (100%) diff --git a/Week_01/id_63/LeetCode83.java b/Week_01/id_63/LeetCode_83_63.java similarity index 100% rename from Week_01/id_63/LeetCode83.java rename to Week_01/id_63/LeetCode_83_63.java From 40f992dfee006c09f22acffd88193f022c7da156 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:29:03 +0000 Subject: [PATCH 224/780] Rename LeetCode142.java to LeetCode_142_63.java --- Week_01/id_63/{LeetCode142.java => LeetCode_142_63.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_63/{LeetCode142.java => LeetCode_142_63.java} (100%) diff --git a/Week_01/id_63/LeetCode142.java b/Week_01/id_63/LeetCode_142_63.java similarity index 100% rename from Week_01/id_63/LeetCode142.java rename to Week_01/id_63/LeetCode_142_63.java From b7913a20d01971a62000d6571ceac7c03b0b2959 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:29:30 +0000 Subject: [PATCH 225/780] Rename LeetCode206.java to LeetCode_206_63.java --- Week_01/id_63/{LeetCode206.java => LeetCode_206_63.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_63/{LeetCode206.java => LeetCode_206_63.java} (100%) diff --git a/Week_01/id_63/LeetCode206.java b/Week_01/id_63/LeetCode_206_63.java similarity index 100% rename from Week_01/id_63/LeetCode206.java rename to Week_01/id_63/LeetCode_206_63.java From ac5e4184e656128fa54f036b6394f2a97845f897 Mon Sep 17 00:00:00 2001 From: wahaha <48761625+wahaha2019@users.noreply.github.com> Date: Sat, 20 Apr 2019 08:29:49 +0000 Subject: [PATCH 226/780] Rename LeetCode21.java to LeetCode_21_63.java --- Week_01/id_63/{LeetCode21.java => LeetCode_21_63.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_63/{LeetCode21.java => LeetCode_21_63.java} (100%) diff --git a/Week_01/id_63/LeetCode21.java b/Week_01/id_63/LeetCode_21_63.java similarity index 100% rename from Week_01/id_63/LeetCode21.java rename to Week_01/id_63/LeetCode_21_63.java From 50eab838bda4f8eb3f8be8000e78843cc211b7e1 Mon Sep 17 00:00:00 2001 From: ajun Date: Sat, 20 Apr 2019 16:37:49 +0800 Subject: [PATCH 227/780] week_01 algorithm homework --- Week_01/id_16/LeetCode_21_16.cpp | 54 ++++++++++++++++++++++++ Week_01/id_16/LeetCode_441_16.cpp | 53 ++++++++++++++++++++++++ Week_01/id_16/LeetCode_50_16 .cpp | 69 +++++++++++++++++++++++++++++++ Week_01/id_16/LeetCode_83_16.cpp | 42 +++++++++++++++++++ 4 files changed, 218 insertions(+) create mode 100644 Week_01/id_16/LeetCode_21_16.cpp create mode 100644 Week_01/id_16/LeetCode_441_16.cpp create mode 100644 Week_01/id_16/LeetCode_50_16 .cpp create mode 100644 Week_01/id_16/LeetCode_83_16.cpp diff --git a/Week_01/id_16/LeetCode_21_16.cpp b/Week_01/id_16/LeetCode_21_16.cpp new file mode 100644 index 00000000..a76c18bc --- /dev/null +++ b/Week_01/id_16/LeetCode_21_16.cpp @@ -0,0 +1,54 @@ +/**[链表][简单] +将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 +示例: +输入:1->2->4, 1->3->4 +输出:1->1->2->3->4->4 +*/ + +/* +个人感悟: +指针的使用要好好琢磨 +疑惑:指针当初创建出来时为了解决什么问题, +没有指针的语言是如何实现链表。 +*/ + +/* +思路1:将一个链表逐个插入另一个链表中 +*/ + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + ListNode *p1 = l1, *p2 = l2; + static ListNode dummy(0); + dummy.next = p1; //将傀儡节点接入p1指针所指向的链表 + ListNode *prev = &dummy; //添加前驱指针 + //将p2指针所指向的链表元素,逐个插入p1 + //因为有傀儡节点,不用考虑头节点改变问题 + while(p1 && p2){ + if(p1->val < p2->val){ + prev = p1; + p1 = p1->next; + }else{ + prev->next = p2; + p2 = p2->next; + prev = prev->next; + prev->next = p1; + } + } + + if(p2){//将现在p2指针所指向的链表的剩余节点加入 + prev->next = p2; + } + + return dummy.next; + } +}; \ No newline at end of file diff --git a/Week_01/id_16/LeetCode_441_16.cpp b/Week_01/id_16/LeetCode_441_16.cpp new file mode 100644 index 00000000..5e1fcf7c --- /dev/null +++ b/Week_01/id_16/LeetCode_441_16.cpp @@ -0,0 +1,53 @@ +/**[二分查找][简单] +你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 +给定一个数字 n,找出可形成完整阶梯行的总行数。 +n 是一个非负整数,并且在32位有符号整型的范围内。 +示例 1: +n = 5 +硬币可排列成以下几行: +¤ +¤ ¤ +¤ ¤ +因为第三行不完整,所以返回2. +示例 2: +n = 8 +硬币可排列成以下几行: +¤ +¤ ¤ +¤ ¤ ¤ +¤ ¤ +因为第四行不完整,所以返回3. +*/ + +/* +个人感悟: +第一种思路好想,主要考虑边界条件,第二种思路不好想,但代码简单,执行效率高。 +疑惑: +本题和二分查找有什么关系?存在利用二分查找的更好解法? +*/ + +/* +思路1:逐行累加硬币个数,总和超过给定硬币数,说明符合条件的行数为当前行数减一 +注意:总数sum的类型为long防止用例给INT_MAX为硬币数,导致int溢出 +*/ +class Solution { +public: + int arrangeCoins(int n) { + int k = 0; + long sum = 0; + while(sum <= n){ + k++; + sum += k; + } + return k-1; + } +}; +/* +思路2:从等差数列求和公式想到,将图形颠倒合并可拼成一个矩形,则k*(k+1)=2n,利用一元二次等式求解公式可得答案。 +*/ +class Solution { +public: + int arrangeCoins(int n) { + return sqrt(n*2.0 + 0.25) - 0.5; + } +}; \ No newline at end of file diff --git a/Week_01/id_16/LeetCode_50_16 .cpp b/Week_01/id_16/LeetCode_50_16 .cpp new file mode 100644 index 00000000..1921cfe7 --- /dev/null +++ b/Week_01/id_16/LeetCode_50_16 .cpp @@ -0,0 +1,69 @@ +/**[二分查找][中等] +实现 pow(x, n) ,即计算 x 的 n 次幂函数。 +示例 1: +输入: 2.00000, 10 +输出: 1024.00000 +示例 2: +输入: 2.10000, 3 +输出: 9.26100 +示例 3: +输入: 2.00000, -2 +输出: 0.25000 +解释: 2^-2 = 1/2^2 = 1/4 = 0.25 +说明: +-100.0 < x < 100.0 +n 是 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1] 。 +*/ + +/* +个人感悟: +第一种思路好想,但是执行效率不好, +思路2与思路3思想差不多,思路2需要考虑边界条件,思路3巧妙的避开了。 +对于用递归还是用for循环还是要多多练习! +要充分考虑数据范围及边界条件。 +*/ + +/*未通过:超时 +思路1:for循环累乘 +结果:超出时间限制 +*/ + +/*未通过:执行错误 +思路2:用递归实现,x^n = (x^(n/2))^2 +测试用例: +1.00000 +-2147483648 +*/ +class Solution { +public: + double myPow(double x, int n) { + if(n == 0) return 1; + if(n == 1) return x; + if(n < 0) return (1 / myPow(x, -n)); //negation of -2147483648 cannot be represented in type 'int' + double res; + if(n % 2 == 0){ + res = myPow(x, n/2); + res *= res; + }else{ + res = myPow(x, (n-1)/2); + res = res*res*x; + } + return res; + } +}; + +/*通过 +思路3:用for循环实现,x^n = (x^2)^(n/2) +注意:代码中i=1时刻需要注意 +*/ +class Solution { +public: + double myPow(double x, int n) { + double res = 1.0; + for(int i = n; i != 0; i /= 2){ + if(i % 2 != 0) res *= x; + x *= x; + } + return n > 0 ? res : 1/res; + } +}; \ No newline at end of file diff --git a/Week_01/id_16/LeetCode_83_16.cpp b/Week_01/id_16/LeetCode_83_16.cpp new file mode 100644 index 00000000..46df44dc --- /dev/null +++ b/Week_01/id_16/LeetCode_83_16.cpp @@ -0,0 +1,42 @@ +/**[链表][简单] +给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 +示例 1: +输入: 1->1->2 +输出: 1->2 +示例 2: +输入: 1->1->2->3->3 +输出: 1->2->3 +*/ + +/* +个人感悟: +指针的使用要好好琢磨 +*/ + +/* +思路1:由于输入的列表已排序,因此我们可以通过将结点的值与它之后的结点进行比较来确定它是否为重复结点。 +如果它是重复的,我们更改当前结点的 next 指针,以便它跳过下一个结点并直接指向下一个结点之后的结点。 +*/ + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + ListNode* current = head; + while(current && current->next){ + if(current->val == current->next->val){ + current->next = current->next->next; + }else{ + current = current->next; + } + } + return head; + } +}; \ No newline at end of file From 41956574e74e9f205846256c5eac4122954621ab Mon Sep 17 00:00:00 2001 From: tolookme Date: Sat, 20 Apr 2019 16:38:50 +0800 Subject: [PATCH 228/780] =?UTF-8?q?078=20=E7=AC=AC=E4=B8=80=E5=91=A8?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=20leetcode24=20leetcode50?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_78/LeetCode_24_78.c | 49 ++++++++++++++++++++++++++++++++++ Week_01/id_78/LeetCode_50_78.c | 43 +++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 Week_01/id_78/LeetCode_24_78.c create mode 100644 Week_01/id_78/LeetCode_50_78.c diff --git a/Week_01/id_78/LeetCode_24_78.c b/Week_01/id_78/LeetCode_24_78.c new file mode 100644 index 00000000..cac66d81 --- /dev/null +++ b/Week_01/id_78/LeetCode_24_78.c @@ -0,0 +1,49 @@ +/* + +给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 +你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 + +示例: +给定 1->2->3->4, 你应该返回 2->1->4->3. + +*/ + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * struct ListNode *next; + * }; + */ + +struct ListNode* swapPairs(struct ListNode* head) { + + if (head == NULL || head->next == NULL) { + return head; + } + + struct ListNode *curr = head; + struct ListNode *next = NULL; + struct ListNode *a = NULL; + struct ListNode *b = NULL; + + struct ListNode node; + node.val = -1; + node.next = NULL; + struct ListNode *prev = &node; + + while (curr && curr->next) { + a = curr; + b = curr->next; + next = b->next; + b->next = a; + a->next = next; + + prev->next = b; + prev = curr; + curr = next; + } + + return node.next; +} + diff --git a/Week_01/id_78/LeetCode_50_78.c b/Week_01/id_78/LeetCode_50_78.c new file mode 100644 index 00000000..f06ca0eb --- /dev/null +++ b/Week_01/id_78/LeetCode_50_78.c @@ -0,0 +1,43 @@ +/* +实现 pow(x, n) ,即计算 x 的 n 次幂函数。 + +示例 1: + +输入: 2.00000, 10 +输出: 1024.00000 +示例 2: + +输入: 2.10000, 3 +输出: 9.26100 +示例 3: + +输入: 2.00000, -2 +输出: 0.25000 +解释: 2-2 = 1/22 = 1/4 = 0.25 +说明: + +-100.0 < x < 100.0 +n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。 +*/ + +double myPow(double x, int n) { + double pow = 1; + + if (n < 0) { + x = 1/x; + n = -n; + } + + while (n > 0) { + + if (n % 2 == 1) { + pow = pow * x; + } + + x = x * x; + n = n >> 1; + } + + return pow; +} + From 9a9d3b7329245fe47e175a4df10aafb3fb9893f2 Mon Sep 17 00:00:00 2001 From: baiyaguang <301070179@qq.com> Date: Sat, 20 Apr 2019 16:43:54 +0800 Subject: [PATCH 229/780] LeetCode_905_81 --- Week_01/id_81/LeetCode_905_81.java | 49 ++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Week_01/id_81/LeetCode_905_81.java diff --git a/Week_01/id_81/LeetCode_905_81.java b/Week_01/id_81/LeetCode_905_81.java new file mode 100644 index 00000000..7a97b0b5 --- /dev/null +++ b/Week_01/id_81/LeetCode_905_81.java @@ -0,0 +1,49 @@ +/* + * 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 +你可以返回满足此条件的任何数组作为答案。 +示例: + 输入:[3,1,2,4] + 输出:[2,4,3,1] + 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 +提示: + 1 <= A.length <= 5000 + 0 <= A[i] <= 5000 + */ +public class SortArrayByParity { + + /* + * @desc 使用两个指针分别指向数组的首尾 + */ + public static int[] sortArrayByParity(int[] A) { + if (A == null || A.length <= 1) + return A; + int start = 0; + int end = A.length - 1; + while (start < end) { + if (A[start] % 2 == 1 && A[end] % 2 == 0) { + int temp = A[start]; + A[start] = A[end]; + A[end] = temp; + start++; + end--; + } else if (A[start] % 2 == 0 && A[end] % 2 == 1) { + start++; + end--; + } else if (A[start] % 2 == 1 && A[end] % 2 == 1) { + end--; + } else if (A[start] % 2 == 0 && A[end] % 2 == 0) { + start++; + } + } + return A; + } + + public static void main(String[] args) { + int[] array = new int[] { 1, 2, 3, 4, 5, 6 }; + sortArrayByParity(array); + for (int item : array) { + System.out.print(item + " "); + } + + } +} From 567c922ab4996473eacd249cd982913cc5a82210 Mon Sep 17 00:00:00 2001 From: baiyaguang <301070179@qq.com> Date: Sat, 20 Apr 2019 17:08:32 +0800 Subject: [PATCH 230/780] LeetCode_922_81 --- Week_01/id_81/LeetCode_922_81.java | 33 ++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Week_01/id_81/LeetCode_922_81.java diff --git a/Week_01/id_81/LeetCode_922_81.java b/Week_01/id_81/LeetCode_922_81.java new file mode 100644 index 00000000..ff263154 --- /dev/null +++ b/Week_01/id_81/LeetCode_922_81.java @@ -0,0 +1,33 @@ +/** + * @author apple + */ +public class SortArrayByParityII { + + /** + * 空间换时间; 时间复杂度 O(n), 空间复杂度 O(n) + * + * @param A + * @return + */ + public static int[] sortArrayByParityII(int[] A) { + if (A == null || A.length <= 1) + return A; + int len = A.length; + int[] arr = new int[len]; + + int odd = 0; + int even = 1; + for (int i = 0; i < len; ++i) { + // 奇数 + if (A[i] % 2 == 0) { + arr[odd] = A[i]; + odd = odd + 2; + // 偶数 + } else { + arr[even] = A[i]; + even = even + 2; + } + } + return arr; + } +} From ddca7c4c75da8b4f064677b36dc9d03debf411b1 Mon Sep 17 00:00:00 2001 From: gebitang Date: Sat, 20 Apr 2019 17:10:30 +0800 Subject: [PATCH 231/780] change file name. --- Week_01/id_87/{LeetCode_33_86.java => LeetCode_33_87.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_87/{LeetCode_33_86.java => LeetCode_33_87.java} (100%) diff --git a/Week_01/id_87/LeetCode_33_86.java b/Week_01/id_87/LeetCode_33_87.java similarity index 100% rename from Week_01/id_87/LeetCode_33_86.java rename to Week_01/id_87/LeetCode_33_87.java From ad9e927412b8fd7ae826ef358b2af06092245757 Mon Sep 17 00:00:00 2001 From: baiyaguang <301070179@qq.com> Date: Sat, 20 Apr 2019 17:33:45 +0800 Subject: [PATCH 232/780] LeetCode_20_81 --- Week_01/id_81/LeetCode_20_81.java | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Week_01/id_81/LeetCode_20_81.java diff --git a/Week_01/id_81/LeetCode_20_81.java b/Week_01/id_81/LeetCode_20_81.java new file mode 100644 index 00000000..9a3d619d --- /dev/null +++ b/Week_01/id_81/LeetCode_20_81.java @@ -0,0 +1,39 @@ +/** + * @author apple + */ + +public class IsValidByStack { + + /** + * 利用栈的特性,注意各种边界条件与判空条件 + * + * @param s + * @return + */ + public static boolean isValid(String s) { + if (s.equals("") || s == null) + return true; + if (s.length() % 2 == 1) + return false; + Stack stack = new Stack<>(); + for (int i = 0; i < s.length(); ++i) { + char temp = s.charAt(i); + if (temp == '(' || temp == '{' || temp == '[') + stack.push(temp); + else { + if (!stack.isEmpty()) { + if (temp == ')' && stack.pop() != '(') { + return false; + } + if (temp == ']' && stack.pop() != '[') { + return false; + } + if (temp == '}' && stack.pop() != '{') { + return false; + } + } + } + } + return stack.isEmpty(); + } +} From 3adf661acdcfaffecba0768d28092305b8c1fd4a Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Sat, 20 Apr 2019 17:37:03 +0800 Subject: [PATCH 233/780] Update leetcode_687_118.java --- Week_01/id_118/leetcode_687_118.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Week_01/id_118/leetcode_687_118.java b/Week_01/id_118/leetcode_687_118.java index 92c75f44..be4efd80 100644 --- a/Week_01/id_118/leetcode_687_118.java +++ b/Week_01/id_118/leetcode_687_118.java @@ -1,5 +1,4 @@ /** - * https://leetcode-cn.com/problems/longest-univalue-path/ * Definition for a binary tree node. * public class TreeNode { * int val; @@ -10,12 +9,12 @@ */ class Solution { - int result; + int ans; public int longestUnivaluePath(TreeNode root) { - result = 0; + ans = 0; longestUnivaluePathByRoot(root); - return result; + return ans; } @@ -36,8 +35,8 @@ public int longestUnivaluePathByRoot(TreeNode root){ arrowRight += right + 1; } - result = Math.max(result, arrowLeft + arrowRight); - return arrowLeft+arrowRight; + ans = Math.max(ans, arrowLeft + arrowRight); + return Math.max(arrowLeft, arrowRight); } } From c017a75978020569ddd9e1da09c91c7cd591c334 Mon Sep 17 00:00:00 2001 From: tianfeng701 Date: Sat, 20 Apr 2019 17:44:31 +0800 Subject: [PATCH 234/780] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E7=BB=84=E4=BB=9D?= =?UTF-8?q?=E5=85=B4=E8=88=9C=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_37/LeetCode153.java | 18 ++++++++++++++++++ Week_01/id_37/LeetCode905.txt | 21 +++++++++++++++++++++ Week_01/id_37/LeetCode922.java | 26 ++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 Week_01/id_37/LeetCode153.java create mode 100644 Week_01/id_37/LeetCode905.txt create mode 100644 Week_01/id_37/LeetCode922.java diff --git a/Week_01/id_37/LeetCode153.java b/Week_01/id_37/LeetCode153.java new file mode 100644 index 00000000..44ef8b74 --- /dev/null +++ b/Week_01/id_37/LeetCode153.java @@ -0,0 +1,18 @@ +class Solution { + public int findMin(int[] nums) { + int low =0; + int high = nums.length-1; + + while(lownums[high]){ + low = mid+1; + }else{ + high = mid; + } + } + + return nums[low]; + } +} \ No newline at end of file diff --git a/Week_01/id_37/LeetCode905.txt b/Week_01/id_37/LeetCode905.txt new file mode 100644 index 00000000..b917186d --- /dev/null +++ b/Week_01/id_37/LeetCode905.txt @@ -0,0 +1,21 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + int[] res=new int[A.length]; + int left=0; + int right=A.length-1; + + for(int i=0;i Date: Sat, 20 Apr 2019 17:55:36 +0800 Subject: [PATCH 235/780] =?UTF-8?q?061=E5=8F=B7=20=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E4=BD=9C=E4=B8=9A=EF=BC=9ALeetCode021=20merge-two-sor?= =?UTF-8?q?ted-lists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_61/LeetCode021.go | 45 ++++++++++++++++++++++++++++++++++++ Week_01/id_61/LeetCode242.go | 26 +++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 Week_01/id_61/LeetCode021.go create mode 100644 Week_01/id_61/LeetCode242.go diff --git a/Week_01/id_61/LeetCode021.go b/Week_01/id_61/LeetCode021.go new file mode 100644 index 00000000..d4270c23 --- /dev/null +++ b/Week_01/id_61/LeetCode021.go @@ -0,0 +1,45 @@ +package wee1 + +import "fmt" + +/* +输入:1->2->4, 1->3->4 +输出:1->1->2->3->4->4 +*/ + +func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { + if l1==nil { + return l2 + }else if l2==nil{ + return l1 + } + c1,p1:=l1,l1 + c2,p2:=l2,l2 + + for c1!=nil && c2!=nil { + if c1.Val>c2.Val { + p2=c2 + c2=c2.Next + + if p1==c1{ + p2.Next=p1 + p1=p2 + l1=p2 + }else{ + p2.Next=c1 + p1.Next=p2 + p1=p2 + + } + }else{ + p1=c1 + c1=c1.Next + } + + } + if c1==nil{ + p1.Next=c2 + } + + return l1 +} diff --git a/Week_01/id_61/LeetCode242.go b/Week_01/id_61/LeetCode242.go new file mode 100644 index 00000000..aae90ba1 --- /dev/null +++ b/Week_01/id_61/LeetCode242.go @@ -0,0 +1,26 @@ +package wee1 + +//242. 有效的字母异位词 + +func isAnagram(s string, t string) bool { + m1, m2 := make(map[string]int, 0), make(map[string]int, 0) + for _, v := range s { + m1[string(v)]++ + } + for _, v := range t { + m2[string(v)]++ + } + for _, v := range s { + if m1[string(v)] != m2[string(v)] { + return false + } + + } + for _, v := range t { + if m1[string(v)] != m2[string(v)] { + return false + } + } + return true + +} From 6005f8c4575a3d96bb4484fb8549abcfb1ac59eb Mon Sep 17 00:00:00 2001 From: Damon_tong Date: Sat, 20 Apr 2019 17:59:29 +0800 Subject: [PATCH 236/780] Rename LeetCode905.txt to LeetCode905.java --- Week_01/id_37/{LeetCode905.txt => LeetCode905.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Week_01/id_37/{LeetCode905.txt => LeetCode905.java} (99%) diff --git a/Week_01/id_37/LeetCode905.txt b/Week_01/id_37/LeetCode905.java similarity index 99% rename from Week_01/id_37/LeetCode905.txt rename to Week_01/id_37/LeetCode905.java index b917186d..f8ea2c48 100644 --- a/Week_01/id_37/LeetCode905.txt +++ b/Week_01/id_37/LeetCode905.java @@ -18,4 +18,4 @@ public int[] sortArrayByParity(int[] A) { return res; } -} \ No newline at end of file +} From 1141a7ffde2cf6c7a22f785157bd1bab0a97bdbc Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 20 Apr 2019 18:01:41 +0800 Subject: [PATCH 237/780] =?UTF-8?q?061=E5=8F=B7=20=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E4=BD=9C=E4=B8=9A=EF=BC=9ALeetCode021=20merge-two-sor?= =?UTF-8?q?ted-lists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_61/{LeetCode021.go => LeetCode_021_061.go} | 0 Week_01/id_61/{LeetCode242.go => LeetCode_242_061.go} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_61/{LeetCode021.go => LeetCode_021_061.go} (100%) rename Week_01/id_61/{LeetCode242.go => LeetCode_242_061.go} (100%) diff --git a/Week_01/id_61/LeetCode021.go b/Week_01/id_61/LeetCode_021_061.go similarity index 100% rename from Week_01/id_61/LeetCode021.go rename to Week_01/id_61/LeetCode_021_061.go diff --git a/Week_01/id_61/LeetCode242.go b/Week_01/id_61/LeetCode_242_061.go similarity index 100% rename from Week_01/id_61/LeetCode242.go rename to Week_01/id_61/LeetCode_242_061.go From 2863ba0c70690a9ccdaef63afd1b59a4f4d59d65 Mon Sep 17 00:00:00 2001 From: "zhangruihao.zhang" Date: Sat, 20 Apr 2019 18:05:36 +0800 Subject: [PATCH 238/780] =?UTF-8?q?geet=E4=BD=9C=E4=B8=9A=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_108/LeetCode_142_108.java | 44 ++++++++++++++ Week_01/id_108/LeetCode_21_108.java | 61 +++++++++++++++++++ Week_01/id_108/LeetCode_24_108.java | 87 ++++++++++++++++++++++++++++ Week_01/id_108/LeetCode_25_108.java | 81 ++++++++++++++++++++++++++ Week_01/id_108/LeetCode_83_108.java | 35 +++++++++++ Week_01/id_108/LeetCode_905_108.java | 51 ++++++++++++++++ Week_01/id_108/LeetCode_922_108.java | 24 ++++++++ 7 files changed, 383 insertions(+) create mode 100644 Week_01/id_108/LeetCode_142_108.java create mode 100644 Week_01/id_108/LeetCode_21_108.java create mode 100644 Week_01/id_108/LeetCode_24_108.java create mode 100644 Week_01/id_108/LeetCode_25_108.java create mode 100644 Week_01/id_108/LeetCode_83_108.java create mode 100644 Week_01/id_108/LeetCode_905_108.java create mode 100644 Week_01/id_108/LeetCode_922_108.java diff --git a/Week_01/id_108/LeetCode_142_108.java b/Week_01/id_108/LeetCode_142_108.java new file mode 100644 index 00000000..ad3e318e --- /dev/null +++ b/Week_01/id_108/LeetCode_142_108.java @@ -0,0 +1,44 @@ +/** + * @author zhangruihao.zhang + * @version v1.0.0 + * @since 2019/04/20 + */ +public class LeetCode_142_108 { + /** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ + public class Solution { + public ListNode detectCycle(ListNode head) { + if(head == null || head.next == null){ + return null; + } + ListNode slow = head; + ListNode quick = head; + while(slow != null && quick != null){ + slow = slow.next; + quick = quick == null || quick.next == null ? null : quick.next.next; + if(slow == quick){ + break; + } + } + + if(slow == null || quick == null){ + return null; + } + slow = head; + while(slow != quick){ + slow = slow.next; + quick = quick.next; + } + return slow; + } + } +} diff --git a/Week_01/id_108/LeetCode_21_108.java b/Week_01/id_108/LeetCode_21_108.java new file mode 100644 index 00000000..df7b94d6 --- /dev/null +++ b/Week_01/id_108/LeetCode_21_108.java @@ -0,0 +1,61 @@ +/** + * @author zhangruihao.zhang + * @version v1.0.0 + * @since 2019/04/20 + */ +public class LeetCode_21_108 { + /** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ + class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if(l1 == null){ + return l2; + } + if(l2 == null){ + return l1; + } + // 链表1的游标 + ListNode cur1 = l1; + // 链表2的游标 + ListNode cur2 = l2; + //合并后的链表的表头 + ListNode head = null; + if(cur1.val < cur2.val){ + head = cur1; + cur1 = cur1.next; + }else{ + head = cur2; + cur2 = cur2.next; + } + //将head指向null,防止指针影响 + head.next = null; + // 合并后的链表的游标 + ListNode cur = head; + while (cur1 != null && cur2 != null){ + if(cur1.val < cur2.val){ + cur.next = cur1; + cur1 = cur1.next; + }else{ + cur.next = cur2; + cur2 = cur2.next; + } + //游标后移,并指向空 + cur = cur.next; + cur.next = null; + } + if(cur1 != null){ + cur.next = cur1; + } + if(cur2 != null){ + cur.next = cur2; + } + return head; + } + } +} diff --git a/Week_01/id_108/LeetCode_24_108.java b/Week_01/id_108/LeetCode_24_108.java new file mode 100644 index 00000000..341f522b --- /dev/null +++ b/Week_01/id_108/LeetCode_24_108.java @@ -0,0 +1,87 @@ +/** + * @author zhangruihao.zhang + * @version v1.0.0 + * @since 2019/04/20 + */ +public class LeetCode_24_108 { + /** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ + class Solution1 { + public ListNode swapPairs(ListNode head) { + if(head == null || head.next == null){ + return head; + } + //标识要交换的第一个节点 + ListNode first = head; + //标识要交换的第二个节点 + ListNode second = head.next; + //标识下一组要交换的节点对 + ListNode cur = second.next; + //交换 + first.next = cur; + second.next = first; + head = second; + ListNode pre = first; + //下一组 + first = cur; + second = cur == null || cur.next == null ? null : cur.next; + cur = second == null ? null : second.next; + while(first != null && second != null){ + //交换 + first.next = cur; + second.next = first; + pre.next = second; + pre = first; + //下一组 + first = cur; + second = cur == null || cur.next == null ? null : cur.next; + cur = second == null ? null : second.next; + } + return head; + } + } + + class Solution2 { + public ListNode swapPairs(ListNode head) { + if(head == null || head.next == null){ + return head; + } + //标识要交换的第一个节点 + ListNode first = head; + //标识要交换的第二个节点 + ListNode second = head.next; + //标识下一组要交换的节点对 + ListNode cur = second.next; + //初始化前节点 + ListNode pre = null ; + //第一次交换 + first.next = cur; + second.next = first; + head = second; + while(true){ + pre = first; + first = cur; + second = cur == null || cur.next == null ? null : cur.next; + cur = second == null ? null : second.next; + if(first == null || second == null){ + break; + } + swap(pre,first,second,cur); + } + return head; + } + + private void swap(ListNode pre,ListNode first,ListNode second,ListNode cur){ + //交换 + first.next = cur; + second.next = first; + pre.next = second; + } + } +} diff --git a/Week_01/id_108/LeetCode_25_108.java b/Week_01/id_108/LeetCode_25_108.java new file mode 100644 index 00000000..49a62a22 --- /dev/null +++ b/Week_01/id_108/LeetCode_25_108.java @@ -0,0 +1,81 @@ +/** + * @author zhangruihao.zhang + * @version v1.0.0 + * @since 2019/04/20 + */ +public class LeetCode_25_108 { + /** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ + class Solution { + public ListNode reverseKGroup(ListNode head, int k) { + if(k == 1){ + return head; + } + if(head == null){ + return head; + } + ListNode tail = needReverse(head,k); + if(tail == null){ + return head; + } + //下一组要翻转的起点 + ListNode nextFirst = tail.next; + tail.next = null; + ListNode[] pair = reverse(head); + head = pair[0]; + ListNode lastTail = pair[1]; + //翻转起点 + ListNode reverseStart = nextFirst; + while(true){ + tail = needReverse(nextFirst,k); + if(tail == null){ + lastTail.next = nextFirst; + break; + } + //翻转起点 + reverseStart = nextFirst; + //跳到未来的下一组 + nextFirst = tail.next; + tail.next = null; + pair = reverse(reverseStart); + lastTail.next = pair[0]; + lastTail = pair[1]; + } + return head; + } + + //判断链表是否可以翻转,如果可以翻转,则返回翻转链表的最后一个节点 + private ListNode needReverse(ListNode head,int k){ + int i = 1; + ListNode cur = head; + while(i0 && (A[right] & 1) == 1){ + right --; + } + if(left < right) { + swap(A,left,right); + } + } + return A; + } + + private void swap(int[] A,int left,int right){ + int tmp = A[left]; + A[left] = A[right]; + A[right] = tmp; + } + } + + class Solution2 { + public int[] sortArrayByParity(int[] A) { + int[] even = new int[A.length]; + int[] odd = new int[A.length]; + int evenIndex = 0; + int oddIndex = 0; + for(int i=0 ;i Date: Sat, 20 Apr 2019 18:06:57 +0800 Subject: [PATCH 239/780] valid-anagram/description --- Week_01/id_61/LeetCode_242_061.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week_01/id_61/LeetCode_242_061.go b/Week_01/id_61/LeetCode_242_061.go index aae90ba1..74020cbf 100644 --- a/Week_01/id_61/LeetCode_242_061.go +++ b/Week_01/id_61/LeetCode_242_061.go @@ -1,7 +1,7 @@ package wee1 //242. 有效的字母异位词 - +//valid-anagram/description func isAnagram(s string, t string) bool { m1, m2 := make(map[string]int, 0), make(map[string]int, 0) for _, v := range s { From 543b47c889a80550c7345437d284710e545ab343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=BD=AC?= Date: Sat, 20 Apr 2019 18:11:59 +0800 Subject: [PATCH 240/780] Create LeetCode_21_100 add leetcode 21 --- Week_01/id_100/LeetCode_21_100 | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Week_01/id_100/LeetCode_21_100 diff --git a/Week_01/id_100/LeetCode_21_100 b/Week_01/id_100/LeetCode_21_100 new file mode 100644 index 00000000..4f6c6d30 --- /dev/null +++ b/Week_01/id_100/LeetCode_21_100 @@ -0,0 +1,29 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode n1, ListNode n2) { + ListNode result = new ListNode(0); + ListNode n0 = result; + while (n1 != null && n1 != null) { + //System.out.println("n1-----" + n1.val + "--------n2-------" + n2.val + if (n1.val < n2.val) { + n0.next = new ListNode(n1.val); + n1 = n1.next; + } else { + n0.next = new ListNode(n2.val); + n2 = n2.next; + } + + n0 = n0.next; + } + if(n1 != null) n0.next = n1; + else n0.next = n2; + return result.next; + } +} From b967a80ae9c02a3356cd8ca0f71c29fafa4ed93a Mon Sep 17 00:00:00 2001 From: gongwentao <326967648@qq.com> Date: Sat, 20 Apr 2019 18:55:52 +0800 Subject: [PATCH 241/780] =?UTF-8?q?week01=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_104/LeetCode_83_104.java | 54 ++++++++++++++++++++++++++++ Week_01/id_104/LeetCode_905_104.java | 30 ++++++++++++++++ Week_01/id_104/NOTE.md | 8 ++++- 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_104/LeetCode_83_104.java create mode 100644 Week_01/id_104/LeetCode_905_104.java diff --git a/Week_01/id_104/LeetCode_83_104.java b/Week_01/id_104/LeetCode_83_104.java new file mode 100644 index 00000000..c799b767 --- /dev/null +++ b/Week_01/id_104/LeetCode_83_104.java @@ -0,0 +1,54 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + //1 遍历集合 + Set sets=new HashSet(); + if(head==null){ + return head; + } + ListNode cur=head; + while(cur.next!=null){ + //将当前元素值 存在Set集合里 进行判重 + sets.add(cur.val); + //3 判断下个元素是否已经在map中存在 如果存在则删除此元素 + if(sets.contains(cur.next.val)){ + cur = removeNextNode(cur); + } + if(cur==null){ + //异常数据 跳出循环 + break; + } + cur=cur.next; + } + //4 打印最后的对象 + ListNode printNode=head; + while(printNode!=null){ + System.out.println(printNode.val); + printNode=printNode.next; + } + return head; + } + + /** + * 删除下一个元素 + * node 当前元素 + **/ + private ListNode removeNextNode(ListNode node){ + if(node==null){ + return null; + } + if(nodex.next==null){ + return node; + } + node.next=nodex.next.next; + return node; + + } +} \ No newline at end of file diff --git a/Week_01/id_104/LeetCode_905_104.java b/Week_01/id_104/LeetCode_905_104.java new file mode 100644 index 00000000..bb44d8f0 --- /dev/null +++ b/Week_01/id_104/LeetCode_905_104.java @@ -0,0 +1,30 @@ +class Solution { + + public int[] sortArrayByParity(int[] A) { + if(A==null){ + return A; + } + // 记录数组两个指针位置 i,j + + int i=0; + int j=A.length-1; + int tmp; + // i是从开始慢慢递增,j是从末尾慢慢递减 + // 如果i Date: Sat, 20 Apr 2019 19:26:04 +0800 Subject: [PATCH 242/780] add notes and practice --- Week_01/id_64/NOTE.md | 41 ++++++++++++++- Week_01/id_64/merge-two-sorted-lists.js | 44 ++++++++++++++++ .../remove-duplicates-from-sorted-list.js | 35 +++++++++++++ Week_01/id_64/sort-array-by-parity.js | 25 +++++++++ Week_01/id_64/swap-nodes-in-pairs.js | 51 +++++++++++++++++++ Week_01/id_64/valid-anagram.js | 33 ++++++++++++ Week_01/id_64/valid-parentheses.js | 29 +++++++++++ 7 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_64/merge-two-sorted-lists.js create mode 100644 Week_01/id_64/remove-duplicates-from-sorted-list.js create mode 100644 Week_01/id_64/sort-array-by-parity.js create mode 100644 Week_01/id_64/swap-nodes-in-pairs.js create mode 100644 Week_01/id_64/valid-anagram.js create mode 100644 Week_01/id_64/valid-parentheses.js diff --git a/Week_01/id_64/NOTE.md b/Week_01/id_64/NOTE.md index c684e62f..939a2c8a 100644 --- a/Week_01/id_64/NOTE.md +++ b/Week_01/id_64/NOTE.md @@ -1 +1,40 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 + +# 书本笔记 +![1](https://user-images.githubusercontent.com/49065208/56456608-2ac5c780-63a1-11e9-9b5b-da7966da2a1b.jpeg) + +![2](https://user-images.githubusercontent.com/49065208/56456609-2ac5c780-63a1-11e9-8876-e529d5b1c58a.jpeg) + +![3](https://user-images.githubusercontent.com/49065208/56456610-2ac5c780-63a1-11e9-8fa7-7bd8397b5f9d.jpeg) + +![4](https://user-images.githubusercontent.com/49065208/56456611-2b5e5e00-63a1-11e9-9ce6-4df39825b3c8.jpeg) + +![5](https://user-images.githubusercontent.com/49065208/56456612-2b5e5e00-63a1-11e9-9d28-7699e32d2f59.jpeg) + +![6](https://user-images.githubusercontent.com/49065208/56456613-2b5e5e00-63a1-11e9-9e84-37c56f230e05.jpeg) + +![7](https://user-images.githubusercontent.com/49065208/56456614-2bf6f480-63a1-11e9-8bae-865eaeecdca3.jpeg) + +![8](https://user-images.githubusercontent.com/49065208/56456615-2bf6f480-63a1-11e9-9cac-2e5c2d51a6f9.jpeg) + +![9](https://user-images.githubusercontent.com/49065208/56456616-2bf6f480-63a1-11e9-88c7-b21411b3972a.jpeg) + +![10](https://user-images.githubusercontent.com/49065208/56456617-2c8f8b00-63a1-11e9-90f8-f9aa8e4a1eb8.jpeg) + +![11](https://user-images.githubusercontent.com/49065208/56456618-2c8f8b00-63a1-11e9-93d1-654ccc441e98.jpeg) + +![12](https://user-images.githubusercontent.com/49065208/56456619-2c8f8b00-63a1-11e9-8203-c1ec7f8f2658.jpeg) + +![13](https://user-images.githubusercontent.com/49065208/56456620-2d282180-63a1-11e9-8bf2-76c6c7881efc.jpeg) + +![14](https://user-images.githubusercontent.com/49065208/56456621-2d282180-63a1-11e9-8963-a9a0973c9871.jpeg) + +![15](https://user-images.githubusercontent.com/49065208/56456622-2d282180-63a1-11e9-8fce-87bc1c45cd7d.jpeg) + +![16](https://user-images.githubusercontent.com/49065208/56456623-2dc0b800-63a1-11e9-82ae-8f0bb87a3b18.jpeg) + +![17](https://user-images.githubusercontent.com/49065208/56456624-2dc0b800-63a1-11e9-96d2-55dff051db5b.jpeg) + +![18](https://user-images.githubusercontent.com/49065208/56456625-2dc0b800-63a1-11e9-8514-9a0e44d06f24.jpeg) + +![19](https://user-images.githubusercontent.com/49065208/56456626-2e594e80-63a1-11e9-8221-6f16f373f14c.jpeg) diff --git a/Week_01/id_64/merge-two-sorted-lists.js b/Week_01/id_64/merge-two-sorted-lists.js new file mode 100644 index 00000000..8c0ffd21 --- /dev/null +++ b/Week_01/id_64/merge-two-sorted-lists.js @@ -0,0 +1,44 @@ +/** + * Definition for singly-linked list. + * function ListNode(val) { + * this.val = val; + * this.next = null; + * } + */ +/** + * 21. 合并两个有序链表 + * https://leetcode-cn.com/problems/merge-two-sorted-lists/ + * + * @param {ListNode} l1 + * @param {ListNode} l2 + * @return {ListNode} + */ +var mergeTwoLists = function(l1, l2) { + const dummyHead = new ListNode(); + let curr = dummyHead; + let currL1 = l1; + let currL2 = l2; + + while(currL1 != null && currL2 != null) { + // 比较两个结点的大小,小的先加入新链表 + if (currL1.val <= currL2.val) { + curr.next = currL1; + currL1 = currL1.next; + } else { + curr.next = currL2; + currL2 = currL2.next; + } + curr = curr.next; + } + + // 如果 l1 还没遍历完直接加入新链表 + if (currL1 != null) { + curr.next = currL1; + } + // 如果 l2 还没遍历完直接加入新链表 + if (currL2 != null) { + curr.next = currL2; + } + + return dummyHead.next; +}; \ No newline at end of file diff --git a/Week_01/id_64/remove-duplicates-from-sorted-list.js b/Week_01/id_64/remove-duplicates-from-sorted-list.js new file mode 100644 index 00000000..cae9d99a --- /dev/null +++ b/Week_01/id_64/remove-duplicates-from-sorted-list.js @@ -0,0 +1,35 @@ +/** + * Definition for singly-linked list. + * function ListNode(val) { + * this.val = val; + * this.next = null; + * } + */ +/** + * 83. 删除排序链表中的重复元素 + * https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ + * + * 由于链表是排序的, 只需要遍历链表,并把点前结点的值与后继结点的值比较 + * 如果相等则:current.next = current.next.next + * + * @param {ListNode} head + * @return {ListNode} + */ +var deleteDuplicates = function(head) { + if (head === null) { return head; } + + const dummyHead = new ListNode(); // 使用虚拟头结点 + dummyHead.next = head; + let current = dummyHead; + + while(current.next) { + // 删除结点 + if (current.val === current.next.val) { + current.next = current.next.next; + } else {// 移动结点 + current = current.next; + } + } + + return dummyHead.next; +}; \ No newline at end of file diff --git a/Week_01/id_64/sort-array-by-parity.js b/Week_01/id_64/sort-array-by-parity.js new file mode 100644 index 00000000..de3b1a3a --- /dev/null +++ b/Week_01/id_64/sort-array-by-parity.js @@ -0,0 +1,25 @@ +/** + * 905. 按奇偶排序数组 + * https://leetcode-cn.com/problems/sort-array-by-parity/submissions/ + * 双指针解法,左指针指偶数,右指针指奇数 + * @param {number[]} A + * @return {number[]} + */ +var sortArrayByParity = function(A) { + if (A == null || A.length <= 1) { return A; } + let l = 0; // 偶数左指针 + let r = A.length - 1; // 奇数右指针 + while(l < r) { + // + if (A[l] % 2 == 1 && A[r] % 2 == 0) { + [A[l], A[r]] = [A[r], A[l]]; + } else if (A[l] % 2 == 0) { + l++; // 偶数指针右移 + } else if (A[r] % 2 == 1) { + r--; // 奇数指针左移 + } + + } + + return A; +}; \ No newline at end of file diff --git a/Week_01/id_64/swap-nodes-in-pairs.js b/Week_01/id_64/swap-nodes-in-pairs.js new file mode 100644 index 00000000..c9e74e1f --- /dev/null +++ b/Week_01/id_64/swap-nodes-in-pairs.js @@ -0,0 +1,51 @@ +/** + * Definition for singly-linked list. + * function ListNode(val) { + * this.val = val; + * this.next = null; + * } + */ +/** + * 24. 两两交换链表中的节点 + * https://leetcode-cn.com/problems/swap-nodes-in-pairs/ + * 迭代实现 + * 交换: prev.next -> curr.next; curr.next.next -> curr; curr.next = curr.next.next; + * 移动: prev = curr; curr = curr.next; + * + * @param {ListNode} head + * @return {ListNode} + */ +var swapPairs = function(head) { + const dummyHead = new ListNode(); + dummyHead.next = head; + let prev = dummyHead; // 前驱 + let curr = dummyHead.next // 当前 + while(curr != null && curr.next != null) { + const tmp = curr.next.next; + prev.next = curr.next; + curr.next.next = curr; + curr.next = tmp; + + prev = curr; + curr = curr.next; + } + + return dummyHead.next; +}; + +/** + * 24. 两两交换链表中的节点 + * https://leetcode-cn.com/problems/swap-nodes-in-pairs/ + * 递归实现 + * + * @param {ListNode} head + * @return {ListNode} + */ +var swapPairs = function(head) { + if (head === null || head.next === null) { return head; } + const next = head.next; + head.next = swapPairs(next.next); + next.next = head; + + return next; +}; \ No newline at end of file diff --git a/Week_01/id_64/valid-anagram.js b/Week_01/id_64/valid-anagram.js new file mode 100644 index 00000000..45f86b10 --- /dev/null +++ b/Week_01/id_64/valid-anagram.js @@ -0,0 +1,33 @@ +/** + * 242. 有效的字母异位词 + * https://leetcode-cn.com/problems/valid-anagram/ + * 使用 map 累加 s 中每个元素个数,t 递减每个元素个数,元素为零即删除,最终 map size 为 0 + * + * @param {string} s + * @param {string} t + * @return {boolean} + */ +var isAnagram = function(s, t) { + if (s.length != t.length) { return false; } + const map = new Map(); + for (let i = 0; i < s.length; i++) { + const e = s.charAt(i); + if (map.has(e)) { + map.set(e, map.get(e) + 1); + } else { + map.set(e, 1); + } + } + + for (let i = 0; i < t.length; i++) { + const e = t.charAt(i); + if (map.has(e)) { + map.set(e, map.get(e) - 1); + if (map.get(e) == 0) { + map.delete(e); + } + } + } + + return map.size == 0; +}; \ No newline at end of file diff --git a/Week_01/id_64/valid-parentheses.js b/Week_01/id_64/valid-parentheses.js new file mode 100644 index 00000000..5c8d2531 --- /dev/null +++ b/Week_01/id_64/valid-parentheses.js @@ -0,0 +1,29 @@ +/** + * 20. 有效的括号 + * https://leetcode-cn.com/problems/valid-parentheses/ + * 通过栈,匹配左刮号进站,匹配右刮号出站 + * @param {string} s + * @return {boolean} + */ +var isValid = function(s) { + var stack = []; + for (var i = 0; i < s.length; i++) { + var c = s.charAt(i); + if (/\{|\[|\(/g.test(c)) { + stack.push(c); + } else { + if (!stack.length) { return false; } + var topChar = stack.pop(); + if (c == '}' && topChar != '{') { + return false; + } + if (c == ']' && topChar != '[') { + return false; + } + if (c == ')' && topChar != '(') { + return false; + } + } + } + return !stack.length; +}; \ No newline at end of file From 7dfea0ab4df23be2b6465c89080d129739900a7d Mon Sep 17 00:00:00 2001 From: Damon_tong Date: Sat, 20 Apr 2019 19:31:11 +0800 Subject: [PATCH 243/780] Rename LeetCode153.java to LeetCode_153_37.java --- Week_01/id_37/{LeetCode153.java => LeetCode_153_37.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Week_01/id_37/{LeetCode153.java => LeetCode_153_37.java} (99%) diff --git a/Week_01/id_37/LeetCode153.java b/Week_01/id_37/LeetCode_153_37.java similarity index 99% rename from Week_01/id_37/LeetCode153.java rename to Week_01/id_37/LeetCode_153_37.java index 44ef8b74..106beb03 100644 --- a/Week_01/id_37/LeetCode153.java +++ b/Week_01/id_37/LeetCode_153_37.java @@ -15,4 +15,4 @@ public int findMin(int[] nums) { return nums[low]; } -} \ No newline at end of file +} From 0931e2fa49221d4dfc62b2fa8c9588dd6e33e9f2 Mon Sep 17 00:00:00 2001 From: Damon_tong Date: Sat, 20 Apr 2019 19:31:43 +0800 Subject: [PATCH 244/780] Rename LeetCode922.java to LeetCode_922_37.java --- Week_01/id_37/{LeetCode922.java => LeetCode_922_37.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Week_01/id_37/{LeetCode922.java => LeetCode_922_37.java} (99%) diff --git a/Week_01/id_37/LeetCode922.java b/Week_01/id_37/LeetCode_922_37.java similarity index 99% rename from Week_01/id_37/LeetCode922.java rename to Week_01/id_37/LeetCode_922_37.java index e77a5553..8c159d70 100644 --- a/Week_01/id_37/LeetCode922.java +++ b/Week_01/id_37/LeetCode_922_37.java @@ -23,4 +23,4 @@ public int[] sortArrayByParityII(int[] A) { return res; } -} \ No newline at end of file +} From b8fbdc6771e6fda52d1c4d90308e6d508d7dc8cb Mon Sep 17 00:00:00 2001 From: tidelgl Date: Sat, 20 Apr 2019 19:31:43 +0800 Subject: [PATCH 245/780] update file name format --- Week_01/id_64/{valid-parentheses.js => LeetCode_64_20.js} | 0 Week_01/id_64/{merge-two-sorted-lists.js => LeetCode_64_21.js} | 0 Week_01/id_64/{swap-nodes-in-pairs.js => LeetCode_64_24.js} | 0 Week_01/id_64/{valid-anagram.js => LeetCode_64_242.js} | 0 .../{remove-duplicates-from-sorted-list.js => LeetCode_64_83.js} | 0 Week_01/id_64/{sort-array-by-parity.js => LeetCode_64_905.js} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_64/{valid-parentheses.js => LeetCode_64_20.js} (100%) rename Week_01/id_64/{merge-two-sorted-lists.js => LeetCode_64_21.js} (100%) rename Week_01/id_64/{swap-nodes-in-pairs.js => LeetCode_64_24.js} (100%) rename Week_01/id_64/{valid-anagram.js => LeetCode_64_242.js} (100%) rename Week_01/id_64/{remove-duplicates-from-sorted-list.js => LeetCode_64_83.js} (100%) rename Week_01/id_64/{sort-array-by-parity.js => LeetCode_64_905.js} (100%) diff --git a/Week_01/id_64/valid-parentheses.js b/Week_01/id_64/LeetCode_64_20.js similarity index 100% rename from Week_01/id_64/valid-parentheses.js rename to Week_01/id_64/LeetCode_64_20.js diff --git a/Week_01/id_64/merge-two-sorted-lists.js b/Week_01/id_64/LeetCode_64_21.js similarity index 100% rename from Week_01/id_64/merge-two-sorted-lists.js rename to Week_01/id_64/LeetCode_64_21.js diff --git a/Week_01/id_64/swap-nodes-in-pairs.js b/Week_01/id_64/LeetCode_64_24.js similarity index 100% rename from Week_01/id_64/swap-nodes-in-pairs.js rename to Week_01/id_64/LeetCode_64_24.js diff --git a/Week_01/id_64/valid-anagram.js b/Week_01/id_64/LeetCode_64_242.js similarity index 100% rename from Week_01/id_64/valid-anagram.js rename to Week_01/id_64/LeetCode_64_242.js diff --git a/Week_01/id_64/remove-duplicates-from-sorted-list.js b/Week_01/id_64/LeetCode_64_83.js similarity index 100% rename from Week_01/id_64/remove-duplicates-from-sorted-list.js rename to Week_01/id_64/LeetCode_64_83.js diff --git a/Week_01/id_64/sort-array-by-parity.js b/Week_01/id_64/LeetCode_64_905.js similarity index 100% rename from Week_01/id_64/sort-array-by-parity.js rename to Week_01/id_64/LeetCode_64_905.js From 6eb21a28e3c3c2ee5bc8c578eb74233094b6aa7d Mon Sep 17 00:00:00 2001 From: Damon_tong Date: Sat, 20 Apr 2019 19:32:12 +0800 Subject: [PATCH 246/780] Rename LeetCode905.java to LeetCode_905_37.java --- Week_01/id_37/{LeetCode905.java => LeetCode_905_37.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_37/{LeetCode905.java => LeetCode_905_37.java} (100%) diff --git a/Week_01/id_37/LeetCode905.java b/Week_01/id_37/LeetCode_905_37.java similarity index 100% rename from Week_01/id_37/LeetCode905.java rename to Week_01/id_37/LeetCode_905_37.java From 934066fc84523e79d854efccb1986977f3e8b450 Mon Sep 17 00:00:00 2001 From: Tommy Date: Sat, 20 Apr 2019 19:43:02 +0800 Subject: [PATCH 247/780] First commit --- Week_01/id_75/LeetCode_21_75.java | 33 ++++++++++++++++++++++++++++++ Week_01/id_75/LeetCode_24_75.java | 17 +++++++++++++++ Week_01/id_75/LeetCode_81_75.java | 0 Week_01/id_75/LeetCode_83_75.java | 19 +++++++++++++++++ Week_01/id_75/LeetCode_905_75.java | 17 +++++++++++++++ Week_01/id_75/LeetCode_922_75.java | 17 +++++++++++++++ Week_01/id_75/NOTE.md | 15 +++++++++++++- 7 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_75/LeetCode_21_75.java create mode 100644 Week_01/id_75/LeetCode_24_75.java create mode 100644 Week_01/id_75/LeetCode_81_75.java create mode 100644 Week_01/id_75/LeetCode_83_75.java create mode 100644 Week_01/id_75/LeetCode_905_75.java create mode 100644 Week_01/id_75/LeetCode_922_75.java diff --git a/Week_01/id_75/LeetCode_21_75.java b/Week_01/id_75/LeetCode_21_75.java new file mode 100644 index 00000000..b6e6729a --- /dev/null +++ b/Week_01/id_75/LeetCode_21_75.java @@ -0,0 +1,33 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + //增加哨兵节点 + ListNode head = new ListNode(0); + ListNode cur = head; + while (l1 != null && l2 != null) { + if (l1.val < l2.val) { + cur.next = l1; + cur = cur.next; + l1 = l1.next; + } else { + cur.next = l2; + cur = cur.next; + l2 = l2.next; + } + } + if (l1 == null) { + cur.next = l2; + } else { + cur.next = l1; + } + return head.next; + } + +} \ No newline at end of file diff --git a/Week_01/id_75/LeetCode_24_75.java b/Week_01/id_75/LeetCode_24_75.java new file mode 100644 index 00000000..0fa61e88 --- /dev/null +++ b/Week_01/id_75/LeetCode_24_75.java @@ -0,0 +1,17 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode swapPairs(ListNode head) { + if(head == null || head.next == null) return head; + ListNode list = head.next; + head.next = swapPairs(list.next); + list.next = head; + return list; + } +} \ No newline at end of file diff --git a/Week_01/id_75/LeetCode_81_75.java b/Week_01/id_75/LeetCode_81_75.java new file mode 100644 index 00000000..e69de29b diff --git a/Week_01/id_75/LeetCode_83_75.java b/Week_01/id_75/LeetCode_83_75.java new file mode 100644 index 00000000..726d21c4 --- /dev/null +++ b/Week_01/id_75/LeetCode_83_75.java @@ -0,0 +1,19 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + if(head == null || head.next == null) return head; + head.next = deleteDuplicates(head.next); + if(head.val != head.next.val){ + return head; + } else { + return head.next; + } + } +} \ No newline at end of file diff --git a/Week_01/id_75/LeetCode_905_75.java b/Week_01/id_75/LeetCode_905_75.java new file mode 100644 index 00000000..4f7dc976 --- /dev/null +++ b/Week_01/id_75/LeetCode_905_75.java @@ -0,0 +1,17 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + int[] res = new int[A.length]; + //初始化左右指针 + int left = 0,right = A.length - 1; + for(int i = 0; i < A.length; i++){ + if(A[i] % 2 == 0){ + res[left] = A[i]; + left = left + 1; + } else { + res[right] = A[i]; + right = right - 1; + } + } + return res; + } +} \ No newline at end of file diff --git a/Week_01/id_75/LeetCode_922_75.java b/Week_01/id_75/LeetCode_922_75.java new file mode 100644 index 00000000..434835a7 --- /dev/null +++ b/Week_01/id_75/LeetCode_922_75.java @@ -0,0 +1,17 @@ +class Solution { + public int[] sortArrayByParityII(int[] A) { + int oddIndex = 0; + int evenIndex = 1; + int[] res = new int[A.length]; + for(int i = 0;i < A.length; i++){ + if(A[i] % 2 == 0){ + res[oddIndex] = A[i]; + oddIndex = oddIndex + 2; + } else { + res[evenIndex] = A[i]; + evenIndex = evenIndex + 2; + } + } + return res; + } +} \ No newline at end of file diff --git a/Week_01/id_75/NOTE.md b/Week_01/id_75/NOTE.md index c684e62f..02f39a39 100644 --- a/Week_01/id_75/NOTE.md +++ b/Week_01/id_75/NOTE.md @@ -1 +1,14 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +本周学习总结 +本周通过刷了几道题,对链表和数组的结构操作掌握比以前更加熟练。在学习过程中应该和做产品一样,由简入难,层层迭代。 + +链表方面: +对链表的指针掌握不够熟练,例如不会熟练使用哨兵节点,指针偶尔指错位置。 +数组方面: +有两道简单题目的空间复杂度有待优化。 +二分查找方面: +取中间值是用mid = low + (high - low)/2还是用mid = (high + low)/2,还是有写错的情况。 + +总结: +在写代码的过程中,把思路以形象的文字图画在纸上表现出来有些吃力,需勤加练习和多向他人借鉴。 +对学习时间整体安排不是十分合理,还有大部分的题目没有用代码实现,例如栈、递归和排序,需要合理安排学习时间。 From 00fd308a2b9d3c29106bd3eb1b3f08bc45fd404c Mon Sep 17 00:00:00 2001 From: MrQingQuan Date: Sat, 20 Apr 2019 19:48:09 +0800 Subject: [PATCH 248/780] Create leetcode_21_046.cpp --- Week_01/id_46/leetcode_21_046.cpp | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Week_01/id_46/leetcode_21_046.cpp diff --git a/Week_01/id_46/leetcode_21_046.cpp b/Week_01/id_46/leetcode_21_046.cpp new file mode 100644 index 00000000..b79b6390 --- /dev/null +++ b/Week_01/id_46/leetcode_21_046.cpp @@ -0,0 +1,39 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + if(!l1 && !l2) return NULL; + ListNode* head = new ListNode(0); + ListNode* pre = head; + while(l1 && l2){ + if(l1->val<=l2->val){ + head->next = l1; + head=head->next; + l1=l1->next; + } + else { + head->next = l2; + head=head->next; + l2=l2->next; + } + } + while(l1){ + head->next = l1; + head=head->next; + l1=l1->next; + } + while(l2){ + head->next = l2; + head=head->next; + l2=l2->next; + } + return pre->next; + } +}; From 82efb0526f3a45c09d91583e1b91f2356b29aa24 Mon Sep 17 00:00:00 2001 From: MrQingQuan Date: Sat, 20 Apr 2019 19:48:50 +0800 Subject: [PATCH 249/780] Create leetcode_24_046.cpp --- Week_01/id_46/leetcode_24_046.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Week_01/id_46/leetcode_24_046.cpp diff --git a/Week_01/id_46/leetcode_24_046.cpp b/Week_01/id_46/leetcode_24_046.cpp new file mode 100644 index 00000000..3195a3fd --- /dev/null +++ b/Week_01/id_46/leetcode_24_046.cpp @@ -0,0 +1,27 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* swapPairs(ListNode* head) { + if(!head || !head->next) return head; + ListNode* pre=new ListNode(0); + pre->next=head; + ListNode*cur=pre; + while(cur->next && cur->next->next){ + ListNode* tmp1 = cur->next; + ListNode* tmp2 = tmp1->next; + ListNode* tmp3 = tmp2->next; + tmp2->next=tmp1; + tmp1->next = tmp3; + cur->next = tmp2; + cur=tmp1; + } + return pre->next; + } +}; From 91193dd1c4d245085ed30aad38ae91afcd8d1fcc Mon Sep 17 00:00:00 2001 From: MrQingQuan Date: Sat, 20 Apr 2019 19:49:18 +0800 Subject: [PATCH 250/780] Create leetcode_81_046.cpp --- Week_01/id_46/leetcode_81_046.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Week_01/id_46/leetcode_81_046.cpp diff --git a/Week_01/id_46/leetcode_81_046.cpp b/Week_01/id_46/leetcode_81_046.cpp new file mode 100644 index 00000000..6c6d8207 --- /dev/null +++ b/Week_01/id_46/leetcode_81_046.cpp @@ -0,0 +1,28 @@ +class Solution { +public: + bool search(vector& nums, int target) { + if(nums.size()==0) return false; + int l=0,r=nums.size()-1; + while(l<=r){ + while(l>1); + if(nums[mid]==target) return true; + else{ + if(nums[mid]=target) + l=mid+1; + else + r=mid-1; + } + else{ + if(nums[mid]>target&&nums[l]<=target) + r=mid-1; + else + l=mid+1; + } + } + } + return false; + } +}; From e978eb743cc3257fa185da6a64ab1053ccfadc59 Mon Sep 17 00:00:00 2001 From: MrQingQuan Date: Sat, 20 Apr 2019 19:49:38 +0800 Subject: [PATCH 251/780] Create leetcode_83_046.cpp --- Week_01/id_46/leetcode_83_046.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Week_01/id_46/leetcode_83_046.cpp diff --git a/Week_01/id_46/leetcode_83_046.cpp b/Week_01/id_46/leetcode_83_046.cpp new file mode 100644 index 00000000..9feee12f --- /dev/null +++ b/Week_01/id_46/leetcode_83_046.cpp @@ -0,0 +1,29 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + if(!head || !head->next) return head; + ListNode* pre = head; + ListNode* cur = head->next; + while(cur){ + if(cur->val==pre->val){ + ListNode* tmp=cur; + pre->next=cur->next; + cur=cur->next; + delete tmp; + } + else{ + pre=cur; + cur=cur->next; + } + } + return head; + } +}; From ba57e7e0ab5d531b063775e6894e3aa822e4dde8 Mon Sep 17 00:00:00 2001 From: MrQingQuan Date: Sat, 20 Apr 2019 19:50:00 +0800 Subject: [PATCH 252/780] Create leetcode_142_046.cpp --- Week_01/id_46/leetcode_142_046.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Week_01/id_46/leetcode_142_046.cpp diff --git a/Week_01/id_46/leetcode_142_046.cpp b/Week_01/id_46/leetcode_142_046.cpp new file mode 100644 index 00000000..1696fe29 --- /dev/null +++ b/Week_01/id_46/leetcode_142_046.cpp @@ -0,0 +1,24 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *detectCycle(ListNode *head) { + set res; + while(head){ + auto it = res.find(head); + if(it!=res.end()) + return head; + else{ + res.insert(head); + head = head->next; + } + } + return NULL; + } +}; From ca7a49ce5d1fdbf4b80c11d84343cccaea7fdef9 Mon Sep 17 00:00:00 2001 From: MrQingQuan Date: Sat, 20 Apr 2019 19:50:19 +0800 Subject: [PATCH 253/780] Create leetcode_503_046.cpp --- Week_01/id_46/leetcode_503_046.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Week_01/id_46/leetcode_503_046.cpp diff --git a/Week_01/id_46/leetcode_503_046.cpp b/Week_01/id_46/leetcode_503_046.cpp new file mode 100644 index 00000000..cb89248f --- /dev/null +++ b/Week_01/id_46/leetcode_503_046.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + vector nextGreaterElements(vector& nums) { + vector res(nums.size(),-1); + stack> stk; + int len = nums.size(); + for(int i=0; i(nums[i], i)); + } + } + return res; + } +}; From 63f7b6fac4d78e22d4047ab7a8181c348147fe17 Mon Sep 17 00:00:00 2001 From: MrQingQuan Date: Sat, 20 Apr 2019 19:50:38 +0800 Subject: [PATCH 254/780] Create leetcode_687_046.cpp --- Week_01/id_46/leetcode_687_046.cpp | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Week_01/id_46/leetcode_687_046.cpp diff --git a/Week_01/id_46/leetcode_687_046.cpp b/Week_01/id_46/leetcode_687_046.cpp new file mode 100644 index 00000000..d22bd8e5 --- /dev/null +++ b/Week_01/id_46/leetcode_687_046.cpp @@ -0,0 +1,40 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode(int x) : val(x), left(NULL), right(NULL) {} + * }; + */ +class Solution { +public: + int respath=0; + int longestUnivaluePath(TreeNode* root) { + if(!root) return 0; + maxpath(root); + return respath; + } + int maxpath(TreeNode* root){ + int res=0,le=0,ri=0,nextLen;; + if(!root->left && !root->right) return 0; + if(root->left){ + nextLen = maxpath(root->left); + if(root->val==(root->left)->val){ + le = nextLen+1; + res += le; + } + else le=0; + } + if(root->right){ + nextLen = maxpath(root->right); + if(root->val==(root->right)->val){ + ri = nextLen+1; + res += ri; + } + else ri=0; + } + respath = max(respath,res); + return max(le,ri); + } +}; From e719991e4cab6c1d20f53a9a77d0b399ddbc851b Mon Sep 17 00:00:00 2001 From: Tommy Date: Sat, 20 Apr 2019 19:59:47 +0800 Subject: [PATCH 255/780] Second commit --- Week_01/id_75/LeetCode_81_75.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Week_01/id_75/LeetCode_81_75.java diff --git a/Week_01/id_75/LeetCode_81_75.java b/Week_01/id_75/LeetCode_81_75.java deleted file mode 100644 index e69de29b..00000000 From 586e7567d340723e790584f9c5dde47a529d2c47 Mon Sep 17 00:00:00 2001 From: tidelgl Date: Sat, 20 Apr 2019 20:28:21 +0800 Subject: [PATCH 256/780] add notes --- Week_01/id_64/NOTE.md | 73 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/Week_01/id_64/NOTE.md b/Week_01/id_64/NOTE.md index 939a2c8a..b83dfb0f 100644 --- a/Week_01/id_64/NOTE.md +++ b/Week_01/id_64/NOTE.md @@ -1,5 +1,78 @@ # 学习笔记 +## 常用数据结构的小结及 ADT API +- Stack 栈,后进先出(LIFL) + - push(val) + - pop(), remove and return the top element + - peek(), return the last element +- set 集合 + - add(val) + - remove(val) + - has(val) + - values(), return the collection + - size() + - isEmpty() + - union(anotherSet), return union of two sets + - intersection(anotherSet), return intersection of two sets + - difference(anotherSet), return the different of two sets + - subset(subSet), return if subSet is a sub set of current set. +- Queue 队列,先进先出(FIFO)enqueue() -> font->1->2->...->end <- dequeue() + - enquue(val), add + - dequeue(), remove and return the last element + - font(), return the first element + - size() + - isEnpty() +- Binary search tree 二分搜索树 + - add(val), val < node.val -> add to left, val > node.val -> add to right, + - delete(val), left = null, remove right; right = null, remove left; otherwise find mimnNode = minNode(node.rigth), replace node with minNode and remove minNode. + - inOrder() + - preOrder() + - postOrder() + - levelOrder(), push node to a queue, dequeue -> enqueue left node -> enqueue right node, repeat until queue is empty + - isBlance(), minHeight() <= maxHeight - 1 + - minHeight() + - maxHeight() + - minNode() + - maxNode() +- Map 映射, 增删改查都是 O(1) + - collection() + - set(key, val) + - get(key) + - has(key) + - delete(key) + - clear() + - size() +- Hash Table 哈希表 + - add(val) + - remove(val) + - lookup(val) +- Linked list 链表, 增删改查都是 O(n) + - head() + - tail() + - addAt(index, val), O(n) + - getAt(index), O(n) + - remove(val), O(n) + - has(val), O(n) + - isEmpty() +- Trie 字典树, 每个节点都是 map, 跟节点为空 + - add(val) + - isWord(val) + - contains(val) + - isPrefix(val) +- Heap 大小堆, 用于优化优先队列, 用数组保存 + - insert(node), 1. add node to the end of the array, 2. siftUp untile parent > node + - findMax(), return the index = 0 of the array + - extratMax(), return the index = 0 and remove it, 1. swap(0, size -1), 2. remove index = size -1, 3. siftDown() + - remove(), remove the root node + - sort(), return a sorted array + - replace(index), replace the root node + - heapify(array), transform an array into a heap, 1. add node to the end of the array, 2. siftDown() + - siftUp(index), sift up a node, make sure parent > left & parent > right + - siftDown(index), sift down a node, make sure parent > left & parent > right + - parent(index), return a node's parent index in the array + - left(index), return a node's left index in the array + - right(index), return a node's right index in the array + # 书本笔记 ![1](https://user-images.githubusercontent.com/49065208/56456608-2ac5c780-63a1-11e9-9b5b-da7966da2a1b.jpeg) From 67bfe481d6cc90044b83cb06e4775516de25daa8 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 20 Apr 2019 20:29:17 +0800 Subject: [PATCH 257/780] =?UTF-8?q?060=20=E7=AC=AC=E4=B8=80=E5=91=A8?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_60/LeetCode_021_060.go | 45 +++++++++++++++++++++++++++++++ Week_01/id_60/LeetCode_242_060.go | 26 ++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 Week_01/id_60/LeetCode_021_060.go create mode 100644 Week_01/id_60/LeetCode_242_060.go diff --git a/Week_01/id_60/LeetCode_021_060.go b/Week_01/id_60/LeetCode_021_060.go new file mode 100644 index 00000000..d4270c23 --- /dev/null +++ b/Week_01/id_60/LeetCode_021_060.go @@ -0,0 +1,45 @@ +package wee1 + +import "fmt" + +/* +输入:1->2->4, 1->3->4 +输出:1->1->2->3->4->4 +*/ + +func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { + if l1==nil { + return l2 + }else if l2==nil{ + return l1 + } + c1,p1:=l1,l1 + c2,p2:=l2,l2 + + for c1!=nil && c2!=nil { + if c1.Val>c2.Val { + p2=c2 + c2=c2.Next + + if p1==c1{ + p2.Next=p1 + p1=p2 + l1=p2 + }else{ + p2.Next=c1 + p1.Next=p2 + p1=p2 + + } + }else{ + p1=c1 + c1=c1.Next + } + + } + if c1==nil{ + p1.Next=c2 + } + + return l1 +} diff --git a/Week_01/id_60/LeetCode_242_060.go b/Week_01/id_60/LeetCode_242_060.go new file mode 100644 index 00000000..74020cbf --- /dev/null +++ b/Week_01/id_60/LeetCode_242_060.go @@ -0,0 +1,26 @@ +package wee1 + +//242. 有效的字母异位词 +//valid-anagram/description +func isAnagram(s string, t string) bool { + m1, m2 := make(map[string]int, 0), make(map[string]int, 0) + for _, v := range s { + m1[string(v)]++ + } + for _, v := range t { + m2[string(v)]++ + } + for _, v := range s { + if m1[string(v)] != m2[string(v)] { + return false + } + + } + for _, v := range t { + if m1[string(v)] != m2[string(v)] { + return false + } + } + return true + +} From 03957e0c49a8310c7766442acfb23c25a80a6bd5 Mon Sep 17 00:00:00 2001 From: shuaidu108 <48507016+shuaidu108@users.noreply.github.com> Date: Sat, 20 Apr 2019 20:38:34 +0800 Subject: [PATCH 258/780] delete id_61 --- Week_01/id_61/LeetCode_021_061.go | 45 ------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 Week_01/id_61/LeetCode_021_061.go diff --git a/Week_01/id_61/LeetCode_021_061.go b/Week_01/id_61/LeetCode_021_061.go deleted file mode 100644 index d4270c23..00000000 --- a/Week_01/id_61/LeetCode_021_061.go +++ /dev/null @@ -1,45 +0,0 @@ -package wee1 - -import "fmt" - -/* -输入:1->2->4, 1->3->4 -输出:1->1->2->3->4->4 -*/ - -func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { - if l1==nil { - return l2 - }else if l2==nil{ - return l1 - } - c1,p1:=l1,l1 - c2,p2:=l2,l2 - - for c1!=nil && c2!=nil { - if c1.Val>c2.Val { - p2=c2 - c2=c2.Next - - if p1==c1{ - p2.Next=p1 - p1=p2 - l1=p2 - }else{ - p2.Next=c1 - p1.Next=p2 - p1=p2 - - } - }else{ - p1=c1 - c1=c1.Next - } - - } - if c1==nil{ - p1.Next=c2 - } - - return l1 -} From 3f660ad776e85a4e90bcbcea6e7d7efa0d9e8887 Mon Sep 17 00:00:00 2001 From: CRGT_Ghcoder Date: Sat, 20 Apr 2019 20:38:36 +0800 Subject: [PATCH 259/780] add leetcode 50 --- Week_01/id_31/LeetCode_50_031.swift | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Week_01/id_31/LeetCode_50_031.swift diff --git a/Week_01/id_31/LeetCode_50_031.swift b/Week_01/id_31/LeetCode_50_031.swift new file mode 100644 index 00000000..c587fecd --- /dev/null +++ b/Week_01/id_31/LeetCode_50_031.swift @@ -0,0 +1,22 @@ +// +// LeetCode_50_031.swift +// TestCoding +// +// Created by 龚欢 on 2019/4/20. +// Copyright © 2019 龚欢. All rights reserved. +// + +import Foundation + +class Solution { + func myPow(_ x: Double, _ n: Int) -> Double { + if n == 0 { return 1 } + if n == 1 { return x } + let tempValue = myPow(x, n/2) + if (n % 2 == 0) { + return tempValue * tempValue + } else { + return pow(x, Double(n + 1)) / x + } + } +} From ed9899c38ad2ae119fb615c80ccaa521b1919776 Mon Sep 17 00:00:00 2001 From: shuaidu108 <48507016+shuaidu108@users.noreply.github.com> Date: Sat, 20 Apr 2019 20:38:50 +0800 Subject: [PATCH 260/780] id_061 --- Week_01/id_61/LeetCode_242_061.go | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 Week_01/id_61/LeetCode_242_061.go diff --git a/Week_01/id_61/LeetCode_242_061.go b/Week_01/id_61/LeetCode_242_061.go deleted file mode 100644 index 74020cbf..00000000 --- a/Week_01/id_61/LeetCode_242_061.go +++ /dev/null @@ -1,26 +0,0 @@ -package wee1 - -//242. 有效的字母异位词 -//valid-anagram/description -func isAnagram(s string, t string) bool { - m1, m2 := make(map[string]int, 0), make(map[string]int, 0) - for _, v := range s { - m1[string(v)]++ - } - for _, v := range t { - m2[string(v)]++ - } - for _, v := range s { - if m1[string(v)] != m2[string(v)] { - return false - } - - } - for _, v := range t { - if m1[string(v)] != m2[string(v)] { - return false - } - } - return true - -} From 4662751892932b3349f6eda43a685ae2189198a2 Mon Sep 17 00:00:00 2001 From: wxisme <850885154@qq.com> Date: Sat, 20 Apr 2019 20:46:29 +0800 Subject: [PATCH 261/780] commit the week1 homework --- Week_01/id_134/LeetCode_142_134.java | 35 +++++++++++++++++++++++++ Week_01/id_134/LeetCode_20_134.java | 31 +++++++++++++++++++++++ Week_01/id_134/LeetCode_21_134.java | 38 ++++++++++++++++++++++++++++ Week_01/id_134/LeetCode_242_134.java | 20 +++++++++++++++ Week_01/id_134/LeetCode_24_134.java | 29 +++++++++++++++++++++ Week_01/id_134/LeetCode_503_134.java | 29 +++++++++++++++++++++ Week_01/id_134/LeetCode_83_134.java | 28 ++++++++++++++++++++ Week_01/id_134/LeetCode_905_134.java | 24 ++++++++++++++++++ Week_01/id_134/LeetCode_922_134.java | 24 ++++++++++++++++++ 9 files changed, 258 insertions(+) create mode 100644 Week_01/id_134/LeetCode_142_134.java create mode 100644 Week_01/id_134/LeetCode_20_134.java create mode 100644 Week_01/id_134/LeetCode_21_134.java create mode 100644 Week_01/id_134/LeetCode_242_134.java create mode 100644 Week_01/id_134/LeetCode_24_134.java create mode 100644 Week_01/id_134/LeetCode_503_134.java create mode 100644 Week_01/id_134/LeetCode_83_134.java create mode 100644 Week_01/id_134/LeetCode_905_134.java create mode 100644 Week_01/id_134/LeetCode_922_134.java diff --git a/Week_01/id_134/LeetCode_142_134.java b/Week_01/id_134/LeetCode_142_134.java new file mode 100644 index 00000000..7e11a176 --- /dev/null +++ b/Week_01/id_134/LeetCode_142_134.java @@ -0,0 +1,35 @@ +//https://leetcode.com/problems/linked-list-cycle-ii/ +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public ListNode detectCycle(ListNode head) { + if (head == null) + return null; + ListNode fast = head, slow = head; + boolean flag = true; + while (true) { + if (fast == null || fast.next == null) + return null; + if (!flag && fast == slow) + break; + fast = fast.next.next; + slow = slow.next; + flag = false; + } + fast = head; + while (fast != slow) { + fast = fast.next; + slow = slow.next; + } + return fast; + } +} \ No newline at end of file diff --git a/Week_01/id_134/LeetCode_20_134.java b/Week_01/id_134/LeetCode_20_134.java new file mode 100644 index 00000000..9a8deb00 --- /dev/null +++ b/Week_01/id_134/LeetCode_20_134.java @@ -0,0 +1,31 @@ +//https://leetcode.com/problems/valid-parentheses/ +public class Solution { + public boolean isValid(String s) { + Stack stack = new Stack<>(); + + for(int i=0; i nums[i]) { + ret[i] = nums[j]; + flag = 1; + break; + } + } + if (flag == 0) { + for (int k=0; k nums[i]) { + ret[i] = nums[k]; + break; + } + } + } + } + return ret; + } +} \ No newline at end of file diff --git a/Week_01/id_134/LeetCode_83_134.java b/Week_01/id_134/LeetCode_83_134.java new file mode 100644 index 00000000..fbf7bdfd --- /dev/null +++ b/Week_01/id_134/LeetCode_83_134.java @@ -0,0 +1,28 @@ +//https://leetcode.com/problems/remove-duplicates-from-sorted-list/ + +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + if (head == null) + return null; + ListNode prev = head, cur = head.next; + while (cur != null) { + if (cur.val == prev.val) { + prev.next = cur.next; + cur.next = null; + cur = prev.next; + } else { + prev = prev.next; + cur = cur.next; + } + } + return head; + } +} \ No newline at end of file diff --git a/Week_01/id_134/LeetCode_905_134.java b/Week_01/id_134/LeetCode_905_134.java new file mode 100644 index 00000000..8c59406c --- /dev/null +++ b/Week_01/id_134/LeetCode_905_134.java @@ -0,0 +1,24 @@ +//https://leetcode.com/problems/sort-array-by-parity/ +class Solution { + public int[] sortArrayByParity(int[] A) { + if (A == null) + return null; + int left = 0, right = A.length-1; + while (left < right) { + if ((A[left] & 1) == 0) { + left ++; + continue; + } + if ((A[right] & 1) == 1) { + right --; + continue; + } + int tmp = A[left]; + A[left] = A[right]; + A[right] = tmp; + left ++; + right --; + } + return A; + } +} \ No newline at end of file diff --git a/Week_01/id_134/LeetCode_922_134.java b/Week_01/id_134/LeetCode_922_134.java new file mode 100644 index 00000000..ecf033f0 --- /dev/null +++ b/Week_01/id_134/LeetCode_922_134.java @@ -0,0 +1,24 @@ +//https://leetcode.com/problems/sort-array-by-parity-ii/ +class Solution { + public int[] sortArrayByParityII(int[] A) { + if (A == null || A.length <= 1) + return A; + int even = 0, odd = 1; + while (even < A.length && odd < A.length) { + if ((A[even] & 1) == 0) { + even += 2; + continue; + } + if ((A[odd] & 1) == 1) { + odd += 2; + continue; + } + int tmp = A[even]; + A[even] = A[odd]; + A[odd] = tmp; + even += 2; + odd += 2; + } + return A; + } +} \ No newline at end of file From f8a01c6e5087be9915cc3b4f7f1ba6186684fa16 Mon Sep 17 00:00:00 2001 From: tidelgl Date: Sat, 20 Apr 2019 20:54:29 +0800 Subject: [PATCH 262/780] update comment --- Week_01/id_64/LeetCode_64_20.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Week_01/id_64/LeetCode_64_20.js b/Week_01/id_64/LeetCode_64_20.js index 5c8d2531..8d281e58 100644 --- a/Week_01/id_64/LeetCode_64_20.js +++ b/Week_01/id_64/LeetCode_64_20.js @@ -1,7 +1,7 @@ /** * 20. 有效的括号 * https://leetcode-cn.com/problems/valid-parentheses/ - * 通过栈,匹配左刮号进站,匹配右刮号出站 + * 通过栈,匹配左刮号进栈,匹配右刮号出栈 * @param {string} s * @return {boolean} */ From 71df958264ba7c7d4f3f4595229d8f3de4c7e39a Mon Sep 17 00:00:00 2001 From: dehuab Date: Sat, 20 Apr 2019 20:59:39 +0800 Subject: [PATCH 263/780] week homework --- Week_01/id_36/ArrangeCoins.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Week_01/id_36/ArrangeCoins.java diff --git a/Week_01/id_36/ArrangeCoins.java b/Week_01/id_36/ArrangeCoins.java deleted file mode 100644 index e69de29b..00000000 From 6dc51763de3071d1a6340f6091076894b9aa40a4 Mon Sep 17 00:00:00 2001 From: dehuab Date: Sat, 20 Apr 2019 21:00:00 +0800 Subject: [PATCH 264/780] week 01 homework --- .../id_36/LeetCode_441_036_ArrangeCoins.java | 0 .../LeetCode_687_036_LongestUnivaluePath.java | 106 ++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 Week_01/id_36/LeetCode_441_036_ArrangeCoins.java create mode 100644 Week_01/id_36/LeetCode_687_036_LongestUnivaluePath.java diff --git a/Week_01/id_36/LeetCode_441_036_ArrangeCoins.java b/Week_01/id_36/LeetCode_441_036_ArrangeCoins.java new file mode 100644 index 00000000..e69de29b diff --git a/Week_01/id_36/LeetCode_687_036_LongestUnivaluePath.java b/Week_01/id_36/LeetCode_687_036_LongestUnivaluePath.java new file mode 100644 index 00000000..157e6cf3 --- /dev/null +++ b/Week_01/id_36/LeetCode_687_036_LongestUnivaluePath.java @@ -0,0 +1,106 @@ +package com.geek.week01; + +/** + * @author dehuab + * https://leetcode-cn.com/problems/longest-univalue-path/ * + * 687. 最长同值路径 + * Given a binary tree, find the length of the longest path where each node in the path has the same value. This path may or may not pass through the root. + *

    + * Note: The length of path between two nodes is represented by the number of edges between them. + *

    + * 示例 1: + *

    + * 输入: + *

    + * 5 + * / \ + * 4 5 + * / \ \ + * 1 1 5 + * 输出: + *

    + * 2 + * 示例 2: + *

    + * 输入: + *

    + * 1 + * / \ + * 4 5 + * / \ \ + * 4 4 5 + * 输出: + *

    oW{Z89WBpjGzkagS)I$>ByD+jj99INS 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͡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

    + * 2 + * 注意: 给定的二叉树不超过10000个结点。 树的高度不超过1000。 + */ +public class LongestUnivaluePath { + public int longestUnivaluePath(TreeNode root) { + if (root == null) { + return 0; + } + + if (root.left == null && root.right == null) { + return 0; + } + + int result = 0; + int leftCount = longestUnivaluePath(root.left); + int rightCount = longestUnivaluePath(root.right); + + if (root.left != null && root.right != null) { + if (root.val == root.left.val && root.val == root.right.val) { + result = leftCount + rightCount + 2; + } else { + if (root.val == root.left.val) { + leftCount++; + } + if (root.val == root.right.val) { + rightCount++; + } + result = Math.max(leftCount, rightCount); + } + } else if (root.left != null || root.right != null) { + if (root.left != null && root.val == root.left.val) { + leftCount++; + } + if (root.right != null && root.val == root.right.val) { + rightCount++; + } + result = Math.max(leftCount, rightCount); + } + + return result; + + /* + if (root.left != null && root.right != null) { + if (root.left.val == root.right.val) { + if (leftCount == rightCount) { + result = leftCount + 2; + } else { + result = Math.max(leftCount, rightCount); + } + } else { + result = Math.max(leftCount, rightCount); + } + } else if (root.left == null && root.right != null && root.val == root.right.val) { + result = Math.max(leftCount, rightCount + 1); + } else if (root.right == null && root.left != null && root.val == root.left.val) { + result = Math.max(leftCount + 1, rightCount); + } + */ + + + //return result; + } +} + +class TreeNode { + int val; + TreeNode left; + TreeNode right; + + TreeNode(int x) { + val = x; + } +} \ No newline at end of file From 1b3e6fe6d872f99cd622705b7097f58ae8342d66 Mon Sep 17 00:00:00 2001 From: huan he Date: Sat, 20 Apr 2019 21:07:09 +0800 Subject: [PATCH 265/780] Delete test.txt --- Week_01/id_76/test.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Week_01/id_76/test.txt diff --git a/Week_01/id_76/test.txt b/Week_01/id_76/test.txt deleted file mode 100644 index 9d607966..00000000 --- a/Week_01/id_76/test.txt +++ /dev/null @@ -1 +0,0 @@ -11 \ No newline at end of file From 4444bf27b6cd4446fecba0e0f2893c5baffee6fc Mon Sep 17 00:00:00 2001 From: huan he Date: Sat, 20 Apr 2019 21:07:12 +0800 Subject: [PATCH 266/780] Delete test2.txt --- Week_01/id_76/test2.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Week_01/id_76/test2.txt diff --git a/Week_01/id_76/test2.txt b/Week_01/id_76/test2.txt deleted file mode 100644 index 8fdd954d..00000000 --- a/Week_01/id_76/test2.txt +++ /dev/null @@ -1 +0,0 @@ -22 \ No newline at end of file From 32fb26a414275f7145e879525d2c5ebc1521a303 Mon Sep 17 00:00:00 2001 From: huan he Date: Sat, 20 Apr 2019 21:08:54 +0800 Subject: [PATCH 267/780] Create LeetCode_20_6.C++ --- Week_01/id_76/LeetCode_20_6.C++ | 103 ++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 Week_01/id_76/LeetCode_20_6.C++ diff --git a/Week_01/id_76/LeetCode_20_6.C++ b/Week_01/id_76/LeetCode_20_6.C++ new file mode 100644 index 00000000..7674bda0 --- /dev/null +++ b/Week_01/id_76/LeetCode_20_6.C++ @@ -0,0 +1,103 @@ +#include "stdafx.h" +#include +#include +using namespace std; + + +//https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ +//Author : λ +//Date : 2019-04-15 + +/* +Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. + + An input string is valid if: + +Open brackets must be closed by the same type of brackets. + Open brackets must be closed in the correct order. + Note that an empty string is also considered valid. + + Example 1: + +Input: "()" +Output: true + Example 2: + +Input: "()[]{}" +Output: true + Example 3: + +Input: "(]" +Output: false + Example 4: + +Input: "([)]" +Output: false + Example 5: + +Input: "{[]}" +Output: true +*/ + +// ˼·Կջ'(','[','{'ջɣ']'')''}'ʱջԪǷţǾͳջջ +// ʱ临ӶO(n),ռ临ӶO(n) + +class Solution { +public: + bool isValid(string s) { + + std::stack ret; + int len = s.length(); + for (int i = 0; i < len; i++) + { + char sz = s[i]; + switch (sz) + { + case '(': + ret.push(sz); + break; + case '[': + ret.push(sz); + break; + case '{': + ret.push(sz); + break; + case ')': + { + if (ret.top() == '(') + ret.pop(); + else + ret.push(sz); + } + break; + case ']': + { + if (ret.top() == '[') + ret.pop(); + else + ret.push(sz); + } + break; + case '}': + { + if (ret.top() == '{') + ret.pop(); + else + ret.push(sz); + } + break; + default: + break; + } + } + return ret.empty(); + } +}; + + +int _tmain(int argc, _TCHAR* argv[]){ + + Solution sln; + sln.isValid("(("); + return 0; +} \ No newline at end of file From 5c4f8b46f240dcfe8894109d4f207b51cbd2cf9d Mon Sep 17 00:00:00 2001 From: huan he Date: Sat, 20 Apr 2019 21:19:07 +0800 Subject: [PATCH 268/780] Create LeetCode_83_6.C++ --- Week_01/id_76/LeetCode_83_6.C++ | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Week_01/id_76/LeetCode_83_6.C++ diff --git a/Week_01/id_76/LeetCode_83_6.C++ b/Week_01/id_76/LeetCode_83_6.C++ new file mode 100644 index 00000000..f272052e --- /dev/null +++ b/Week_01/id_76/LeetCode_83_6.C++ @@ -0,0 +1,62 @@ +#include "stdafx.h" + +//https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ +//Author : λ +//Date : 2019-04-15 + + +/* +Given a sorted linked list, delete all duplicates such that each element appear only once. + + Example 1: + +Input: 1->1->2 +Output: 1->2 + Example 2: + +Input: 1->1->2->3->3 +Output: 1->2->3 +*/ + + // Definition for singly-linked list. + struct ListNode { + int val; + ListNode *next; + ListNode(int x) : val(x), next(NULL) {} + }; + +// ˼·һǴСͬСֻᰤһ +// curָ룬curֵǷcur->nextֵھɾcur->nextڵ㣬ѭȣͰcur->nextָ븳ֵcur +// ߽headΪգҲֻһڵ +// ʱ临ӶO(n)ռ临ӶO(1) +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + ListNode *cur = head; + if (cur == NULL){ + return cur; + } + + if (cur->next == NULL){ + return cur; + } + + while (cur != NULL && cur->next != NULL){ + if (cur->val == cur->next->val){ + cur->next = cur->next->next; + } + else{ + cur = cur->next; + } + } + return head; + } +}; + + +int _tmain(int argc, _TCHAR* argv[]){ + + Solution sln; + sln.deleteDuplicates(NULL); + return 0; +} \ No newline at end of file From 837ad855130a8a88a939f271ffe5a113eb9df3b4 Mon Sep 17 00:00:00 2001 From: huan he Date: Sat, 20 Apr 2019 21:19:12 +0800 Subject: [PATCH 269/780] Create LeetCode_88_6.C++ --- Week_01/id_76/LeetCode_88_6.C++ | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Week_01/id_76/LeetCode_88_6.C++ diff --git a/Week_01/id_76/LeetCode_88_6.C++ b/Week_01/id_76/LeetCode_88_6.C++ new file mode 100644 index 00000000..8a328f66 --- /dev/null +++ b/Week_01/id_76/LeetCode_88_6.C++ @@ -0,0 +1,48 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + + ListNode* p1 = l1; + ListNode* p2 = l2; + + ListNode* L = (ListNode*)malloc(sizeof(ListNode)); + ListNode* r = L; + while (p1 != NULL && p2 != NULL) + { + if (p1->val <= p2->val) + { + r->next = p1; + p1 = p1->next; + } + else + { + r->next = p2; + p2 = p2->next; + } + + r = r->next; + } + + if (p1 != NULL) + { + r->next = p1; + } + + if (p2 != NULL) + { + r->next = p2; + } + + ListNode* p = L->next; + free(L); + return p; + } +}; \ No newline at end of file From 09f968cbb92cc617ad78fb9f190a50d9a6c8072c Mon Sep 17 00:00:00 2001 From: bugcodes Date: Sat, 20 Apr 2019 21:22:14 +0800 Subject: [PATCH 270/780] week01_49 homework --- Week_01/id_49/LeetCode_24_49.java | 57 +++++++++++++++++++++++++ Week_01/id_49/LeetCode_81_49.java | 42 ++++++++++++++++++ Week_01/id_49/NOTE.md | 10 ++++- Week_01/id_49/Swap_Nodes_in_Pairs.jpeg | Bin 0 -> 483949 bytes 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_49/LeetCode_24_49.java create mode 100644 Week_01/id_49/LeetCode_81_49.java create mode 100644 Week_01/id_49/Swap_Nodes_in_Pairs.jpeg diff --git a/Week_01/id_49/LeetCode_24_49.java b/Week_01/id_49/LeetCode_24_49.java new file mode 100644 index 00000000..0bd78eb8 --- /dev/null +++ b/Week_01/id_49/LeetCode_24_49.java @@ -0,0 +1,57 @@ +package com.bugcodes.leetcode; + +/** + * Swap Nodes in Pairs + * + * @author bugcoder + */ +public class LeetCode_24_49 { + + /** + * 非递归解决两两交换 + * @param head + * @return + */ + public ListNode swapPairsIterator(ListNode head){ + //先创建一个虚拟节点,并指向头节点 + ListNode dummy = new ListNode(0); + dummy.next = head; + //创建一个游标节点cur,从dummy节点开始移动 + ListNode cur = dummy; + while (cur.next != null && cur.next.next !=null){ + //紧挨着dummy节点,再创建两个游标节点 + ListNode first = cur.next; + ListNode second = cur.next.next; + //两两交换关键逻辑 + first.next = second.next; + cur.next = second; + cur.next.next = first; + //把游标节点cur后移两位 + cur = cur.next.next; + } + return dummy.next; + } + + /** + * 递归解决两两交换 + * 把第一个节点看做一个节点,把剩余的几点看做一个节点 + * 1->2->3->4->5->6 + * 把节点1看做是一个节点A,把2->3->4->5->6这一大坨也看做是一个节点B + * @param head + * @return + */ + public ListNode swapPairsRecursion(ListNode head){ + if (head == null || head.next == null){ + return head; + } + //创建一个游标节点,指向头指针的下一个节点 + // (这个节点反转以后会顶替前一个结点,1->2交换以后2->1), + ListNode next = head.next; + //递归确定每个节点的next指针该指向哪个节点 + head.next = swapPairsRecursion(head.next.next); + //游标节点需要指向上一个节点 + next.next = head; + return next; + } + +} diff --git a/Week_01/id_49/LeetCode_81_49.java b/Week_01/id_49/LeetCode_81_49.java new file mode 100644 index 00000000..55fbefbd --- /dev/null +++ b/Week_01/id_49/LeetCode_81_49.java @@ -0,0 +1,42 @@ +package com.bugcodes.leetcode; + +/** + * Search in Rotated Sorted Array II + * + * @author bugcoder + */ +public class LeetCode_81_49 { + + public boolean search(int[] nums,int target){ + int low = 0; + int high = nums.length - 1; + int mid = 0; + while (low <= high){ + mid = low + (high - low)/2; + //如果中间的数正好是目标值,找到 + if (nums[mid] == target){ + return true; + } + //如果两边的数与中间的数相等,则同时移动左右指针 + if (nums[low] == nums[mid] && nums[high] == nums[mid]){ + ++low; + --high; + //左半段有序递增的情况下,二分查找 + }else if (nums[low] <= nums[mid]){ + if (nums[low] <= target && nums[mid] > target){ + high = mid - 1; + }else { + low = mid + 1; + } + //右半段有序递增的情况下,二分查找 + }else { + if (nums[mid] < target && nums[high] >= target){ + low = mid + 1; + }else { + high = mid - 1; + } + } + } + return false; + } +} diff --git a/Week_01/id_49/NOTE.md b/Week_01/id_49/NOTE.md index c684e62f..899fd7a0 100644 --- a/Week_01/id_49/NOTE.md +++ b/Week_01/id_49/NOTE.md @@ -1 +1,9 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +### 链表 +关于链表的反转,常见解决方法分为**迭代和递归**。 + +**迭代**是从前到后依次处理,直到循环到链尾。 + +**递归**则相反,它是从链尾逐层返回处理一直到链首。 + +总结来说,链表的反转操作的顺序对于迭代来说就是从链头到链尾,而对于递归则是从链尾到链头。 diff --git a/Week_01/id_49/Swap_Nodes_in_Pairs.jpeg b/Week_01/id_49/Swap_Nodes_in_Pairs.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..8a0a40cf8b6e76c05a44bfef523e9343d5cba7f8 GIT binary patch literal 483949 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%0AUnj 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�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 UCqQi=qnn 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 TRU~uTz{0qnU11+ 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 oe0}a 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�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 diff --git "a/Week_01/id_118/LinkedList_leetcode25-\345\233\276\350\247\243.pptx" "b/Week_01/id_118/LinkedList_leetcode25-\345\233\276\350\247\243.pptx" deleted file mode 100644 index 35cbe868595a60e5b883081659358ec13492ac13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58009 zcmeFY^Oq&x@-13juIjSc(;H$(}xVUOm`st+E@SfbU(w_<^ zAT1+6Hn?kbutCjNMnB~LYJ?7x0J!hI?$~dVR7{b6+QJMvkbo%MmH!37EDIgu=i~8^ zO(eakFk~;*jc8@7Gru@ z+}M%cBAE%b(dL&ig^4rHpp&{lQ8^NWc5-Z~yg*Sp5(Bg3u#=`hkw#;rT=D9Nd{$P6 z+Z{^{Z~u8(MhPWWR1aI%3s<_T&{+Tk>C^ozCeKF{$Efxdv?kN z`5xK*M)J>ZsOvfyTRGCw{ImbR5dR;H>;KL53c#8K2>mz2!L|s-y;;{N2xqNqg^n|a zUx5r6+Oaoq#ENFSI&-)6^{M?k$H#f`wusejA8k;s66#=edh5#gW0!i>wkX|f@X(s^ z8S+`#z-6J~67=V^bSkpVglGiaYv>~cZq$2waIOl*J@7+Xq2s(xoCw(W9i%!VOSWo$ zx0an@r}{ADq|yy6l8I?Lg5_}wz2a$d7%&Z!Ig2%fmP-9@GDe>o z2*^O!$W#pt$@IK28^TPi)_K4x{gO6&am}4}R+;mj<`m63>L?1cEyhqE6lz6@IZ#}*y0>YosBSP@HK%X#JuwH9k6^kyJ=u+EA9%Tya zHDgbQoP|4Tm_g{)cs7{HfX4V#N$9R8dcLTviNYIudR)rB32SzxihsRG>}xsKIy2Xh zZYs{}6EWA#E{TRM$drbvD7p@uy!)-bFp3H>Crx8w)0*eMx^AdN)X?)i^8fET{r~Q| zMgKppb5FY>G^^He1|m=ylYB5}0-wZ)5~cN+f3`z7tmF{)3p`WSve zN^AraD<_^vEFT-)tKSG(bZi-h_^{aYTH|ZE?X!`Ezi#%CBg#M*=@J2x61ACT{7Llk zCGiA@V3O2#B}l8fIO5(+6Y>Y9AmfuLopZ6COa3j^VLG*YbZ(N_GgUu>Ze;^^S2$k> zsjCX>QbZ}R3cN0_k~Gwb_)=vqHkto>;3*h+mXW`Mt_%tUga-uq<;}$jx^#;a3$nGBd2=@yclzLSc$3)YyxH=KOq=KHAgeLhMq}v9U);e%LzBEZA zGg*$Pzp}kgla~m!AWohNy8-<`>>n0T*CF;qY8L>~+4SGU)mNEdGVlIOsx9LHF4;M- zr#%=lIEIxrr0t~zk{ao&Yuc5jD&?@JruXCNKx9$7*|I(iGVcKX9+}S;cci&L*}*NT z$b`eJQM9>BwWB|bjb!}xzve|)z~Uz0Zpg@Ucm-C{Avj5E(du;+GH{*i<2@Y#J03E@ zm3>pcZ8wfnVHQ#TE@U7~65;a0EYgDVKEs6DerLk}Nhp8Qj(7yW3-H9Z-bVSp;-9?w z|7O&AvUc<;9m3ES@Z{vmKKPnCZV!qHm0#owNChbVX=${QRBWMpZt3; zSSWsTmXxjn;#W%;Ng~)&I+;)}PMJ|d{n?e0`^{bq)=opFi5@6$75&w)b0Cj(@WjI7 zqF4IX4jn2>vSsA41@tDm!dy8q7=0GgR-LB{?=dAUlgRh3oCz8M=-8RAgyX48M9n@U z=5f`~5|#QgFzO0^(K+R%ii|}eWSR@WYy3sI-sCHx6v$AF!0>RuQAF|Z(NZpKIzzLf9L~uXJZUGsRnqXMh?{SR7>niv8}$w9?df-s;}?A0 zGsu5Sy0Hhbjhq=YF^TK)7*N^=k@u}^WAIQ*c{oM+1ZeO z1zuTS=3eJnUE%b4xIEPL;_%yCXJg;sSYKJ?f)i9J!Z*O}D>!fyrSNZ2QjV~_GGe=C<*MjKRbG_)5mvMk~lcD>`z7t&; zL}zDvx^E^D2O@Gvf-i^+4g`9uU!atz(g;z!uOg51LBv|;#-YsDiQS-_`w2Pjx%E@D zO!Q@DSBlv#~w{=eTkNA!JfT-KCjfu_6M{~!iW}UHs3p@_Cf(|dYgvZCHw}3PFlji}3=gg^O zSKfHvL)*L7O_e79_^%ti^5*u|8P1I-(Klm-1VNeTi-0*Vz~lOdYy#_}tc))E$NQ%Z zv+vcfKHUyL?e0%kR@jkx zJJV`cj5ImqiW6`D zi^*nk_Uz)ONE*_%AQ4kIe9hr}}u%6~;`wf4L?hITQWWT7s9Bsdj9bH*t zR<~GKFYz9_=uRFSyt0yBHYRExtiEL7WiM?gqD8E1GFW`+gxz(FJdd_s#$R0F@Nk$c z@vTLcXhM!u2BSPX^8>oMPA`@n7T%v0cU-z2HzqFTHn-t@SI_V~=GQhGo35;IadB)j zyPTd!ZyvYF6H0GSmcAUyUDqdz=eQ7cc{~n27jG^L%oli@x|@;E9dFc|9(B3T z;cMKzu*lKqSp8vm%VanA+dr^xc-T8VaB^TO#Ufd0Xp_I zyLtn?*n8Xc!#+|&{EWc?ZRPCn;eP7;e-L4|ogX1G<9-RaAhn8=!)Tgljgv8k-z(yx zLQuk~;B?T#b-lyb*}XmV^P?>%>(W{a#1Y_p_S^pYTD!vg+C4JmeVK^g`kKpc-t>O2 z_g$gW78cb9)JO=}DFh6i)3)Id3Kjrn0~6H5O@xMayjM=QDwCs|cs*yi>f-0#H}O+f z)tu8SCuD7|qb;^hupb7HbwJl0X=TTRv1AHaU=Jz66w)G6#zIvFm^(YfU7>7bWjr-K zt2cQcL__u5B5Nnz5x7`5h^=bnkkL|D4V(RsT7?t$-MGu1th|^7yTZc@fj;X<|YK zmGKjvTmd4K%RgSme_KXU5H-wZv0$FcgoUnX%%lk2%;aTKTm`=&Z6z%gQ^(NcgL8qK z(GV?wl!af81zUC4q^N!hR$guoQ!?YFfsYXzW6qe7F@lM4B9wesb;7D~+{)uzDkQ-V zaU{egkqN(0X~qn+uM$`vdh9m@O-^PWd0R;;WOM&*YTXepT_BF8B+Xm!pB0M5paVu* zFDGAD%i;)v+1M2pW91Wyi3x--dSZx8H)tOF%<5kbIe*2kGelEOOjO3}%24dg;%WBA zM)AE)dBcj;R9G%Au5iDWet^T5VuzD&JnaP{1V%)-khGv!`-dM8VV7$TFc)Pzc!WD2 z?m`@CSZl)qDyln>my>~rO*$$+6XT<6pm!fN=qOAy{YzUI zXm2oh+#A$S3J$6$AC1dZcNC@f`rym+w&`i=`{tYN^$`)%{k+EO_564-Ej2dBy?olK z^b7TX5UFI)h6m33dytDGc3WSAd;`4CuW^rdm{4*ZkUI;167w&V+ za`9&Ky6e&O*Ymr?-R;JNukYSaz|4c~vw+HD)P_!V zX3K#~SA(m=>+Q_sAD}!?Y1hv>p0?&Cp)`6t7)XBdTf2sDCZuS-SXFWbHJ^HVHk?_IDI{DO5Nn z|DDpdVOm1 zm8?QeE!S?t;>PZ8n@w&_IhUnO{yZrKnFWlVS67X`)Q^J^h@rgjUMgg0R1?uo=SNBu zm2aCClLI%lyuqhjg!a)OQ>Gj~U7=9_34QuxJ>WUMM3&9p=%HGqD9~joR4;kZL8#D_ zC{@JGW1UsQ}{zAaVVZr#VqpGS{C=bVk@{_`z zlv=E$u;>Gb7{$ODl#_}S77+*v$mY`zkmi87nCbEX+6QB0Wx5JAT$8>1%{_F^eY(7So@a`7|FyDVS7E$SnXm zOcepH2Mml=#Sz-5^Tso)VujRQ*a4(E3@UDR5}XkuZNv`@LBvtSgC%Lzl`pGl)!MPx z0&R`X%=<1`cP;G_SM%bM+1hZiqa?#Ocwj@QK_%(}0WaLlQKp6iMu&4MwSkn)eM zS++5r3YF%+wJs4OZ0p80lofP`&!~&={YXi|$E0aH+E@`6$Z!8Ef6zn&M8wJ&!C zsQKXn5a)v%;D(5guoJ5$pCmZ9tTI@GwGX0%3jwqALrpT+Ie_|eFH=?=qNOnCa-odk z6#L5txMGnziQLLbSLd#!RI1)8L=|Igl6XW!+$D-X^!$QUePwB=naZXGiI}+FX^mq8 zQk%n0#tU^tRMAxYk@JP8KBt2UkH?aWO*T}{7KSGskV_B3<@qSvIcAOJ?0oulQ{^=c zE``6`wtrwMi%wiRU6XsclqnpdQpTHz#s*{+|5^R;@9ez^r&=Z%3DWb&b=6Q zxD!sf8yNb3@}qM>`AF*oxUy8|awBRW_rwaFAouq|oABLQK@U1&nr3~~yCH#Li;P4> zU|qQJ9N5=)h}^CDwkPaN4?AZAPlcjLG+a1`lnV0j@rL6JNjzEx8-g+59Hl8VTc5T` z^xY?5AHx2~0)Sk)JsuE2^$66BkROdJQ0}F$R4^G^tp5lA9!M$HX2fCcmuJK&UvF^} zO0)h3G}Q`>``>b--Vm5S3U+bY2#NVrXI!em9tmSsE2$e6(xY8UL4E%~bV-gjR}Pw1 zK;N_;QF;gro8K`XU;MI10TqArIAhKaQR}b^T@{Pu3cXzUKcsPw1nv7uh~kpCS5@nj zLV)6i0AsdI?in;209cea6rQ(OTrDl0mE=<*dtC_phXYi|v}B=sS~rHn!rmq?r8Ra- z1Sl#^`!wtken1`B0A`~QURW=q< z>I_thXbi?vSJtmTiGe02@k9E9kgNwh^zx&O9@Iz?h}*{{vCtJmC9y1XYewq$8?;pz zEX*!W%vP;Ls%URSHgS-k!$4rd0xP>q*C&zCz0^e$k2jLYPBw;tmK1S0uadSk_s8<|XD-BdB;oM3HR8k@OGs9kHVh-ex z)C211j7P#nS+z58VMdb7>48%FvI_9(M*IRy{sXDl&qJn{t&bnUR64g+jgvCom^9gQ zTUFPkHN+V#Vo?%9897HGq3%Y+pQsbG*Ss50%dtgy;1zQ>=%ngy$b)p&Iiji>%;yw^ zpEJH!L$7gJId7oi3@DzHloMvi<=9$y`6dahc#=_nmqONAbp~|@VLSqVfVh9MRsbpS z9~TUT{VWT1OJFZjTcd3UtxYuw%hBC?q!Rq`hRKh=QH5p6)6SiNCzqn~UpVk?(yAw7 zpaEl9B0$;xAP03pn7>g9@Tm=n>4@(NzOs0>3&TrTHjNV~6AY^$(U+g`rUg|OM@IqlZ#!>WZukAJc-+3GjSSHv>BtmPWl*$~Q$u*NT6AU4S?=z(D>UBFluA6l|?>}_C-#cTn zI_@^LbQZXHG<|Qg?_lAZJZKY-_*%){{6aX{ky_fJE`Cl(d&b^U%v5AOH8s_PEqC}| z+S=gQ;{M9q=Y>KNCEj^C+UCvL+Th&i%5H*teEj)0aeU)nnrn}db?b!@-pi-Z{pIqo zyZdIZ_xRP-lYr-R(58B6a@B!Tca?MG^5Nf-%kUq`CHuw<=gRxE_1mh`_0zK9sH;71 zkEZz@85s>=AxUW?Ny1gqbRTJb;=%y2RMr*s>>#+%Tvc}vi7w-S4TKpZ?8V}D2lxXk zVtJwP`BgFEk6qS9E*K$nz=RhgZ{ehmf{Hh_57L6E>WwUPO^CIaLHH%S_7N9%x|R?> zUioSgT(IXjW1$*0nC4cXLMpe3Wmh)5LV407vPX`HhB$IzHI?PdmnIi1-X*Yr_y&|Brnfo;GjC}?NgYZSs^pG`XGhVEC;f8OqAIvx1geA- zFr@it>K#I!o)%W5PMPqkVZDc2P^__JhZ+d$z&53Q2~r4!y_vO< zn7Md;jGw+L`xse(bZ-)A2*VFr>%>Yrr~;@#^UND@DpVK}0<+ca7Jq%Pe&}FJQXz>E zw)~DBLs2O0w31_^nO!kZ$URUdMR&Sr^LRfb5?vGSVth>CHJ1cb7)lHkIxSXm1&ubg z?>S6g_BIJA&VHDO>!CK2NHy{0)eqB?TbrWBx>3;WuZA{hivBYND$G)SS1?-0(J8Ty zYS>K52lG)X7&1VSH> z0btfeFh^reLw$|8tY83#lOo#;*qH)@&VA(vrDQdaIfl@LAih7NG@3d$M_q~dVw0Hu zERG_A^0CUo>Y_+W!YtJIUjr}PMryP>lmh767BEOv4J&LKKTZ;V$*hUr*iZNKLNays zV=OyvSrpoZ;;MXU3A1O%p$+9ufB(pX_d})-%Eh{6y@RI{un`rYBW+Y@-KVM~`@<_1 z07T>$2=~R=74kKdF(w12JFF#m`LhyIEge-7Pv`l|6bWi{#&>3`W?__3lBTT;;zU5G zl33tW5T_*$Aa$Y7h8Z|%4B?ikZ1{uA`JTxE-oD!8$>wu6{B4H>zBoYjEs0c|R}kpNY9 zpoG2g_u`elx|1~fiN3m;0z8VMhd(A9^e3vqdnz<1svM*`60fyYHfTR52sxM#Qjqkh zj`XrOw^H4o%Yik8yIXaQRGV-3PVj$Bw$_bj8K;ckV zW<0T|VmNbo;37!qR&eyl0I`g_y1y9~zb5X#*CI_U3A7^Bp%O*(^nk?KQd~j_D!;A6|_0s2|y>LfL76&Isu?cWJO4%C6JDijG)a0 zDN+u*>68u5SwdM>rtp|PxPL2>p@jS7;JfjFSSuDOD`%#oRinh-C@1x>I($QWR3olz7?3jX&lojhL~iA<>k*0vKO9#%Tic)K)- z`bQ>3CVVAkA1W%@{*pD=U6l=(CZ0P&;h`ob#Aw3ep$zf#tR{Bd@6*2(Ys&ShJ2|Ts z{+PEvN8XGfQIOP~ih2}BrgQWZ9u0T@;TcMds!TotJk%5To|DhV4U4|w9QVV zSgEWK-Db_G*jw`te3-v~V5#<8Gf54CGt&)8fFe9lf{-qq){4=HpO6Q`xIjvamMM%^ zY+knH2;dP1Fi*Gv6xi0NGExt_rOO!>*wi*JI#vRVG~CNnH8oX7%p?EqBh~BubQedr zWORr5Gu-MlUwe#B0im&&Y`&=SO=sdo^wuqxs*%!7O%$n3Ws58pYs>?yZKFs^iz{5T z+-&AjM3Rtc;gBPWLs56^9BO6|ow>r&HBG^+U38Xnk?~EMI*m=trOIgW7-4zkkwOQU zgbF`s+@RAOfzk4Vi0S0~nZ{|XyctFEauP=RjIn=_2#XI>z|(Y#Fk>Q}e^Mi3C;3ZDd{Hy3 zM30&&CwvqaeU&Ngj23=Lux}OKXP=*nBu%JJr;xRvND(Zu*^MHH3LsC&6S>|68nBX! zP3mJ>vu2SN{$o=nhKiONNU4govT^%v1wMW_Mo-a8)VxiM+Jj0U0wxsvvoerMjh-2m z4PT9_Kou&^Kf&jZBJ!U!*s@=iz;?{Ye}bGH=?@dNsqg7$Ul0t((HA@JDfG9^bbLd_ zUv^bIQ%y)HxuwU)?%t1tPwpp*f&Ug*PWOb7gPehNT5gRkgjh* zF)7?1g{RBK3J!dJ8EJ)DlDT9F*Yqa@!`479VX>I+j3Y4DCdSWJST9QEG_a zC_&{eLcakQb++D?dwZe4UXjsdLpH(OPFmYqbvBrP^{!XwXIi4@^SI#a`7N-|W}7n# zuL?WkaiGu7t6CnPPI~RN!EBw^NjTqe%5zm)zbKx*xGItFew=qaVSdh)7iX75fo7#r zORrp(7tP0|YahLq;jaKQfLOH5xX>`>w6!gvX(JTkI*XGgLyyiH@Y912hL{;lr*XKf zrT!QsF<ie-2|53b1i+&y2=`u<09=i|NK zp09n~?mzLm-N)!^nk?FeZ5{8t@p8Yd(Q5X)`rIEj<8^(BnCIQ` zZt=V=etF!sXD@&b8(h7_+jgY?9>?Q(KU_)o{W`Y%dfm^o5Y%+ zQoMTfzk00R!rZ(b!s~cBKH}whJ1+iyyEp(`-Ob(C8nDeW96!|>EGyptSC{Zn;;8ir z{t}3z*<0k7QaBQXLUdWYoyC5v1qd}{k|iX#JL4jEnT9h&Tbpd!Rh<;_sD#t0KMLRe zNE6pyo=$#Mlja&(_pYchi`81f zV&)0Clv&`FqaGUud8qOF`gFNAnrt%IaBKV&5d~pEDYT&lWt$(wuvJWHHTg8T%Ve}L zTHDz~h)OtF9kL*KQ_Jlt@{^&DtFpLK=SNDLUH?VU?g9tXhzO&AE&&0Lhc1q7yEsS= z>oiT(?gxiPgYif$V>yzFl^_la&74M9I=D$jUsgLLL899kt)d2MTg@_D<+4C9t|&|W zV>k0h(Or*PIfTO3YatYCm?aZeRAGv z=(B?UPdUksRxuk)Z$WW8C&Q4ig>6Q<{i~?QK7C#%&)A|^Z@PSQoN;~#h+qbBpB}!RJ zJj6n=6o|nb+gSo{9bDdcuV1TgQ+>Q&8Ak!YdavC4S zR1Y?4JEM*RJaTZVtb;wiH&JMYDS*;`ZZ}N>GbrN`b)df2K73DTZgt*bLCHFOc^ip) z#wjriBhOVu4;WAVm;XK}3?dv;aT3;014}(poz3z*MY~5{pu%3{iM}G`q`G;)3(Rqt zWTm@Ce3Ob<6%k2V6#yxYeKK?gA*zTE8e)_%#u!;aABJD9eK@!WRzPZ|4!4p!V!94> z)r=V*A39#zoywU+i9n1cjB=m7r_8H3agP%f?M#iZxm>Fsshm>~fr|0qRLeh#h41^l z?u0PjDb?%ue4s&jx(;$HbDSn}>)GOXcod3Nh~Dx7wGX0!2oX9X1~_yR+a^mG=nR43 z2xU@0zcEX_fVfyGPl=w|cY)ejy|k!}V>{cgsn9b~Jy0ViO{a|{;q~h>Hz|aTjm1y| zU|yi7nc^)5NUttv7}0t%Ng*ySxu#}3mQPfuP+uhDEgv-K(sxA{eE=3Uz_rV0>-`8+ zx5eZTDkL;K%DLKc5siw}yPo;T_!U=W1?EjuD3`{=<1AgABEp>JvDj8iWO+QCy;;;^!2&&0bjPXNnT@rqV z>n>YTeg|U`+FByHCShCy;r!L~cAbCgMzarZ>*Z zOsgVIxYU0tD8e(@Lnk4_tKhRnLX_=SjO1XS+E56p`w{>El5_Cl#V0ll(ly$pB5mmk z3L~$P5~ZmlKn{(Uhu6e+XExEdxJPSQ&dfu8{2Jw{K=CF17?N+VC?xwWWBH_{Lf)La zhevpENWyFSTyNUWtemCo?4!&X*;knhsm`P7VOTAq5Mk&B<&X5Tz7g|zs;e6S&&opi zx{Etj^Dfnm3FVm$9IzBcvZ_p2mePK{(5auCqo7)LKS|q{@ZA}h;7J1=9tJK7lN#;Q zVzfb@lPcQ7%EaE7(S}lDt*CM;+tMxb+TFFMHL05NwbTY6r3DVk=Ridce`04N37JO` zgDN7_zpmF~?xPB{6b_v`IJ4IGFF8SFnZznl$iq4mx*r=OX&2}Ks&1!2Na)!NdUKz) zm20{6xl4!@#MpNSTDAIH3lBpPrE&FZ!7V^9IK7;Imt6`iWR^TkZxAO7g^H^RhmtrT zlTFOfKY@E~<485Ii-eK_fMueolr5se&Mz8f?Egc6(ysMp#Zli27s8>1vs4aA61o(y zN{&z(kbwwXBYQVVt?p$zN8p0SZedXr->VQ6dM!z9>GujjgeMk3c@n)04Tu1k6~+SL zBMD(>s%}3W#NOiy_Pye{4I^;(>~^jHX!nJUf+Zy~wDI%fU-gfF)h{BFf`EJ7LDNG) z42-T5z@v?F`;7X9K0x*BkOXNJpkin1lu*xw$y0uvX{kE1sw#uW>J+z&bFTeLbIV47 zFI15KgIXAG!2}u@&w>J_HHJ&{TTj4+RYsHkZNcq{?KB_>`}0A3ZoWo zA5DTDRFB8?sG)%3o6!D*~Lw?zZoIFuaIkVKqa(npIPpM)&NL1byoIIgHtUyfO2?qQ;ZPU&Id zq7*nn#6$FV3|w&>LB}!+KvNdb*c{+l5a8q$2AJ#Bmt@_lB23^#rlF7XfQzX){wa?Kp+fl+p-=1LOsk6AD^P$~LX46yA(JWC-vic{hs1(U!w4}< zLNwY?r3&k5xvbg0$&3v0H|}%RU9_X!f`m(B0>y1VrSs-IRMQZlz@C3vPb|EiVZ^58 zE33O`N3|qTiN5DD;s=WZgX-IM<_1mzQszi7KC=R!3Rxl-#`HWi9``92t2Y@Py)wG~ zb^xs;I=@|+)EcBg9*sZJKyi5+WI2se-*E}&U*2~P?0t4^nbifmln5b=v772di9Zfp z?ME~(@98m8a!7LHWf-j3TMl|Qs^SS;&TQ*XOr=5!pG(a{lqixYCU`Y?^pXUP`i2UD zB%!~=TLC*B;)rZT2`mPw znMbdk6d!W2iz-qOmQ5;d=T)?#RlXud zbx4oQxB{G+1)KyJMxY566<)i=H512|5Nvcih5RrciagmMn<;;<=hYO;Ub7EtXi{(77QT5S*jxqLMLbXLREilDl2dzLlsil- zNcF@ysRqDvR~xTcUG!$tM17)L$HkiN2{eY!@^(`1Bu%fj+M~2>8l5cx@2JGb#aGR+ zwM`Aibqw47bf^^VKrJsXGp8#ghGdXQjCGvq^2|e9CQqzluj1tHNCqXBDqKUdNhPy# zCChc8zU^ic_LN%~lBWIIRg*STQ})cpIA^2CBs#lCvha5Udy5mMj}y8Cr3LG2~d7Y z6%6G+fw#{5xXuVsUVPD}!%6+O5y}plapRsmoz@v4#zvi>dgs37^mIx_%>jZ`OyJCm z*r*Q2^&R2xo?j~8K-N-;!OOdAcWH#> zsW5U^a;JWh`k4`5e@D>i2|SUr3?2#QJxVv`hT z1|rW~SRX;M;33(~F)snM2S_-1BjUVw~ER=EIPwrqZt4`R{u1?`@OFpKIj znQ557#kR?W;jysg-NFRX78?*t1RSyrvgUK+ zLGJTamuAI@>2m3HmWJ!vAFgI`AiXAAYPf&&M{-Ml%JzuSYvWF{d_fLXH&h8EJK=|Q zsV=uDSewg$e$!;qHM5<$Pz3NRAS?TKVJ5cSNqe9q(Zz)EPua9akBK_UnbX}Iy*Y+T zU3|7Ex%6_xQgf=MKuOtJgW9*|kM-hq-#7bV5XWjFY!lfa2aQY|<_WC1@Rg|4eNHRT z%P6U}RoBYNLOq33eqDYg7C&VM;L@M|yT?-fJu_Plpnyacs?S_~C%ne15^ua%x~N@K zj)}pgQ)YZT*8@^?bu1Dx)wQ@Wu0s+6LSs{&R-KuEFyUs9+L{fDpTp=-BY{{ zDXpokFHaBm&(EoDULjqJ#ije-soQax{g`50A2w^voQNMc7gyqfTRJ{(XD?6La~JEh zk9#L1vUnb72R2n*_u<$rqOp-&hD}^mbtheI9v0YjzXme{WG-AR>8zgG zIGyi7E0#1iOl+GsI$IULHW_~mdswqsIJshH>NGbh`sOlM`0kB#f0kE2Rl{?(H@Z2w zx^>nnZsA3}E>&w|vpi`+MC~AV`jlh)uARZcVdXzN+uf~R=G=I3o$()G1;^@gnl-dP z>^}E03_U$Qu1+MKG27xcwB^4O2dEU&hpY0e+dhTF*FPk)Yx+)O4bB;fX15gl-pgdp zzC17L?*C*AP@(ib-TXYv`EvT=3^+e3w(&KUv%DHSQm%H!hPbJnuSVrXX*bqwZ?1=5 zGJ)%6e_3wvF}1ae{T%cx-&iRf3i%RvebQK6Y-22AzKfd3ublX>omy#by*fJgwr1#Q zGz=(eAEmv#zaZmj%?|l`j1RHx{<>CuvIt*@C~u|5k*+#h%;{A8(uZ88!y|*dLC%?$ z)8kUc*CXUc>ow@}O^6nG_i&sZ&3b4qVhDIHeR7(%f%E9!+&m65xyo_dL2eDJhMW8?;M5nKrDZ`dI@x^!J zvtD-D5?1C+)VXK*&#ot@c{JWof6#oK%O;3?B1Bwn_O7ox4J=w;)R)vLHgEg3laq)Y zne47bEST`8B$-WX?ysk}%E3!$!Ag(cjW?pcZ14L~H`vwOZC{_HHl-Lxt+1Q@0WrRB z$BD^sy06_g>D9h3C*^zamr-9YG4Q(H=I^%(DY2Pf>>WNpZPaSk0q^mSP&O7 zea7q4>$Wh#l{5F4+@52D)GLRXui3iq5BsMM6;=XHoRuZ7ZSwY33NEZ<)tqZC8|bRI z4N}XfVieZ#rVokYL#l zJ!lz5&Zbfm_Jc;^y7qEBW`_7V!QyszvS2`=`bc1PUKP4! znuiVnbYG1^l=~o=@KQ+MFI9``Qi?zFMYp15ivBuZr2P&x)aOpd)nMBC)eQ@1&Zuvv z+t=;6cnbdO$#u__$Ls#Zm&fa)8*aCh2TgxU-$}1&ToHJt^X4#4$@~v36ppS9$HM z;mtR`^Yi}XYPNXqk%Ul+0ss;%N29z0Bn5=N=d0WU%Mi*qqY2ZzV>WHJwT`!<(~KRr zguNd?4WwI~9%hfCx3w{`o0<7aHpsD&o*CM3w08oRH{I06`4F&ZLvP1%h@lb!W%Sb8 zwYEBzt;}Qcc&gdNSh8Uw)WMQAfng?1!@I_L(TG07%U#oRuMUCsW-4oDOS`#C0U;YR zED}w>dA}Xt(#)FT>OYftGW_!SvT@{^xvvl0e|Hl))o=K@J{lrgl@A|S3V~(#6DDd= z9O>_$!^Q8eijHE3D7SH`Cqh1fI(5_y6ctVKYts zf{maDbU&Y-KdUXFGDu(pOBOake*`+Cl_1EQ?RNjc46R7ULFx!MZ7JhT0Zd?^oArd^ zt3UG~GvW6UQ^26)jRi6O4Av<`j%RdhQ9(NfNJs zeVdq$hCdfEWRs9FX}b9?FRw1|rqy#15_zg#WlN8q0eItUS&uOen7)-$Mvt6Zr*N*P zgy72+I@rd#p`ii@xL14KT%PaAmz4qIB%&(|sGBeJqMc2w$GBeItji1L^Us|#)`PXK zrxP=Jw*%4OFIAoV^@YwnH}jmwtRk$0S?Tf3u|fx_oLjaquR&ZVCIarzL8}GpN7iW=)@*}{;9uk-U0EM71$PqLW9|;jYI0βGcB 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 Date: Thu, 18 Apr 2019 22:43:54 +0800 Subject: [PATCH 123/780] rename all file --- .../id_118/Array_leetcode33-Solution1.java | 83 ------------------- ...3_Solution1-\344\274\230\345\214\226.java" | 50 ----------- .../id_118/Array_leetcode704-Solution1.java | 30 ------- ...leetcode153.java => leetcode_153_118.java} | 0 ...33-Solution2.java => leetcode_33_118.java} | 0 ...4-Solution2.java => leetcode_704_118.java} | 0 6 files changed, 163 deletions(-) delete mode 100644 Week_01/id_118/Array_leetcode33-Solution1.java delete mode 100644 "Week_01/id_118/Array_leetcode33_Solution1-\344\274\230\345\214\226.java" delete mode 100644 Week_01/id_118/Array_leetcode704-Solution1.java rename Week_01/id_118/{Array_leetcode153.java => leetcode_153_118.java} (100%) rename Week_01/id_118/{Array_leetcode33-Solution2.java => leetcode_33_118.java} (100%) rename Week_01/id_118/{Array_leetcode704-Solution2.java => leetcode_704_118.java} (100%) diff --git a/Week_01/id_118/Array_leetcode33-Solution1.java b/Week_01/id_118/Array_leetcode33-Solution1.java deleted file mode 100644 index 6ea813e3..00000000 --- a/Week_01/id_118/Array_leetcode33-Solution1.java +++ /dev/null @@ -1,83 +0,0 @@ -/** - * https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ - */ -class Solution { - public int search(int[] nums, int target) { - // 递归实现好麻烦,也可能是我没整理清楚?仍然有优化空间?这个逻辑,简直要疯了,等我捋捋的 - - if(nums.length<1){ - return -1; - } - - int left =0; - int right = nums.length-1; - return findRegion(nums,target,left,right); - } - - - // 查找有序区间,找到后二分。 - int findRegion(int[] nums,int target,int left,int right){ - - // 已有序,则二分查找 - if(nums[left] <= nums[right]){ - return findElementInSortedRegion(nums,target,left,right); - } - - - // 只有一个元素 - if(left==right){ - return nums[left]==target?left:-1; - } - - // 只有2个元素 - if(left+1==right){ - if(nums[left]==target){ - return left; - }else if(nums[right]==target){ - return right; - }else{ - return -1; - } - } - - // 旋转有序,分情况判断 - int middle = left + (right-left)/2; - - if(nums[middle] >= nums[left]){ - if(target <= nums[middle] && target>=nums[left]){ - // middle在左侧有序区间,且target在middle左侧 - return findRegion(nums,target,left,middle); - }else{ - // middle在左侧有序区间,且target在middle右侧 - return findRegion(nums,target,middle,right); - } - }else if(nums[middle] <= nums[right]){ - if(target >= nums[middle] && target<=nums[right]){ - // middle在右侧有序区间,且target在middle右侧 - return findRegion(nums,target,middle,right); - }else{ - // middle在右侧有序区间,且target在middle左侧 - return findRegion(nums,target,left,middle); - } - }else{ - return -1; - } - - } - - - // 在完全有序区间内进行查找(二分) - int findElementInSortedRegion(int[] nums,int target,int left,int right){ - if(left > right){ - return -1; - } - int middle = (right+left)/2; - if(target>nums[middle]){ - return findElementInSortedRegion(nums,target,middle+1,right); - }else if(targetright){ - return -1; - } - - // 旋转有序,分情况判断 - int middle = left + (right-left)/2; - - if(target==nums[middle]){ - return middle; - }else if(nums[middle] >= nums[left]){ - if(target < nums[middle] && target>=nums[left]){ - // middle在左侧有序区间,且target在middle左侧 - return findRegion(nums,target,left,middle-1); - }else{ - // middle在左侧有序区间,且target在middle右侧 - return findRegion(nums,target,middle+1,right); - } - }else if(nums[middle] <= nums[right]){ - if(target > nums[middle] && target<=nums[right]){ - // middle在右侧有序区间,且target在middle右侧 - return findRegion(nums,target,middle+1,right); - }else{ - // middle在右侧有序区间,且target在middle左侧 - return findRegion(nums,target,left,middle-1); - } - }else{ - return -1; - } - } - -} diff --git a/Week_01/id_118/Array_leetcode704-Solution1.java b/Week_01/id_118/Array_leetcode704-Solution1.java deleted file mode 100644 index af4b68fd..00000000 --- a/Week_01/id_118/Array_leetcode704-Solution1.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * https://leetcode-cn.com/problems/binary-search/submissions/ - */ -class Solution { - public int search(int[] nums, int target) { - // 非递归解法 - - // 1. 边界处理:空数组 - if(nums.length<1){ - return -1; - } - - // 2. 定义左右指针 - int left = 0; - int right = nums.length-1; - - // 3. 搜索。 - while(left<=right){ - int middle = (right+left)/2; - if(target > nums[middle]){ - left = middle+1; - }else if(target < nums[middle]){ - right = middle-1; - }else{ - return middle; - } - } - return -1; - } -} diff --git a/Week_01/id_118/Array_leetcode153.java b/Week_01/id_118/leetcode_153_118.java similarity index 100% rename from Week_01/id_118/Array_leetcode153.java rename to Week_01/id_118/leetcode_153_118.java diff --git a/Week_01/id_118/Array_leetcode33-Solution2.java b/Week_01/id_118/leetcode_33_118.java similarity index 100% rename from Week_01/id_118/Array_leetcode33-Solution2.java rename to Week_01/id_118/leetcode_33_118.java diff --git a/Week_01/id_118/Array_leetcode704-Solution2.java b/Week_01/id_118/leetcode_704_118.java similarity index 100% rename from Week_01/id_118/Array_leetcode704-Solution2.java rename to Week_01/id_118/leetcode_704_118.java From bf556998c2790a5c2560c1d0cc8b49777c6c5468 Mon Sep 17 00:00:00 2001 From: Fanlu Date: Thu, 18 Apr 2019 22:45:11 +0800 Subject: [PATCH 124/780] first commit of Fanlu's homework --- Week_01/id_26/ArrangingCoins.java | 50 +++++++++ .../LongestUnivaluePathWithDifferences.java | 84 ++++++++++++++ Week_01/id_26/PowXN.java | 106 ++++++++++++++++++ Week_01/id_26/SortArrayByParity.java | 44 ++++++++ Week_01/id_26/SortArrayByParityII.java | 50 +++++++++ 5 files changed, 334 insertions(+) create mode 100644 Week_01/id_26/ArrangingCoins.java create mode 100644 Week_01/id_26/LongestUnivaluePathWithDifferences.java create mode 100644 Week_01/id_26/PowXN.java create mode 100644 Week_01/id_26/SortArrayByParity.java create mode 100644 Week_01/id_26/SortArrayByParityII.java diff --git a/Week_01/id_26/ArrangingCoins.java b/Week_01/id_26/ArrangingCoins.java new file mode 100644 index 00000000..f780d827 --- /dev/null +++ b/Week_01/id_26/ArrangingCoins.java @@ -0,0 +1,50 @@ +// Source : https://leetcode.com/problems/arranging-coins/ +// Id : 441 +// Author : Fanlu Hai +// Date : 2018-04-17 +public class ArrangingCoins { + + public int arrangeCoinsWithLong(int n) { + int rows = 0; + long coins = 0; + while (true) { +// System.out.println(n + "**" + coins + " " + rows); + if (n > coins) { + rows++; + coins += rows; + } else if (n == coins) { + return rows; + } else { + return rows - 1; + } + } + } + + //faster than 82.04%, smaller than 100% + public int arrangeCoins(int n) { + int rows = 0; + long coins = 0; + while (true) { +// System.out.println(n + "**" + coins + " " + rows); + if (n > 0) { + rows++; + // use n - row instead of coins + to avoid int overflow + n -= rows; + } else if (n == 0) { + return rows; + } else { + return rows - 1; + } + } + } + + public static void main(String[] args) { + ArrangingCoins arrangingCoins = new ArrangingCoins(); + System.out.println(arrangingCoins.arrangeCoins(0)); + System.out.println(arrangingCoins.arrangeCoins(1)); + System.out.println(arrangingCoins.arrangeCoins(5)); + System.out.println(arrangingCoins.arrangeCoins(6)); + System.out.println(arrangingCoins.arrangeCoins(8)); + System.out.println(arrangingCoins.arrangeCoins(2147483647)); + } +} diff --git a/Week_01/id_26/LongestUnivaluePathWithDifferences.java b/Week_01/id_26/LongestUnivaluePathWithDifferences.java new file mode 100644 index 00000000..b3815dd6 --- /dev/null +++ b/Week_01/id_26/LongestUnivaluePathWithDifferences.java @@ -0,0 +1,84 @@ +// Source : https://leetcode.com/problems/powx-n/ +// Id : 50 +// Author : Fanlu Hai +// Date : 2018-04-18 +// I was trying to slove leetcode 50 but had a little differences with the problem itself +// It seems in leetcode 50 the path must be linear, which means it only have two ends, +// which requires different methods to calculate as mine will count all the linked univalue nodes. + +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class LongestUnivaluePathWithDifferences { + private int maxLength = 0; + + public int longestUnivaluePath(TreeNode root) { + + preOrderTraverse(root); + return maxLength; + } + + // get path count of each node + public int treePath(TreeNode root) { + int pathCount =0; + + if (null == root) + return 0; + if (null != root.left && root.val == root.left.val) { + pathCount += 1 + treePath(root.left); + } + if (null != root.right && root.val == root.right.val) { + pathCount += 1 + treePath(root.right); + } + return pathCount; + } + + public void preOrderTraverse(TreeNode root) { + + if (null == root) + return; + int tmp = treePath(root); +// System.out.println("node value: " + root.val + " | path count value: " + tmp); + if (tmp > maxLength) { + maxLength = tmp; + } + preOrderTraverse(root.left); + preOrderTraverse(root.right); + } + + public static void main(String[] args) { + LongestUnivaluePathWithDifferences longestUnivaluePath = new LongestUnivaluePathWithDifferences(); + TreeNode treeNode1 = new TreeNode(1); + TreeNode treeNode2 = new TreeNode(4); + TreeNode treeNode3 = new TreeNode(5); + TreeNode treeNode4 = new TreeNode(4); + TreeNode treeNode5 = new TreeNode(4); + TreeNode treeNode6 = new TreeNode(5); + TreeNode treeNode7 = new TreeNode(4); + TreeNode treeNode8 = new TreeNode(4); + TreeNode treeNode9 = new TreeNode(4); + TreeNode treeNode10 = new TreeNode(5); + + treeNode1.left = treeNode2; + treeNode1.right = treeNode3; + treeNode2.left = treeNode4; + treeNode2.right = treeNode5; + treeNode3.right = treeNode6; + treeNode4.left = treeNode7; + treeNode4.right = treeNode8; + treeNode5.left = treeNode9; + treeNode6.left = treeNode10; + + longestUnivaluePath.preOrderTraverse(treeNode1); + System.out.println(longestUnivaluePath.longestUnivaluePath(treeNode1)); + + } +} + + diff --git a/Week_01/id_26/PowXN.java b/Week_01/id_26/PowXN.java new file mode 100644 index 00000000..a57aff12 --- /dev/null +++ b/Week_01/id_26/PowXN.java @@ -0,0 +1,106 @@ +// Source : https://leetcode.com/problems/powx-n/ +// Id : 50 +// Author : Fanlu Hai +// Date : 2018-04-17 +public class PowXN { + + //Time Limit Exceeded, this should be O(n) which means I need O(log(n)) or better. + public double myPowVerySlow(double x, int n) { + + double result = x; + if (n == 0) { + return 1; + } + if (n > 0) { + for (int i = 1; i < n; i++) { + result *= x; + } + return result; + } + n = -n; + for (int i = 1; i < n; i++) { + result *= x; + } + return 1 / result; + } + + // x pow of n usually means you need to multiple x for n times, we can use dichotomy to reduce it. + public double myPowWithOverflowProblem(double x, int n) { + + if (n == 0) { + return 1; + } + if (n < 0) { + //! here is the problem, -2147483648 will cause int overflow as it can't be bigger than 2147483647 + n = -n; + x = 1 / x; + } + + double result = 1; + double tmp = x; + + while (true) { + if (n == 1) { + return result * tmp; + } + if (n % 2 == 1) { + result *= tmp; + + } + n /= 2; + tmp *= tmp; + } + } + + + // x pow of n usually means you need to multiple x for n times, we can use dichotomy to reduce it. + // solved int overflow problem + // did not use recursion + // 82.1 100% + public double myPow(double x, int n) { + + boolean minValue = false; + if (n == 0 || x == 1) { + return 1; + } + + // handle -2147483648 in a not very clean way + if (n == Integer.MIN_VALUE) { + n++; + minValue = true; + } + + if (n < 0) { + n = -n; + x = 1 / x; + } + + double result = 1; + double tmp = x; + + while (true) { + if (n == 1) { + if (minValue) + return result * tmp * x; + return result * tmp; + } + if (n % 2 == 1) { + result *= tmp; + } + n /= 2; + tmp *= tmp; + } + } + + + public static void main(String[] args) { + PowXN powXN = new PowXN(); + System.out.println(powXN.myPow(2, 11)); + System.out.println(powXN.myPow(2, 12)); + System.out.println(powXN.myPow(5, -2)); + System.out.println(powXN.myPow(8, 4)); + System.out.println(powXN.myPow(0.9, 2147483647)); + System.out.println(powXN.myPow(1, -2147483647)); + System.out.println(powXN.myPow(0.3, -2147483648)); + } +} diff --git a/Week_01/id_26/SortArrayByParity.java b/Week_01/id_26/SortArrayByParity.java new file mode 100644 index 00000000..c45eff00 --- /dev/null +++ b/Week_01/id_26/SortArrayByParity.java @@ -0,0 +1,44 @@ +// Source : https://leetcode.com/problems/sort-array-by-parity/ +// Id : 905 +// Author : Fanlu Hai +// Date : 2018-04-15 + +import java.util.Arrays; + +class SortArrayByParity { + public int[] sortArrayByParity(int[] A) { + int i = 0; + int j = A.length - 1; + while (j > i) { +// System.out.println(Arrays.toString(A)); + if (A[i] % 2 == 1 && A[j] % 2 == 0) { + swapNumInArray(i, j, A); + } + + if (A[i] % 2 == 0) { + i++; + //in order to make sure a check is performed + continue; + } + + if (A[j] % 2 == 1) { + j--; + //in order to make sure a check is performed + continue; + } + } + return A; + } + + public void swapNumInArray(int firstIndex, int secondIndex, int[] array) { + int tmp = array[firstIndex]; + array[firstIndex] = array[secondIndex]; + array[secondIndex] = tmp; + } + + public static void main(String[] args) { + SortArrayByParity sortArrayByParity = new SortArrayByParity(); + int[] a = {1, 1, 1, 1, 2, 2, 2, 3, 3, 33, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 8}; + System.out.println(Arrays.toString(sortArrayByParity.sortArrayByParity(a))); + } +} \ No newline at end of file diff --git a/Week_01/id_26/SortArrayByParityII.java b/Week_01/id_26/SortArrayByParityII.java new file mode 100644 index 00000000..2c39826a --- /dev/null +++ b/Week_01/id_26/SortArrayByParityII.java @@ -0,0 +1,50 @@ +// Source : https://leetcode.com/problems/sort-array-by-parity-ii/ +// Id : 922 +// Author : Fanlu Hai +// Date : 2018-04-15 + +import java.util.Arrays; + +class SortArrayByParityII { + public int[] sortArrayByParityII(int[] A) { + int i = 0; + int j = 1; + while (true) { +// System.out.println(A.length + " " + i + " " + j + " " + Arrays.toString(A)); + + if (i >= A.length || j >= A.length) { + return A; + } + + if (A[i] % 2 == 1 && A[j] % 2 == 0) { + swapNumInArray(i, j, A); + } + + if (A[i] % 2 == 0) { + i += 2; + //in order to make sure a check is performed + continue; + } + + if (A[j] % 2 == 1) { + j += 2; + //in order to make sure a check is performed + continue; + } + + } + + } + + public void swapNumInArray(int firstIndex, int secondIndex, int[] array) { + int tmp = array[firstIndex]; + array[firstIndex] = array[secondIndex]; + array[secondIndex] = tmp; + } + + public static void main(String[] args) { + SortArrayByParityII sortArrayByParityII = new SortArrayByParityII(); + int[] a = {1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 2, 2}; + System.out.println(Arrays.toString(sortArrayByParityII.sortArrayByParityII(a))); + } +} \ No newline at end of file From 79174a838281f4c2d2c04b25f4372763dd8dc56c Mon Sep 17 00:00:00 2001 From: hongchao6 Date: Thu, 18 Apr 2019 22:48:16 +0800 Subject: [PATCH 125/780] LeetCode 242 --- Week_01/id_131/LeetCode_242_131.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Week_01/id_131/LeetCode_242_131.cpp diff --git a/Week_01/id_131/LeetCode_242_131.cpp b/Week_01/id_131/LeetCode_242_131.cpp new file mode 100644 index 00000000..2af94a3e --- /dev/null +++ b/Week_01/id_131/LeetCode_242_131.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + bool isAnagram(string s, string t) { + if(s.size() != t.size()) return false; + int strCount[26] = {0}; + for(int indexStr = 0; indexStr < s.size(); ++indexStr) + { + strCount[s[indexStr]-'a'] += 1; + strCount[t[indexStr]-'a'] -= 1; + } + for(int indexC = 0; indexC < 26; ++indexC) + { + if(strCount[indexC] != 0) return false; + } + return true; + } +}; \ No newline at end of file From b1c148c28dfa6ca2ab1d08f13f962472c20f3478 Mon Sep 17 00:00:00 2001 From: zouyingjie Date: Thu, 18 Apr 2019 22:50:07 +0800 Subject: [PATCH 126/780] =?UTF-8?q?001=20=E5=8F=B7=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E5=91=A8=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_1/LeetCode153.java | 35 ++++++++++++++++++++++ Week_01/id_1/LeetCode50.java | 22 ++++++++++++++ Week_01/id_1/LeetCode698.java | 56 +++++++++++++++++++++++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 Week_01/id_1/LeetCode153.java create mode 100644 Week_01/id_1/LeetCode50.java create mode 100644 Week_01/id_1/LeetCode698.java diff --git a/Week_01/id_1/LeetCode153.java b/Week_01/id_1/LeetCode153.java new file mode 100644 index 00000000..6e66716b --- /dev/null +++ b/Week_01/id_1/LeetCode153.java @@ -0,0 +1,35 @@ +class Solution { + public int findMin(int[] nums) { + int len = nums.length; + if (len == 1) { + return nums[0]; + } + + int min = 0; + int max = len - 1; + + if (nums[min] < nums[max]) { + return nums[min]; + } + + int mid = (min + max) / 2; + while (min <= max) { + if (nums[min] < nums[mid]) { + min = mid; + mid = (min + max) / 2; + }else if (nums[min] > nums[mid]){ + max = mid; + mid = (min + max) / 2; + }else { + break; + } + } + + if (min < len -1) { + if (nums[min] > nums[min + 1]) { + return nums[min + 1]; + } + } + return nums[min]; + } +} \ No newline at end of file diff --git a/Week_01/id_1/LeetCode50.java b/Week_01/id_1/LeetCode50.java new file mode 100644 index 00000000..e217a405 --- /dev/null +++ b/Week_01/id_1/LeetCode50.java @@ -0,0 +1,22 @@ +public class Solution { + double myPow(double x, int n) { + double result = this.pow(x, Math.abs(n)); + + if (n < 0) { + return 1/result; + } + return result; + } + + private double pow(double x, int n) { + if (n == 0) { + return 1; + } + double half = pow(x, n / 2); + if (n % 2 == 0) { + return half * half; + } else { + return half * half * x; + } + } +} \ No newline at end of file diff --git a/Week_01/id_1/LeetCode698.java b/Week_01/id_1/LeetCode698.java new file mode 100644 index 00000000..70a7e679 --- /dev/null +++ b/Week_01/id_1/LeetCode698.java @@ -0,0 +1,56 @@ + +public class Solution { + + private int average; + private boolean[] mark; + public boolean canPartitionKSubsets(int[] nums, int k) { + + if (k == 1) { + return true; + } + + int sum = 0; + int len = nums.length; + + for (int i = 0; i < len; i ++) { + sum += nums[i]; + } + + if (sum % k != 0) { + return false; + } + + this.average = sum / k; + mark = new boolean[len]; + + return calSubSum(nums, 0, average, 0, k); + + } + + public boolean calSubSum(int[] nums, int curSum, int subSum, int start, int k) { + + if (k == 1) { + return true; + } + + if (curSum == subSum) { + return calSubSum(nums, 0, subSum, 0, k - 1); + } + + for (int i = start; i < nums.length; i ++) { + if (mark[i]) { + continue; + } + mark[i] = true; + + if (this.calSubSum(nums, curSum + nums[i], subSum, i + 1, k)) { + return true; + } + mark[i] = false; + } + return false; + + + } + +} From 1e9d706ca2ac1da8c926f673c54ef1428fefc980 Mon Sep 17 00:00:00 2001 From: baiyaguang <301070179@qq.com> Date: Thu, 18 Apr 2019 22:51:45 +0800 Subject: [PATCH 127/780] LeetCode_242_81 --- Week_01/id_81/LeetCode_242_81.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Week_01/id_81/LeetCode_242_81.java diff --git a/Week_01/id_81/LeetCode_242_81.java b/Week_01/id_81/LeetCode_242_81.java new file mode 100644 index 00000000..b764a021 --- /dev/null +++ b/Week_01/id_81/LeetCode_242_81.java @@ -0,0 +1,16 @@ +/** + * @author okbeng + * @desc 首先将字符串转换成 char 数组,然后对其进行排序,最后在用 Arrays 工 * 具类判断其是否相同。注意限类判断条件。 + * @date 2019-04-18 22:49 + */ +class Solution { + public boolean isAnagram(String s, String t) { + if(s.length() != t.length()) + return false; + char[] arr1 = s.toCharArray(); + Arrays.sort(arr1); + char[] arr2 = t.toCharArray(); + Arrays.sort(arr2); + return Arrays.equals(arr1, arr2); + } +} From 058cb98d60106dd50aad76994a6e4d8af27d1a61 Mon Sep 17 00:00:00 2001 From: liyanling Date: Fri, 19 Apr 2019 00:08:43 +0800 Subject: [PATCH 128/780] update note --- Week_01/id_118/NOTE.md | 59 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/Week_01/id_118/NOTE.md b/Week_01/id_118/NOTE.md index c684e62f..2a4fdaf8 100644 --- a/Week_01/id_118/NOTE.md +++ b/Week_01/id_118/NOTE.md @@ -1 +1,58 @@ -# 学习笔记 \ No newline at end of file +# 本周学习重点 + +由于时间有限,本周学习重点放在 链表和数组 这两类题型上。 + +一些比较有收获的点是: +1. 同一类型的题目,可以从 easy 开始做,然后到 middle 最后再到 hard,层层递进,因为难题都是由简单题目演进而来的,由浅入深会比较容易接受, +2. 做题前,先对“已知信息”做收集,然后再看利用已有知识,如何达到题目要求。 +3. 解题思路可以靠画图辅助梳理,解法也可以在纸上走一遍进行推导,不要上来就写代码。 +4. 最后,同一题可以尝试用不同的方法去解决。 + + +# 链表题型总结 +本周截止写这篇总结时,做完的链表题目有: +- [leetcode.83.删除排序链表中的重复元素](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/) +- [leetcode.21.合并两个有序链表](https://leetcode-cn.com/problems/merge-two-sorted-lists/) +- [leetcode.24.两两交换链表中的节点](https://leetcode-cn.com/problems/swap-nodes-in-pairs/) +- [leetcode.142.环形链表2](https://leetcode-cn.com/problems/linked-list-cycle-ii/) +- [leetcode.25.k个一组翻转链表](https://leetcode-cn.com/problems/reverse-nodes-in-k-group/) + +一些小总结: +- 链表题型,怎么都跑不了一些基本操作:插入节点(头、尾、中间),删除节点(头、尾、中间),相邻节点交换。所以,必须对这些操作熟悉的不能再熟悉。 +- 链表题型,比较常见的是: + - 删除指定条件的元素(eg:删除重复元素、删除倒数第k个节点、删除中间节点或a/b处的节点) + - 链表反转(eg:整体反转、两两反转、k个一组反转) + - 环的问题(eg:判断链表中是否有环、找到链表环的第一个节点) + - 两个链表的问题(eg:两个有序链表合并、求两个有序链表的公共部分) + - 。。。。。。 +- 链表问题的解法: + - 常规题,一般是辅助指针,加上常规的插入删除交换操作就可以搞定。 + - 部分题型需要结合哈希表。 + - 有一些题目需要用些小技巧,比如多次迭代、快慢指针等。 +- 写代码时需要注意的点: + - 注意不要丢节点,有一些操作的前后顺序很重要,一不小心就把后面的整条链给丢掉了。 + - 也不要造成环,链表拆解或合并,最容易出现这种情况,一定要在纸上把流程捋清晰了再写代码。 + - 有时候,加一个哨兵节点能够简化操作。 + + +# 数组题型总结 +本周截止到写这篇总结时,做完的链表题目有: +- [leetcode.905.按奇偶排序数组](https://leetcode-cn.com/problems/sort-array-by-parity/) +- [leetcpde.922.按奇偶排序数组2](https://leetcode-cn.com/problems/sort-array-by-parity-ii/) +- [leetcode.153.寻找旋转排序数组中的最小值](https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/submissions/) +- [leetcode.33.搜索旋转排序数组](https://leetcode-cn.com/problems/search-in-rotated-sorted-array/description/) +- [leetcode.704.二分查找](https://leetcode-cn.com/problems/binary-search/) + +一些小总结: +- 数组题型相比链表就比较杂了,我做过的题目也不是太多,以我浅薄的经验稍稍总结一下。 +- 数组的特点基本操作,一般是:数据移动交换或删除。不一般是:排序、二分、以及其他图算法等等。 +- 我目前做的这几道题,基本上都是排序和二分查找。几个关键点吧: + - 排序题目要么是冒泡、插入、归并等这些经典的算法题,要么是这些算法题的变种。其中以归并、快排的思路居多,也偶尔有一些插入排序的变形题。 + - 查找类题目,只要要求了 O(logn),基本上就二分没跑了,实现上可能能用递归解决。 +- 写代码时: + - 首先要注意数组越界问题。 + - 接下来是需要用到的索引指针的初始化的问题。 + - 以及,非常琐碎的边界点的问题,比如 是 > 还是 >=,是 left=middle 还是 left = middle+1。 + + + From 3700d1f4f8f91b927bb127e458392bcbf762c3e8 Mon Sep 17 00:00:00 2001 From: MichaelHuang Date: Fri, 19 Apr 2019 01:38:53 +0800 Subject: [PATCH 129/780] sortarraybyparity --- Week_01/id_33/LeetCode_905_33.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Week_01/id_33/LeetCode_905_33.py diff --git a/Week_01/id_33/LeetCode_905_33.py b/Week_01/id_33/LeetCode_905_33.py new file mode 100644 index 00000000..947e7198 --- /dev/null +++ b/Week_01/id_33/LeetCode_905_33.py @@ -0,0 +1,19 @@ +class Solution: + def sortArrayByParity(self, A: List[int]) -> List[int]: + i = 0 + j = len(A) - 1 + while i < j: + if A[i] % 2 == 1 and A[j] % 2 == 0: + A[i], A[j] = A[j], A[i] + i += 1 + j -= 1 + while i < j and A[j] % 2 == 1: + j -= 1 + while i < j and A[i] % 2 == 0: + i += 1 + return A + +s = Solution() +a = [3, 1, 2, 4] +output = s.sortArrayByParity(a) +print(output) \ No newline at end of file From f2762b50b045bf03b172d248b58451f82ae595e7 Mon Sep 17 00:00:00 2001 From: jidw <365157975@qq.com> Date: Fri, 19 Apr 2019 01:41:10 +0800 Subject: [PATCH 130/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_91/LeetCode_242_091.java | 28 ++++++++++++++++++++++++++++ Week_01/id_91/LeetCode_441_091.java | 0 2 files changed, 28 insertions(+) create mode 100644 Week_01/id_91/LeetCode_242_091.java create mode 100644 Week_01/id_91/LeetCode_441_091.java diff --git a/Week_01/id_91/LeetCode_242_091.java b/Week_01/id_91/LeetCode_242_091.java new file mode 100644 index 00000000..c23a0cad --- /dev/null +++ b/Week_01/id_91/LeetCode_242_091.java @@ -0,0 +1,28 @@ +/** + * 有效的字母异位词 + * 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 + * https://leetcode-cn.com/problems/valid-anagram/ + */ +class Solution { + public boolean isAnagram(String s, String t) { + + if(s==null||t==null){ + return false; + } + if(s.length()!=t.length()){ + return false; + } + + int[] counter = new int[26]; + for (int i = 0; i < s.length(); i++) { + counter[s.charAt(i) - 'a']++; + counter[t.charAt(i) - 'a']--; + } + for (int count : counter) { + if (count != 0) { + return false; + } + } + return true; + } +} \ No newline at end of file diff --git a/Week_01/id_91/LeetCode_441_091.java b/Week_01/id_91/LeetCode_441_091.java new file mode 100644 index 00000000..e69de29b From 94e22bedc211b2ef3c30580b1329d1dda3d490b2 Mon Sep 17 00:00:00 2001 From: jidw <365157975@qq.com> Date: Fri, 19 Apr 2019 01:44:06 +0800 Subject: [PATCH 131/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_91/LeetCode_441_091.java | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Week_01/id_91/LeetCode_441_091.java b/Week_01/id_91/LeetCode_441_091.java index e69de29b..02f98a52 100644 --- a/Week_01/id_91/LeetCode_441_091.java +++ b/Week_01/id_91/LeetCode_441_091.java @@ -0,0 +1,30 @@ +/** + * 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 + * + * 给定一个数字 n,找出可形成完整阶梯行的总行数。 + * + * n 是一个非负整数,并且在32位有符号整型的范围内。 + * https://leetcode-cn.com/problems/arranging-coins/ + * @author jidw + */ +class Solution { + public int arrangeCoins(int n) { + if(n == 1){ + return 1; + } + long nlong = (long) n; + + long start = 0, end = nlong; + while(start + 1 < end){ + long mid = start + (end - start) / 2; + + if(mid*(mid+1) <= 2*nlong){ + start = mid; + } + else{ + end = mid; + } + } + return (int)(start); + } +} \ No newline at end of file From b1a1251e129f9a367563d1a9452da799f87a9ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=A1=E6=8B=A9?= Date: Fri, 19 Apr 2019 07:05:42 +0800 Subject: [PATCH 132/780] 324,503 solution --- Week_01/id_47/LeetCode_324_47.java | 27 ++++++++++++++++++++++++ Week_01/id_47/LeetCode_503_47.java | 33 ++++++++++++++++++++++++++++++ Week_01/id_47/NOTE.md | 5 ++++- 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_47/LeetCode_324_47.java create mode 100644 Week_01/id_47/LeetCode_503_47.java diff --git a/Week_01/id_47/LeetCode_324_47.java b/Week_01/id_47/LeetCode_324_47.java new file mode 100644 index 00000000..c0a41927 --- /dev/null +++ b/Week_01/id_47/LeetCode_324_47.java @@ -0,0 +1,27 @@ +/** + * 交叉放置大小元素 + * 时间复杂度为 O(nlog(n)) -> 排序上面 + */ +class Solution { + public void wiggleSort(int[] nums) { + if (nums.length <= 1) { + return; + } + Arrays.sort(nums); + int[] help = new int[nums.length]; + int len = nums.length; + int i = (len+1) / 2 - 1; + int j = len-1; + int k = 0; + for (; k < len; ++k) { + if ((k & 1) == 0) { + help[k] = nums[i--]; + } + else { + help[k] = nums[j--]; + } + } + + System.arraycopy(help, 0, nums, 0, help.length); + } +} \ No newline at end of file diff --git a/Week_01/id_47/LeetCode_503_47.java b/Week_01/id_47/LeetCode_503_47.java new file mode 100644 index 00000000..71f6647f --- /dev/null +++ b/Week_01/id_47/LeetCode_503_47.java @@ -0,0 +1,33 @@ +/** + * 由于题目是归属到stack目录下,因此思路会顺着stack进行。否则不一定能解答出来 + */ +class Solution { + public int[] nextGreaterElements(int[] nums) { + Stack pos = new Stack<>(); + int len = nums.length; + int[] res = new int[len]; + for (int i = 0; i < len; ++i) { + res[i] = -1; + } + for(int t=0; t<2; ++t) { + for (int i = 0; i < nums.length; ++i) { + + int num = nums[i]; + while (!pos.isEmpty() && num > nums[pos.peek()]) { + int p = pos.pop(); + res[p] = num; + } + + if (!pos.isEmpty() && pos.peek() == i) { + res[i] = -1; + break; + } + + pos.push(i); + + } + } + + return res; + } +} \ No newline at end of file diff --git a/Week_01/id_47/NOTE.md b/Week_01/id_47/NOTE.md index c684e62f..00a49759 100644 --- a/Week_01/id_47/NOTE.md +++ b/Week_01/id_47/NOTE.md @@ -1 +1,4 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 +1. 数组题目最外层的遍历是必须的。 +2. 内层的遍历一般可以优化 + 1. 查找可以为hash或者二分 \ No newline at end of file From 3fd1957af35d23a4dea12a76f615b3aea7a7392f Mon Sep 17 00:00:00 2001 From: wangfan Date: Fri, 19 Apr 2019 07:08:23 +0800 Subject: [PATCH 133/780] del depulicate list --- Week_01/id_57/leetcode_83_057.cpp | 82 +++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 Week_01/id_57/leetcode_83_057.cpp diff --git a/Week_01/id_57/leetcode_83_057.cpp b/Week_01/id_57/leetcode_83_057.cpp new file mode 100644 index 00000000..1f092f3e --- /dev/null +++ b/Week_01/id_57/leetcode_83_057.cpp @@ -0,0 +1,82 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + ListNode* cur = head; + while (cur != NULL && cur->next != NULL) + { + if(cur->val == cur->next->val) + { + cur->next = cur->next->next; + continue; + } + cur = cur->next; + } + return head; + } +}; + + +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + * 无序链表处理 + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + ListNode* res = head; + ListNode* pre = NULL; + ListNode* cur = head; + ListNode* next = NULL; + int i = 0; + unordered_map M; + if (cur == NULL || cur->next == NULL) + return res; + next = cur->next; + M[cur->val] = i++; + while(next != NULL) + { + if (M.find(next->val) == M.end()) + { + M[next->val] = i++; + pre = cur; + cur = next; + next = next->next; + printf("i %d\n",i); + } + else + { + if(pre) + { + if (res ==cur) + res = next; + pre->next = next; + cur = next; + next = next->next; + } + else + { + res = next; + pre = cur; + cur = next; + next = next->next; + printf("res: %d\n",res->val); + } + } + } + return res; + + } +}; \ No newline at end of file From 8b39b185e819142147dfd24a043dd3933f20485c Mon Sep 17 00:00:00 2001 From: XinRuoShi Date: Fri, 19 Apr 2019 10:31:59 +0800 Subject: [PATCH 134/780] LC:905 922 --- Week_01/id_86/LeetCode_905_086.c | 22 +++++++++ Week_01/id_86/LeetCode_905_086.cs | 82 +++++++++++++++++++++++++++++++ Week_01/id_86/LeetCode_905_086.py | 4 ++ Week_01/id_86/LeetCode_922_086.c | 21 ++++++++ Week_01/id_86/LeetCode_922_086.cs | 44 +++++++++++++++++ Week_01/id_86/LeetCode_922_086.py | 4 ++ 6 files changed, 177 insertions(+) create mode 100644 Week_01/id_86/LeetCode_905_086.c create mode 100644 Week_01/id_86/LeetCode_905_086.cs create mode 100644 Week_01/id_86/LeetCode_905_086.py create mode 100644 Week_01/id_86/LeetCode_922_086.c create mode 100644 Week_01/id_86/LeetCode_922_086.cs create mode 100644 Week_01/id_86/LeetCode_922_086.py diff --git a/Week_01/id_86/LeetCode_905_086.c b/Week_01/id_86/LeetCode_905_086.c new file mode 100644 index 00000000..3f4f7415 --- /dev/null +++ b/Week_01/id_86/LeetCode_905_086.c @@ -0,0 +1,22 @@ +//simple C + +int* MethodFor905_1(int* A, int ASize, int* BSize) +{ + int e = 0; + int o = ASize - 1; + int *B = (int *)malloc(sizeof(int) * ASize); + + for (int i = 0; i < ASize; i++) + { + if (A[i] % 2 == 0) + { + B[e++] = A[i]; + } + else + { + B[o--] = A[i]; + } + } + *BSize = ASize; + return B; +} \ No newline at end of file diff --git a/Week_01/id_86/LeetCode_905_086.cs b/Week_01/id_86/LeetCode_905_086.cs new file mode 100644 index 00000000..ab830dae --- /dev/null +++ b/Week_01/id_86/LeetCode_905_086.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AlgorithmTest +{ + ///

  • NxhfF0o%kIaR2U1gY&B=34qwWS80_ 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

    eYrbpfM{EYjpp3>__$AjD~ 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 TRU~uTz{0qnU11+ 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 oe0}a z=Ca+IKAGUYc)``)a#rvf(5*UrzzRwgEw3@7E2n=OaBwXpVc;yo;^``&H$Bu@$ zrSrr**xX@7Siv{>b@%0nT@aRl-nAK=5n4zr&5q{x|jB}4mZ=4 z4^0c*Gy0|%+n%(~80pmilDqegDO$df<`Q!n1ot^D!?GKpCzyAEbf zQr%I~)-KOdYv3iUfFNQ<2;;g*fJ!aMX1Hj1Hi!45zR)Juo#Sv~Or_uifdse7)v*t> z;_rP{Ah^FeZ`F|;1Y3yK5WzJ`1P-! z_*P!TgYn>0D=Z7k&duwVPhb;3% z_um$jKkQK83J=lf$bL!nJV8vOaY2H9vN3o-@6dBr?;076@qp{uNRqqFn2l)xUAekV zjClNwIG1%g-jMQo0~OLumKkPE*OVmjv|C!Vi%2%+KN6{iq8N95*CI&Q=WT6pL#05e z!l&~zio~}i(?1o4{?s|LGOshJmrMs*R^p7t2OElW?V$eo`yEjg1nB8nh`~EVJ*fqu zN{AymrOn*QGB-2wcu9uu)Hn}4aL@J(nQY;Nl5OOzgd1bzadjF{HRVb=k;2|oIZoQl zecHL)J*nmc%Gb13nqp=oUn<&_cnulyKwsI;kNQX%yd$7XyzE=@ivTw;fNX(h}2Ey_lFku8erxa;r?tX%nqUv4o(D)0FqF<)+}d@(!jlq z+1Aw2{|AxN%4#^ZHZ8=i4N@4^@SAnEBYvE2I>J0Vb?vB=R-5zgd{wbfUEJaD}qzq%Te8 zm(JQ{$0BlKr|P~8V8!&p(Fhn{{24*x34hQj0b$042S!9|SoBBNXq82xT@(0S06~$- z%b552X{JOT!Qns)QsyJ0Wfk<%Mp)x^j;1q3X#JK%1T~pm&0GneSijg^p3|UvmRVL@ zPc07R#F$iqN*$7Inc9_)+HQU1)z{j=*E*VxD&Ix33y;;z3x%RnD((XQ?-4!K)hc>B z_nt5<>BJM}UP*jyK$_+BC&ldirY#oDm}Q<=PVaGHF%7_c)zN28+Uq*@r5HQmeW3kP z>DqpTXW91POWJ6@ASE)FOL>&P%~CvQF?k0K8!^Us{~UzZ6qgEIHvioJJ-8~A#{Ack zBC$C3->&w#7YNKHCk3XV}d%`R91dK9m@tF!zyWLAJT z-cDwvO86!M_tgAFnVY6pC@saC)V(M$_j1ExX3AtUUW0rj2mao*yf^pCPoZuGV3b`O z(T-uVA|Jq)HVKeZkp=2fop)P^=7is7>_2+R;Q-1J&1M}*$qM4)PpP4lXvp{4_~wx$Jil7hvPb`M4o&nNMXzBDMz8f>>EzQ6ULE-C2C7QUqc zdHq=W^h;a+-$+DG!_UZ12-5fRm-0*RFcSJIuEbXHsox9st)uSS_nuPnH>f?0wPU>- zw1<}txwWDfOk&?qnff%~#Z7{zRm2$hqtlkD{{osF=?Uiu1)vNIXLV7%0iy?kXl?zr zX1i+Tym7n#I_q+$WcVId%`y2*3JM?Q3pSG#1*+YodmwaOIjWhJ*>OE+)S50>zu;cn z%{d<5ar`3*fl7+l8$a$WZu-lbjDFZ0Vlvu$skB@8R7+4MJzGION32nDQ(XsNJFvc0 zR#xvKlQS?VJM4YZZ)zdNWAbh#v?JM2J@$z`Ri|zX%w*s>tw6RY-}AL#C(X{k zLeNLgLUa##?>?`RiP7$fRnhvroBr{Gny!Dbnm*rse!$UW;1u0aD^NXH=EveF2+Ehj z`_0Zd)~o5<5~tr)eXX01G(k$JJ(ghCAhI+-NF(AOWRayadi34 zn9k^@Ch{|-RY@Ww5%GfHFj!-oJe$$^G5gmS<}WnIZT(usgT4F3v7rmsJc?ZeNIvtz z-oqP^VqjhgzO>&{3LrHL@&h=loh1zD5AB|IwR)q|82iLY2(zK$kPx69ERZkc-?zA7 zmvFlGz3vL_;zP(2Cl9mdnNw?hMab{yoP2-PTZj1%6uhyVIopLigB^`_!~N6tSJq8m zg?EeZS0=X~UjEq!AmG93q4f(xUPzjlI?|K5{tB^C-r|KpiblUJ9ijPph@;c~kVZo` znhi_!;+kNK_AQ0kNoPVN>`$Gk>#$xs>9opH`&Qs*5bI+LGfwSxYnAs8t@7UU8&YF6 z1=qFCEJuP48?eaHQ@fmh1T+4|CBl{oIy=0$tnOd#RcF-J`4_+3adY)=2ffHF-|YRU z`rx`ax=G*)-+ETkigyXLQN~3}f?f*R&nFEyIpyH}*lZ$2y|$;8N66bR;0yQVZfd89 z`1KE%^rv8I0@yxJ!BKYPV=|~b-|Z@cU1lPiO{OMUe6WK~Py^PcJTGnFOi_fH+L;3n zNuANmoL>esE{i6+?h}?;D&bW=;I0WCYK;ScFX5u{#))9{pzjl{3N=5R(Ebpzwdy;& zYy40sQ!%32I0?g9el#^X#IP#=ndCd^Io3)u{`oW@H57H+@if3ZS>?oW8?-m>Y@rqR zW08rx2e5CBJXJy^iLI;OJ9?^cJ?w*_ z>{MQPtnHVt8{i*f664|*l+2AC_)||6{R+|BeNxv)Ic!IlQ&}F=S&)2L<=v+jEV~zQ z?YmJAU1Bidt)xX|uU9>0V8rx2H{k1m($gMfXHLv75Ps@jQZFU)AHe*ZXnwMB^d!W73cTk?-Y|D96xpp3|w$hq1h`e?;L7P@^#!3cxSPe2T=q{rhOy2f;y=^^_g@lbE zM^{Pl)l0M+eF0wWP$5TnO_nn>>56LFG^h|rTF&s@KsH@iw+nEdG{xq_0F;>@dJZ?yv+0ezejtB^1 zbFsRTAd%DXN^(anaTKSUh3YelK+R~`8F@{}cBDnN7F7~D?fog_FhiNTis_{VG<<^MPJ-3}_0xu>1eTC`@O|UQZ*5Ye8auS`(fmIG`=h>{)f;R8 z-`p-k%q-@SXhupevf#K0gC3Eb#oe?0znMm8=hMFgJ1Z6NX05|UU&ia($n#pjbrWAK zOPqk2i4-G}i&N*OWoS3xtKeYX|HE4H_q3lUZFg&fyGI#xW)uBn(bM||yA{gb8-3e1 z#8#7%M${lVZKWwgo1?9xPAB|okL{Ct8-83iyNI!EV_zU&nlh~f0jAHJY=iW;s)fg;^f9<03_fJO=VFi99Jvil%Y<`1W2YZLUUD~rP4&CXH zw;>PeeXZ@i5wVO%nibNQ!NHBd2EWMsryJR*%pa0}T<)uJSI0Zcfz!U@5$mNNgII2& z_cRQTJbEpnp|dFb679*+Hfs4T7gwDL8y$HlqH`JHc#lB^0by$ZXGYlVzMDaX8=wG_ z!)HE*b?1=)o|W%eLp1+f3g3h+YP}lG9UUP@sq7{m5}FjuIiY5F$m0|8pS}0UYMQAR zPv@b}D|ezNTkYH^v}a@N_~|da7stc?Z#$W+PJJQzs!``HlJjT(O1r@C^T#*jX2k){ z;NOx{>Wc!a$#?cAk;9yE82>gPed6xs>HMumIl08nPO9Hc&GLB zvj>`W_~AH#u_m_YJf^Usc2Lh~Y__1wN%mU~kpM=E1`5iG5sZsG>@QVD zaoC&OZw8_s-RT(RPQGx3V!Un0r2RxNKIQ;Y?8YC})fef}u&quLrO z>}XO3qdv61m89CZ%}Lch8e$$(T}1AD3r~0LAu5Yvzjbxvp{ta09jlQ6aRkC2K=piux`GimkrC(KE>jS7AZ;3{=kZP z#5E!kZcyk#C5VM9mk&kE#lbnFKh8UtVc*xGpsf)Y&QIV8zdGm0<^L^V#$28qRC)A? zK5iy^fYX2dt%etQC)%|bH(@|QhCWV9a)>?T5SALPMcU~*(*+(UJ}P?d<*&BEZK2cA z?+%7apXm7E+*HUdJXJz4PNi>guqrDQ%pZM!3Wb#Z3olhwW#We)z96oSPl@QSZIvkF{BnxJ*=yM z45n-PH4ql4OzE;L`>{86&mYm*^6FBkre;f#u|#`ZwgnOBPA>dBxBSds|G) zYcItqCyx6^==wKt;!>?3PA|xY_b$vN#I#&hCd<_vaHXSjXXGgJLdc9iJQKkP_*3Ou3c2 z=`;S@(F~fPF@keEi`e95ImzQvQs261t+qdtRu-9QPK5V(sEDBZoFx_vJVIQL%SDXxx{bD!xp-wR(~WJC{Cn|lngDn zJi^+}5&l<|@Is6P?xu3JD~bUYUwM}T#`W=1U{gv za)V?nVhdS68h0`JORz_S5=XYj_rq|0i8XWjYo?h_bSH$#JK#2?BJ(sd7iX)mbpn}o zrB})YM()Kg9^(ZF;J=~m#QR0$AYQZ6)xZjuYT26?~HKD~Q<@t$Bpw4}Pj?*u6CFQp#o zU&q@6emxx@$$fP5xY%(#b~49kGmOsy>n5HG<;+KmKRREX5G!SWBhk}0 zLN(SS9~NW+oyEFVVFBeNgCzuVEU^jB%!hPWl_6ti1hZwfr$PRF>p4iJ6S}Mj_3!EU zA0$}KSV}p!IdWV_jeB6K)X$Niy0JiFr_Z1 zzsaFPJ$YCLOpgj}mY+KR;t}@@DCE~6t^^T~N9ll4hx9wq)Oq&i3)F@Mg>>CmnK}Zz zgIpBq&I;NDY;l1sD`v|jQfoC5^?Vi<6IwvN&hHDP!~w;hky?^7(Lrs#P5!!52H9d{ z-|G5gi~Wev1JupaC)y6)0604=p$S457?JiPVQe|knW*5*7Uhemwy63gGIi9p%<{W! z$Oucdc?Ch^BC<9UjI#B^|t>T+#l&j~iIsH++F zgT+&>JV~8lp2=@WAtqFyq{OfG(Re!j0>5>C#EK!R7;K?Bu)`=Vsyr(YQ`en z^2sbSc`Vjw5U$h`xAgw`PK`21%B90+8B`veOZQku?Wt8D6W$l$Mw4zNo;|a-J5Bb6 zS4KVAOo&vOmCRX=4HqCh2-NL!Cp^dt&2Zsm7{}Ml+~(5E7T9Fg==cy1VvpHVR)2G% zn{pt0=IFbG_xlAWOvH83hC9BJSfXFT^zDq2e9U<1RU-THi#oi2;3~`UbqP6e#I#li zYK3&qOfCw1S*I`_#*?Q38KJZON774_h6B1#4#|uUNym$fHEPglOABq4m&#Yh_r(A!H^bz^&gf)x7qoD}qOyJW z__Feh1h%=}s1jO%9tqvmXb^y>%}x)(ysxYuvFN@6Uqm1p+fpblH2~q48L4>z(;X4v zxO^C-a1JqJ6&U(U+TTqY1)!(v;rnI#dzTHSXtLecW55wFTG~5%X2vH9jI9_AyrFFW zAd|$kTb%EQ%(wJo1Oa}_Esc6v>iM8~RAVSQl|iei6-@dW>@czkE0#$Jwhu8ljcRbz zSOUm=lXsH(fy4iU#-mq65O^h-v$JLz_;;J|F%NFLA@^Eds2 zY%HRQKvpqG0_dXL^?>H5DOxv^^ChkaPpr?jEc+*_9J~zs0%WoNAQ#v?!v>MouG(*V zzz>d^H2(u>{Bf?DyNj=ao>{*3uIv-$~|aW2jVxSB}n z6St!LrE|zJSrlZ5=)ixV8j56C`b=1U5#_f|6CVEPKhP&{$nE1dz%gG#hTC0R$uqz)HVzS|vqI5K(*L{U4}Z8|ZmY zE6mfb0jNSgLTG$t5-0rwpDMH?pF3_LNJvOvyWoE^edaqFO? zYiMm`OzUPlS#;dl^)iDII0ps7;JM)t^&-LXTe_Hjl%(jG$FGKeXRDeB=qQ_=Q>{$@ zUykd?$LUInu?t0s@M4*I<$!$|9tL?XwFd_jd(iuCblk5~SvX92K{rdpalH~fkli!G z9PD5?(E6;n_=+i4eI9Wc?LWarCe4%f*@AXqt1IvY(m#Omh*Ah$bdKnKxTaJ{Y!Frf zCBRly?KiZ!PO~@atVvO_+gyNeLMFqCETh$t=jyR@kgQ5*`fGK?6mqL?G?1|@Zpxd++ zTKWeVq6i1dMLK>&yxlEAL9d-7OIG8bBIUxXd8A2vbDEL=5;C^DUJ}?D^!WH?%%j*5 zdYhpL$d;r4qf@v<(zW;jAi}3Iv?&8nH5_7gcX5CNtHY}`%=Q-s*Kh{WmMYITO!32C&4x1=2#W^#VtrxP}ZW8A^QZ+WI3-nB91mz@s8L5v=>E-u$N|Y?#URautT2S=M@6 zLz2dhwz+~Q;LLSj;7Ve+|YEbUzo>4EG|XD$ON8Ylt}?E44x(~4s7kVxr~gzh8A-x@bw+jN!MA4 z;HwIcHYi}6F$8EE-=EnH>ptW62fQfUfC5M0*SLvkltIX--z(98}1l6SH4oA3tSt}UjNg*SAMsq&E?O+*Jkho3vpw(#cL zt3*PnuRgFavRSZE3dL{2j~xI!&BJGC5W!4&;OXMMo55DFoD4r|6yJ(iMjivtUAb=V zl;9-f3AC|x!3E+mRa`oR%2Xpf@-S9goipw5YeNTbMjeTabeIj{S0gMs!~4!F_kkDo zVH_iOXjq*lL86fswS9)10RCADS)o6GF&_3UzMz>*KsG6(_T0O#tZ71)u`os0DQq! zbpqmFUO<(dJD>Xm+Y*mgrO~9z->E%>rwZ1RN zZYlBz>0>m8-#1F&|Dmg=EXcQ}TPhBqS{iL3HOSHQF7>y^(OS%?5#1@vvI(P@Ok6RG z?9fqcFPFh;My->Dg`AkohmUQ!=uXIUwmFxL3;R!V@L@+cmv){PxOxy5eRjlidy{Sp zPX>y&D)y;-Nt-b-BhgR$6jCIX@SWOBT+sBoJyh|Oo>-wwj5&Jdc@M%D z;~zUJ6!Hv6v-8Kpg^V1A$hlL+5B&hEWFQ7*J^-<8AIAmYJoWFujtS%i)zt901UC2?pmgbI{cyVy+U<-psCZ|oZ$|(*ocKAqY z0MT~roban#M!^cOrrTUNKsjQ6_4<0@0rp;81xayw9QboZ23?c5wmOm)so{qgYneDO zb1_1lS+2%ojkN2_fR*lKN{cq+IiD6!m&^W=vei#~PX-p=BJN8v7FqSXHJv&L z*XUTk6K9$kH@s{2Qr%1|Gq6&$xdr9u^!oWIh#8c5w<1F_Gf{UqF?+%H3+aCBpxXN} zDCM^K7ke>3C}l!mb{qJbmP(9E!wbkA3Hv-v3X#$vjfW{Av78@xBn@dD#oSkSz7-fp z9V*v2WmPkd!FLsF=f3~nrHQshO3Ni9Ft^kwnsx6{I%UlRNO6zOW;DZ3mPy4&Xi9ib z$+Se9M~qV_Ka!oXi$x?UKxI>XE_^*q<_}Z#{?tU$IM;GIE5y}WM^{7oznB6Hv{wk7?eL4FADB}bxy4@%48 zYSKh;*6lFFfjzA^@YGgG&{QSXgRRY%Yg5QZ!IBxwX2Kp;rpM*gWAEo!WEWf&7@aE` zru~WdGzSBYn(jE7lJk|zD2cl?CkHhX6t7Z|fbPYKcSLKPV!*r|*H&887h8x$T3IvO zl?me|{ubkK;O_&gNn?n?FYg%piZeUS5DTc!juWtlQQz-q_C)=uoGz>MS6_#*`Sh;$ zfJ1UZBrJhhEH%ql$bd$kn&V z|MX(ZQ8&NNkt2ec84 znd-B-@T{I>RenBcFxtag(Zc)kD1*$9yZe>(;20TMovin(MrGw^SmR?M+P%sN2_L#F zE?kA6$`^a|O_ykW2680}t5C9zmOeCFx^bI)c8W`Z-IFN^mt88vV!l+@4H3}Gf#(f8d_o@j(W1r{bpFx>QQ>l=R{`pMKpx zs*$;d#k?#qTPOXFXr_R%GU)@;Y6cJ9)=P<{X^qe*knk!iquW3705R#zR3i!sDhnD` z38BftLz)@MA|uw(@>MHPe&DndGEW0Ts~J zqQ4k4nX+t|VgRd$9KS33wRI2A;b@%e38}+ZPZJ^kj2*ks+tqU$JB}ri*7Bp+makE+ zgm*l_$FMFA*uD!g7;yg;1rm2~nzP^yo!c2i$mUkw>(X5QC&jQk59ZD-ynH`mrj`VqZILF#b-QhZF|u>|VPDyi;O6}k zONs&M%Cw)4or1c2$P6)l-%a8_r*{~aS$a?~IySuwdFz_DS2%K3tKs8%%4@*wxkv}+ zAv$f;=#Ns^l!C-`loc?-E>qiSjAAulHl_)h1LeAxwF1UMhDTD*q^#ux3&ma9Wmd>G zsE>v`95pFe;)bqUOGZ-%t3`YXyR$cGEM(qcf=D&5P})`$NK2-T33ouH4jKnCMGkL| zmXMjRW5Rc1E04&CRX82j zYaf}p+h*pj5brNrj)XB04%}eui|SHj$s!lb2Xm%x8xw!xW2k}jN`=(}w=V#$1{g$_ zS^pz8ZhM6R_cv=;HMDzx(Y1$qQio^i7c^j9b}0CC_3=0o7*;J%Bi?*k7y%r*v*p)x8Wm@c5lTQ^W4ypQ zvIl%7A{##}^^`@)IQuYpk#wBRZCeybet6jK#k~Yz)KA;1g&dj|6mm`Ml}JqVN!G68 z|B5)3aJ#>MVlEJ{-kW{qsJwN_wl#v!CQ3^62@-6@yo(KjJGY469<9w{*uy$r00EPH zCE_-KZE?L%M8%aP{iz6$M(1^z?WTtKSaOG&Q3ux!u}`p^o#bqYosGyB9g=w=izZva ze7R3iSDdxtCf-r*)5G7)?|$=vR}kFBZ3pLb-S*2FZ{u?VZjIeYnl}A68mx^;8?Hw3Vj<=hI3;zX z8T@d;6$92cxUSbL=cpfu|F;j8$n3>i%$h|v<@+Il?|c(NfoCSVk&n#XZB8R`))K5q z1~xVjLC^Hgwi4xVlG}t#KaOx0 z^c_bv+<0V=Y44g*-bieSCRKs^6 zSaH${z9LKOk6=a&@Z3+4b>HhmSIQs1Rvk$2T)%>j z0GS()hpZ;@N`Y`ufZnXCvwiMZdI(~=gT2lWW@}ARqL^@xUyJMIWsgL|4bC>^(qZB^ zK`OHd-W8@ie)M&tXr}B$`|<@d7CB1^mo9goP+78crAXVvxEwca7T1CsX%b`)K^i}+ z<8xDJe}=MLdu^vDSg6XFs(xejDYv#}KjXP*H2p};D2JMWJl~twhRLv-FPhvSKYw3n zyH=lLA{V9s#4m@pR0OleOaSt(5Q}w@jQ}u>pb)eXm zh`xulPK;|uvn25D%RCdc4U~I(!ivnvolwhBruJ4eME`rtJ#j z--b8IJp2{$&xW_!EhJ!O5yYQX9`%PDNH1@KTix=$jf+Ym&MnBR=#ci!VdEG20UpSV zsx#PZ*Bk>s>^Y7zf{#WG=p`<6JGB2W3H;q1l74``aQ<;>8rYA4i5|vxP3JjrZ zlx=^NtrLr;`ipqpif~5!vop0#n)q&SQNL&hpH{e*y) z)MrN)vZ3JiD2mmt3@~f2Gp8WPY=4{PLmG=WF(ps5-kYzZ28eENHes)vW2edhk11Vl zxYx0RJP$N%ZV_$+S~OP?K;kJ(-Y*zjg(Jj`Wcy{fD0MC7TET0);R#^3Un*%FpH zdpldgyJx0yZ-H;JFSUh?ww7YICZ0)TK!fhMH0R%Zq+*{ehq0V@Izy2(y>_ z^mlj5ob8XTBJ8RT6ga)p@^`_jUOtM}$Uz@Zc-7Tv=WJfo;q7HfcM{L?La*{kn5*N!IgiG_-;%5n5)rziRYW#eN?2}-8zAv$*p7qEHfJCsFY}^& zuC!J*0$_PL)c7SAFB|Bt!*Q}7IdLb(5jB(ToAq%W zOF)VacpAV%ZvBs>?~bSPfB!%BD#upBu~)Jp6plU1u}8_uNEAu3Z+qw1JG;!xdM9Md z&WNItJwvv0xXw2!M&$2+Egp(+FUgpm5s;ywR5WJ>*_B;AV zF{)JbS*`3u^F!C(P24F4*a_aa@!t1WwjMhz-1?K79M|Q&>6rz4`pW6v+Y|2arNpih zHb*cet+PD1!mL3}IF)&UAk6=X3m*TB-<0*&-{+ z7-nI*Wi+e&2N~XL4+6xr0fI^-ZF}2r64a}z>o@A)n4FSHf>eBgjxoJ zEkvkt@W6ASWa;Ol4rU~2(Nu7dl{9(M{PZfrnCG#R=MGdYM#}ngeJSY;>hZzr73Lij-VCb;YN`HJnUlY3gCi>M?YX&PawSZUiRml30ZQ!>WB3ks&%KbE zPWnJ4*pjnwdD=*#=R+nyOMDi&e8n#s7bz%SRUF+*f@0*BHRm3Bp5O42LcRM1l@#4U z>O{Z9E?OCcZMpU*r&WycT6V6`Y{S{QeSY{z^V)dz$#+k&AN`WQUOR(%)N z>t^FLu3saZ6|X>=K7gcs=1L{175mZSylSYw5lIWcT_1F z4%@}|_*(dr1Cw^Yn@Vhc4-GH+!gE<_+K3iwuFBxDy+HPv|G<=Mz zzf)~xQ%3$nkoF4pd^oEbOYDq;!%^v!9WD%<3MQz$qaz@y_j&&Al z@_z`afOh0QY$;->=!?Nx_TcTd%EGTk?eA-8NNbFq5CIf?Nhy`{ctlCoWV7fN-7@H$X!%~w^;&@*~~KTLvo-7QFGxbLSJ{QYoEY~_yi>JK*)Q7K`X=7Ne;&E#~Pt*D7E zIT^Xo7j(Hk^JB+QfpZOP(BuYr=*QKaz@|=RvhD%beU^tLM`lmKHIdaVcZcs?Jwxs$ z$muJ~=?8#@hhqKsAEJ?XMlilgaY8iXv=rQdO#(n-m5{jFFLV^ghZD3|aua(>BmE+5 zZ5)0eIi2~zxPLqCyzJ!_1(*>xEH?7#|8}wSvLYGL`f4Sk*;yKU|7oxzqd>Mw*=J{@ zAuoL0A@87A$jk0y{ck85J=gjB3tuLEqE4Z^o{CX_%_l|@SUa%xgEn_SZPtH5Hh2T< zoke=&-qb6V9~J?u)TX@o$oRwX&fYMN(Ev*X)fL_TNM|O@wDm0kT1>7nm*TF*v4$w? z(|~H%#t{=+9+p2&;1zyRU?;pVsA@S3 zUg6OrbzD z+%ZkUOVbs2thEe#nlni$f0_(FdW60&&BOTJ&c_Z+?tyB`uOwS^h7XC~q_dgRx;NyH z>Wl$Y%o>e=3(bIM0;D}m=S>OeSvM= zKZI(H8mVirX?r|R`a_Lg`YX#|z1p;UblL~7+5mtbRk8J!S=e~`j+;YYa@B^D=p=^r$fZ)g%9gB*8_{$O-ZmbCV4lT1goFLu`K?T5iR~HgU}l z5M9z^+nJ9l%$5e_F7Kh<$FPPaecu!z&H4=DizIROD)aTwVpRbMv2LcWSJ&`Qovs4o&mAU*OScD+(p;F?m_xj+NxzuBB8jn?qM;8R4Leu(yP6H)GCy#=A!-$ zzNjsu&DkqZUq?&ExIbn$7E#aDvD-nwoL4;au|iKc7RLsZdk3@7Q!24qpt=G=gV_z~ zU;JVX+fSdD8+!#?cKV6GHbH-3?>DMWh)t(;))#F_0j(dr(M&iI@C(?@ z?PeiSt*S+^(z6Ws?s5M8<3SrqfGGExvOkPB5>rE}9QF}BDMpB^v`H>}jt)GM$QPzX zz4lz3%soH0HLBZ~K-2Q9J?pw=Vs2*LlFRT_xz@4M+KUfuWJDFzvCYLaoUiAx z3$~l1Qb^>%L+FeI5Ru94=+_Mfa;9`Q?{r(7~< zno8FdTR7cXQloW>4SLPM`Q{c?=0~)Gpoct)3eL4V_}GwfX%~YR(PFaoZtIJVzIBJU z#nWy=P1&x?=tt@#=yXJsQm*sW2Yk0Efio`CBufI{50CQ0T zI&JOUV_Ja?Dq)5JOm#UPTF=SP81HfyaYq4XK|h*$7>5oItv{SVEq?zHo~K3_($&qfyLXwA zj)JUE<7Oo4e&UV_N-UeORzg?dh$t0BXu}Mll3n-M7{V;YCzAbuj$5 z2z9jY59}gKjsA3Y#8dl2{S%PX!#>G;v|zSN;@Coyqf8evHix)n&?voF0I?YD41e5h zqT(-{(`+V1T{X5})!1xHYRGa(x@CH8t2yLSzC~g)PZA%C?yJ|+kMtIM;wsvyNZ6LrrUt-g$;vUh8LM9q_N>Twk;@9~?r0Il2?bbYJ;nxI;u+ z)_OZHyDCqd%)6e|o9i5iorQNt^9L)nWx*HWDH1#MHpp9mmB!x@3QtYlKVGEK zEdz9yO9YlM%%eButJr^c2x^PA#~*wfp&{Ne<}Li)aHnR&u39qIuJ3u#>~jB+{6qp( zJF1dcao4P^ZfW#1X5XPAC;@a*=^O`0DuUIId<(7?^aZO!8&JroKo!uGPuM8@JSChL zua^B4Pq|!rXtc1ZcmS;)ggkmZZfLms*I~X2`fJJ?+EKkZ6>gNT;)%!sC;m-Lfo9n& z*evUI@lA_`hpB;v))YhhSGE&`pNs^yg$s_U-DcWyJ+-2{gxOA@OE2HEv$D2MV(J}D zn|S&#qclzf8@);@_4KNAu{5PYm70rgP^ZZ@AQJ@h#P2*oA3S`^zJMNfdChG%=p+wm zJhB(SxyWyLZVw0|w??k61CG2CC_3eG1Y<_OLPH*vg@+2I&IebyMU>wO<8k7qcqr;d zVXApV5IX*A-Pm4pdN6wWqi>KojStnsV+oHd1rEMWp)X^4AqO_4SW+LIrxo1b8({%v(Xr-XD9|B;fSr_F`%LDHkJI4 ze{Agcz;-O*hs)pkhyI156I~Ki{iCT2~XlMSEyAP7Xbs;Tfbw8DHS zHjK>e%^+rbX)^lewYx9th3KfxMHtfah4?ZiHRy6s2aK1V4ld!?H^3;vXp6Sn?LMOi zX(au?n^669f2Q0dB%=gnI%=o#_fe{=E^`R|?cO}I%+&+)`|f?eIV1YiXp#%%JOsCU zF@1Vp54~)hmV(9$kmZC~JUn*l7b<%mG=Cch?8dP&&PS=Sjw+c!Wo&8?zGD-kNL04i zlm64S1vWrv5RAh74~{W}=YgqI8M;bT3-|^wg2c3tCMg$EwK7022;;Fg&~G+~bUgVO zt!Fpsu`JwZ(r&*tB%9sbVE1SVM5UvT0(P!ZF6KC|V_nqeu zw*@_EVz!`anE|f2;9{WiA=~VjHo@>Pzb~g$%}M^f?PW(}ZfT6|XQi?Hy7ojz8`Ic2 zL1WR}Mrp*6?b}R!m=ndJ;@D{OAg&>NAtq_kzef7=K2xw&;?<0yq+a4;wN1=>f_40s zl03;KY~An=L6#u(zv5OSy%i^>;>ZE*%d+PvX>K1{N5=7ttLTf>b~|yzrjgO~&Xg1@ ze8LMxCY;WX`o6bb%8;}J4d<7Sr9^}GWJv}+&MTGYk_%Ccv^jVamyh>h7r@-cX^GdDpac%v+e5m_kiJKPDJH&IEMoNFvP+r=jx z8A78XUz}l6{e0nl*HmO{SR7I%6LrGs-uVg7p+?A9W4G(WHNaLf9dDuryB7BXnw&x~ z$M*Yt-`ybgbon2R<~-Lsg_P~ci0HYO@4UuBww2(*9iw4hMJ0I77BY}ToEi0Ax_A<7 zgC0D4V?s;$DWDB{PprJC2xQ?V_W5Hzw>lEkdGoPIY#!(T#oJP5!y|{gJE(>8)~De1 z%hO4rw1C!_wh&X~lW|?}2&x`^>jPEA-bdPP9Tfh6s{ERD3Y;3614M)+4hDyT09J4j zFrTr^6p8_keWn{csI^9R>fYV>mrb#oO9SfHH`=TtpB4HTikHGa22BgO%n-{TS{g41 z?;9Ij6HM&4)-k)e*B8n7Q`165OatDxSsCKvYqoE~GXED8|2UR5A|0MlP<&yZR66KI zoQ#_+l+?Nf7(8RfKL4X}rkUI7kIXJyDwRhVx2ohZ4KvREod)C2StXBRF0lGL7cN>! zglO4QTwXZE@E)P&oS$(Qgm?m~{(Zc7!PMd5bGu*0XNCIk4d86I#-e@_tUr!#gBC^V ze_XNmxowbHDCfHhm}A}#E*|SmY8J%2cU4O*GM$ie`t?j$$e-W^YN8*Ae63cI(FQek+ zCegTSB9S=DO|$$4#SRTPO+C*AiUFT2awunTa7E^bC~|6#$|Stztj0uzP^>e$eBwsC zOjI(@fMw)5)rV?g{9kd6lNfu5$@r1hid|&c)O8n{Ny6V#qjqx@oio#Z$yJwR$a_Z5 z*#xYg^cM*u2DBSpJhn+NkC`&l&8M^otWPu-{o*O+KQt&2haC}7wn~W_u`j4IPQ2u` zzZUE3t(P@zDKITJ1TClYs2W6!-hxQ${Kw zLuVoxiO+ve6;zmE?$8&Y`l3ZNfxKRQdqxl%7~l61&P9LO>UoNWe(EvX8$y@f3ErUK zp=Ib8cJ0GgBtH8)>$rYslOVmaRZ0j4ptva6yN^d!jq-h%6?vWEuTF~)@~pO&-0{y= z0qQWIM(BSAIW`HvCo>*@s{93;*#YH2k+8_|!YMR{p0jDjx_bMc26-MpEy7TDHhGC5 zm;ARk_Rg9CXztB8Lfx@bq@HhEu(iG7IW(PQdOpu*yts{3sg9=Cn^2m6XSyU3Cra9m z9;{?KNKp}G($xlHXxg&G8ja=F&{NI!JnCO@FpJbj`K{2DL$gTk`40&s=-4-@G&YU^ zXT4!-Bh84|5^8vjrH&2ojX$zAW=Vc-0d6Y1G{5!v8f5 z7sskGeqqt%MzsC+Di|Hl^f(p0e=+tgkN>5@Rz5{OCA}Mg9WBKI8}pB;2vLbBDSvUv zldK-}Cmgi? z+U>wmd;Vn!%uDVspWIRknwS}ztUNAS=yyl{SF7WvvKStDA(PaY$3NcuV36$CPe=H} zS$ow-I}|H=u zGQfsZz}No}%$co)$|3WWJy-j*1Ix$Pg)gw=d&xa)Q>wW~^lXhx)Ege&O-?&U@9y)e z{;j_s3Ah-QF+-BBRX_^A*1yw&u}nsGJ?Lbd-io^5&3<)key`M9qkq>i=^fdqwi4Bj zi$Zl)J;ZuHCWR=9cK}<5!~8KTV2e^f+MeV^#wSSjU0^i-Y9`u^odTTJ!xUfZ@2{hb zS5T8PV;gSAKe+9?_=y#GK#`+m-==|6nFTR{xefHS3aszez0H<0OUK0lC$JC2aJtaAkGY3)ndF*!qS2i=$-P$Ptfs z4T5T%573s(u~Z_9x=d^j6c}Xifz_qU0K|?9`&#E_6|Xt2+<1@6QBRxegSe)N5H8|q z)k!U$KwBYVPxq@{M`x{1bGzd^@lQ$|VmzoM55+XL{kB=vf$59RwBzOwXK_SW=jq#Z zT*7W7y~q^lC@#~qN|GFN_|7V}l$s>#^Gt;Zy~Leu-a^5r`6xW9)e9Cqf3z@Vyoq{~ z%Bp;sJG4XV<>TmqBecu-Lw^`8m{cvO@G|Xs3T)+;Fa*g;#B_%YOX55I2zidLg3DK} z{_oz3W;exeC6~^s` zt;csS_%(x)sW`|&xhbM|!P`&i4(M5z*G3Jg(?Fj-M#QwL2xQsINRoVC8_f@i2pK?` zaj}rArL7?Twu%tY@re^SbW~mse9tkXxq!sVv+LUU0Oew52nnwCj7i9V$61tnIr(O^ z*t=A3{=He-W};W_jCPR5S<7XiOf#fp9>S39sm^Atzba4HC3t+r*Fp!g$|*lC+`_CE z;~Fm`j~6@hQr(7FlUMkxxWnvWV>W8!MIZk76h38vxP8|A&$E1E1Ge&^-ry{GpnH!s zOvXL=G*e`&NpiVWH^AI?!?UBzsts99{uey;KGFo#Znqg#;YnQvk$d-4xN^0~3GAqO zDHZ*!?6wvMH7V=(|Ig?4fVcq>EFLbQ>3~jNRD&EO6i1xtPp)ud zS>X*OZZKK#6f4LzpUmuu)8v5M@O#(vxKV$hmiIAA*nw$9$96~@xz&AFBP(fByO_zW zo?Nqh&O}rYe!XVUe`rSO7_t$|#bLADg_cuT^6KXAXLrc^hMaZaNuCH(IyQF5(j4CX zn6$*(y>DX$L+3945a2E0`vh-`p4*cIDz-(wwgMIRX?(|zA<+l(=SJE2zEI0iNW45J zL(Vdr=48V|ZetO5^_SZE-cBJYrQnx^`*J{CCz!KdJd`YquVx7G6w4QlnHE5JdYazj{hq23k_U*Zo5zgx>?Lng!G(zFGvcDHwP5&k zF6~>WRpu7cAPq0lOsBl^oD$q9bL!p)*ytRvW8C)7Byh)G8j#uIoI2+qrxQ&X=X~x` z6x`J#{G7w2I_M<z&jQW-h`TjBVuf(Gq@iBVQrFt!5vta!U~H^mn_q zekRi8BzX|;70hNUzHriEpmO6~F$3Dsm@d;+d`!JCs_~H7S>V}O>R2_8wgIk^Y(--H z!GYuyWT9q*j3#8cMCe9*-<{v>@k&a;UwJ3=1xX$v)2E3{htcQi;`6+)akAmIv@Fl3 zVF0GY)%#sMPvF;|=@woQ>0x2=Ylp|ii>$o4&TisuZ6JTq_<&f9sZCO=ItatylVR~jERIQVs~kJv=`_D=ODcZl0n=HUNNt=<&oelWa?vs-EGF;Y~9s*tdl zfSLdl`!*sD#O{C$SMVpY4;B2*ng%ACW0!m$jO4wgya)Js*T1UFitOCoplx&~{ARE* zXgk~;o+c`PO$BP;!R%1DX0C%y%%*-}9}VW1MG!eFl=l7X?J$4;S?fA@l2^k9=*FU| z4)Ls^UIq7q=MRv(uLkrp{36#HNCRPuGy1kW>VG+(qTn)Y$6@ZWCc~Jq?t@i){q_F% zQVo~Z3zA`|++IFTg9*Z{bbi6;4XcAr%)A^byn7|RO`hWc20fZK+S7(!X`gIoj*dd0 zfeNzH)o^gWYMNGLG%{Gr)`V`*j)O06R@<=9heT2Kv^{r+71!<-u?wJk^ZVf|kMear@Ay$*6^Po+C+UyMm<$4`RRe%jT0M5H2=16xrLJ(q zD_dJIqppG06`cFeB)jOjN3wJ`dHa24PH`%pIITybWE0Cvjg*6GeBncD~DQ^R234a9I{PRL%F!#si2vXNI&+B z`aV@sT$< z3pM9ro~aspBzFrx?7ObEG*QcVoLCT!II_MHuk?w+S3h8Yl1|uwt0_7DyN%nvvbDAp zrxthD`PE1$v09q>-i!bFcf;R?9bk8CWHW;_Ps68jkQ#2*$r_xyX(VrK$vrPM1*REy zmyAUT9vXtiv&X)zhGHR}-ktLW%t33XVRa)Y{>wVmQM)EQQ*kNqtU;XU2xd3hcY0jE zf3Ct&F-H9=7`XlrFMi-1SWacsj-IR-ocW)_aVLg}XtxzXCG3e}Mf8J!S91_02vu_i ztxGZztS?JW5B1QLcjR3`_Y?pA59+HRQ`)^XFFy~S#X{-yscjD!2~YtTyY-$iTrpsb z^=nG_ibg*$!;!Mj`?}pi$H!c{q|DBq%qBKwp=GmYNv^tTud4K$g-Qr5KFuc_%Tvg# z{veu4c$6bEPyn-D)x~*9Rz!vv;fR~>OU$(^J-4chkx+5_#u3nol6Y%%>zt;G@X6xk zt2G{0_TD~W93MY3EOws(NpfCruaUH!Tu`~H^>&$x{Tuf3eO>ZcaVYsGc_!X*j+k^Jw==Bf!MxW?1u-(ouYvJe#hmNJJ!V5;QM)wmz< zkyT({qi2tWJ~B~s@GLVxWJ5{B9j1s~2xdb>ppNF%a1HFsXKrkdy0$RgvwY3-$wUsM zyukowH0~CvFHeeFXVc@i4oE`MenC`8K@C77^4OIGY5lWq!sspy)fmwnu{XB1VyOiA zcpaG@7)LyRaO};k27i6Gf~}5|x!JIPpL{F^jHn2tvPxw*Nmtt4Ts6hH@I)c?V5HrR zo9OrA4KZOw2n8kdE?`-pxhy`WkV1Lb^1MdZ*p6&>lwpFB;>N9)k1{n6?2kt^1YOqjgpG`B{^=ER{+;?`mKdi} z;W+`d+ajw|!<|nZU*2F@Q)Kw`U$24!bSvXbqUNaxHT?@=5B2*Bl-(Q}e0KuFb5bji zdQ`-z%i^}*lq|IdDH*~9J6=GFFspMIHfC?4RDR!XuQDd)V4@CeDe9i}pu*o6?(-mG zH!A652_5m%K_Cgi&adMR+f~3Gr1|!^UhhAsJ#~^VhRya>=|7Kp^5fbwQe6wz+@zi0 zXE>MC8*D|~*cGF@mz5w{t0(EIL6Gds>$DlTnpsO7nFu>4G^}(yFxYhpsZKxO&`(D3 z;~V{}%yN*6xmi5t9fT@=Qs=ScGRmDV-8uZP+G|_+;`g4KyO%w(_;_PeKHa-+spxyx zd*SY(k9RbS6^sHxZq+!*`1r?@3`k04@3R=VqPt9Ob^P&f-JB0$^_}SLz0Y#BaSVb9 zR98n&?{@vgKbcxxhto}pe&^=ns-Zm{TD1=;=$jw z(((^sOspvcgx`37ox>JT;fxW?GHp&?6iDLj;G(rycG6W)hL6mi4Vg_Z1)YIZed4AN z5~OW&ChAC98-CShj3R1wz@(ph?sH2j^K2AlquEFzOiw1Mb7V(+xOrLB$0R2lNxox0 zHSd(dldeBroRx~?KUgU(Q}62;N`2_Bh`HQnL}^&+HkGy&N0R(E4xW3&E;)-Rsj_K4UJoeb7DHG#9)bkzwz01;{ zd=gl_0(Z>$kq>|9+cWev!u}Dv=xB(gphAV+3Dw;=^Z#T(^x$C~z z`D>K~oOqPUr;ZG6_t-KRvjhxq*lX0)8eee+Lmr|%%XkVbyJ!FLLuP-QIuJ6_Ekx*o zSYqTt4+K-_`}dz_cppFp&K=F=%vx?{qA@Etiq{wkb{dt+;d zAXH`{*8pGKv0~`ocz+Ll**LL|eHcwc+1rb>r3uA7e@Lj!b&@p=L^s&P*30XY^jsSAzZjG#XUc5?AuP) zdsMVkztevx|D%5`;@~%H{cFjNJ>!E-9el9_z04k6c`-Q~>#(pb?>()+8A#{sIWj1Z1tds zVs51WtpjsC?+5$Vq26EY7!p!xykEI7;hrcT# zUE(kLzCwab+PB79NZwRk70x{t5%GG8!L8-Q&`%zk#enkZ zbD($kZKWGKn7w{vG8$9e4OE5S${hF>l&pnC_Uwq#8VWk)sa=b>q6_2@M|5nN@%M|d zQGFrX=N-%E#%vm$_v%N8s`KXEFxn2U{lse;7ym4yzrKS;UpWv``yD8n_FTGNWSN{x zS6%Q#BWo2*6emEy1PuwGQet{s}OZtlQrfu$&r zEHO`Xefa0Rk}l>GB)EK)<@gYQ2wJ~*(7EoZB4d*kU9^7QS|jf+AH|#-)15bt zyvH`-JwKPE)%8$*E<>PbntsCZ!|&VW2v^W)I5vyh5lJsmb9}j1+8PO&&e!a@!JjpX z+-tM>6*`!KfZx^C6D1`l2-g1PKRnmMwNn>%=;X$Xh)kO<;!1CkIWfaN88eL}3&ewN ziCC&1upJ|%t5{CrMN z>Eo%fh(n(}0fs>6-N60vxu z01vWF*hH&e1$@h`eo;(yO)2&BEB)WJ{B1wwWo6B*HIL;chTE*c`&N2$3NFet9s4Qd^x2^ z?>d=O9=GR;<2sJia*f25uB41vtW+_6JUaTRRS%76ms?+a_9a?9Ql+YxQ3rZX)7jyX zYwHRxl}$PRN^x^<^qLNGtGH#WC>8ETo7f1IeAAG5r#0iBrjXbBRo#C z8f2Q%A2**-r29?QJ#%%x$UB`#1Ye*#@}sbj z{?l4`QdJ^$HE!~YUi!+?e(x&cSJ3@+z!SI;Yuh?r@U747dj3N^)=%A^o|(Tz^n9@f z#pI3}Qb}auDL^?=@-rS@f~vPBAK=7(MCjOzew12+ADXk*F=ln3JRtnyo*x?G)HrMO(jpg9Tise_x65ux zSA%VtX5{!6)oDq$3Drbo zEQ|qUIi>rkk@<{1 zcwftFCT&2wDRIxt@eu=;5X9O@O3v)cH9>#Xo=r8?uVB+J-In5l!lGP@%V$cmMFwt3 z+$HlgPqm4X#S9KU@}hCir_6T~($RuyRogqvgpQ{HcljuSby*^kbaF!$qJ(IM<(Muz zE*fc?NJY3#+t|`I`{$ij^LZrmOhn{o{g+xuN*l?zc3rA!NmY!=e3MF1_VysuAi0*w zY`i5-eI6a<9~9S_HQT_x;z-KZ6>T6o%6C!w4%IC)9Nm>~Qlx5<@7CTVElj!=uy+Pe zlSVO&ACkzWQixvZ3H?u=ORbsi)H#^qd1vR~1>q|38jm!m3%e+`2N4$#S}PF@Dk8F1 z#RP_s`p2@N6?g9lus4gWGfIl_qc0eJh!AX4`uKV6OQO0F*~rkztU{uWko8j<)Ai}= zJedJ{M3J|jR-51WaM1((rejFvqYtEkA?iD~f1`6HCZF*5fTbeZPuLeiJ`c;@s|QiF zgE~L{*9R^b%1VC%?g=&ukYyJy=+CIx@mllqKLjOlYg8{iH&7_sYrypKlG~^2g?Z)9 zxlDdFiVnXSt!~TsS6O}Szic1UE%bnOCXEL$sh^;a9-~kH@*m#DnFJ08H5zGc6TI3Q z^8;K@Z4-aEq5QI`C+|q+IZ~!uOx5@rxpR-E&PAOE1ji z(k$?o#~%uYX5S=IpTAkaENb9tR*cA^f{=oU=+GGtI})Ct3D&-3v6T6FmIYnexrPD8_XT;9p^rD&JkE5hW)Xz5&vs2e3t~_!bMLqMaoA znMSOdo*ssBQ2B*{c?>UCnsCWI+RpEt-o?yMKmm#|Ol$Qg)?3JC4{R3Hxwqj*xP#8b ze5;g(ni+TnF7>!-Uz+*FIOKL}i&tgQB>f09IOJPc$;@GXBiZGoQ!X#lKu#Q!;;)_S z^i^jGs4B%K5+&ZS&ZP|LBNO!t*SEj*UdW=Mg4j5GnwVNJm5s7Do1i34N#}G0K4RUF z)r9xC#N{7E(ZVp;e1Vi+jxyeifpI;h{_^W^sVFK^UpMPZD)zGiE0#PDFFo;FO=Pd? zEaA94pQ}6I*%7bNbErpFU<&}VO_scK+GqL#aY`Qmk{6`Fc`mv{d}!wLWNHMRK;&&G zd#bE_jVA{ZW10kp?nZ4WVmcxWK*JX`bX-lh)(Kl(e+uqfjoK}WM6(4UQL-BZXt&at z`gk(1r5}t|V9g!${<2=WzY+@)uFgjMQkwPq|3eiRPU+cy&Z>yxh@NLH@^ObVS*tkE z_;f*Yc^4uMf@f|3t?m$q**Ws8&UHyLM+JLqqRMO7@}MvBVeu<0(){5;2yHV>z5Y6x zd8!H<2_BrMfJa~Eyt=ysC|EKb4LvP*h!lAX53R~Lj|f&R!R3b<83+?ba^CyhrB*pv zA4!rB@P~K?!PP)J_jlOLN0Wa!$=)f=1#S(O`BAB@h1MIiq^h)ITl;@gr+t*z<9Qye zMW>EemfvA1U>Cj&Pnius-|!7#BicHN)_yA<@+dm%!toD;@Lw@vu%{~ zZZPz1wLVUKA)z+R^X#Yk5c#u(v#P7A1_H7KE9*sd8I6OMA{ouJ5lI$BC}Mc`EdhIe z-}AG;u|tu`5TnxGsXogusgU@$2(q}`oZ(jZU_2m{~L*2z`S!CL5*Di{2&x)E`zTw9Xpj<4&(dZOegxVYMa z=7qOsZA~z1vCHcDNR0Cjv^9jgy5Que#1f7+Rxf(Gu{Rlv3O}=pC+j9VsrPG+X%4C4 z6aQ_{{SvMl&!Sx)uUPoWgy)Tp)E@mK_okG^tUn{1#Xji>;T z6R!-7da3jSl5hy7=`fJ3PX$#6j5>W3%O|d zs3;?WI~OS>xB}|^(Cj+!jo8aR1*UjWIq?cX%1pV?wNROrc65(1D@EQcdf4euU-BR| z)N^IN&kME6=249!x`3RU1Is%ZcFTJmw4ZK5(Ej3G?A~;?7G{F*=z+V*fgCW0CS275 zNr+j*5E{bN(7zXfNmN*G_v4 zx6!GvAZ@%-icf)-puMN$5kS9bmd=wg)A2-*K4QXo3fmE0$AYZ2aFpPftoq=md3g}! z$8Z~?a^nx7FO3i-ktlVzg|5O1EjYywZgSuYdoUm>y;Qo)-6s1?l+Wb{1k<>dXRfuDOU5=3<-C!}?lxji=Yb z_2-v&wC_v%q1m{MiB!(CV;^BNrbw!N<864BkALvcju75|k-2FQjC9VxZf=BjBc>mA zL^siNAJpUnlV!^?_|WMKFyBEVNJas~-4R)ji}F_hHWIgc77mG10+lODK_H<*+`Y}4 z``!`?!Zmw*&pI~7egS8~P-BN!rz5zH!jjIur<}oll%Y&d=J=6tE195ZhM>+E1!TRJ0`$GLk(iAFvzYZ96)K+Wt zd?_fP?RBxA(tE4%!RZCPPtog%Mp+VwM7uAcb!QFuec=s$)Odo^3!-U%MUJbR^ zpF;q97^@a361BqpN^JqMLTey_iZ}-)Cij@gQ7R9k;@{NX@>WJC$QfL)5F{Gw#7nDT z9}qpRFa;CCzf7^9Vqj4%VeDGz#i#)E!kiCa@`XBOYLYr$y}40L^mutit_P^Tod2h~ ztd@kmxEXO4cNarYsZbsM)(62QOb_bdflmys)mUdBp$yQ8b^}n^N6mJP^GbsmqPPtT z0(RXWjo+k_(8a{<-uB;BF|D~|@QrGTS99u0)6u+aLYIj(IhPb=b>sJ%Nu!ox@1K7- zyfeaFI6XR-jJ4HA zB73qACwC$1ix2=eS?c>klE|&zo+ioZA0YGYx9PCx0EBnhHqA>_M4R2cd}S;9rVg5n zxFK!LycLVorx;Hv+!0-M44}+LW0r~1H~fgF16hdtTDjB^5`x7R^Rnwyxp2_$7rIhD zB-7qGvF@1bhpg#KX|Sh- z|JT{A{<3pR`Qoj!-y8dfP758V-6rc1kkc^F5t2bcqa2fPg6QaE%N<{23jRFwi3zM? zZBU_q4HZ>o7F<^3&((+yjxEBqgN`Y;H^7WcM1l7{#iZ%NedWxcmNV;flonMwC@A`w zMD+0gqv*T?q5l6ke&*R{Q{>FdjLalwugIR?LYd*)5Hjy$&+2SKj?7S2MW{2gx~wiy z!r4OZtUK=R`}_RSNuSd2yNou&@6%|B<&arZ5vnOH{?tJ|eLJRtK+4ji<0kAhZNY|g z=?T>4QHxgIu;$*DLZvmY1d81EYnG=@Z*Y=t;IL(TK?sQ^AbjV`FU*02|7$%!&%MgC zU>6MfN}4)TKl`9{rzaMWo+CI#PEnqMC-8Ya_T#xWp&!(SMe1VjO@Z;*jJBk*fQ1My z$iMCZXl<) zze!YU&i^5Os>AngfoYxL?$D0?DP3SC_<-`8Pg5APE_%W#gds`xk6bMfBgKXH~%L1w&`CZx% zz}>qszmlixJ#yQ%B-&l&xzHm-mdNe9#xX)fz(vlFfJqI`5|EzH5feJ10-uZ00gi7! zIkOg3W@!#DJy~eHDe2Sc2%l5AO9?{H5%d+>8%9B*WTK!Lx>PUqaZKwYGP^81yV~d~ z&FJOuaTV`!WY9AVI8byU_diso1&(l$TJ@m^h6aaI3FkN6_0FXtRqV#<5}KqL|L9FV z-FFe9EK?oswC-yV{1sgGf#CO#$WjNEHP4Z7?8S-oq>~$l<{AQM<@2}zZ)Da|2dCZD z`t|9|7+Oq?=x-oJ60xzhFoI@^wBkIpWi>t*FmVI|;WK-5V7<2MTl^v_t9QluDxlj{ zJhbc9c5zuh@AP^Riny$nW>ybd+hN!!OgOKM3I?o}Hu=?5r6nKB6y?{WUu>h&TcW6% z(jV}#?=Q_RgRFcu+k3MOz-Im8j$0-&^4i;gQ_OMiO`oLME*?qHit%Lm1hjK&|B57k z8U_o)@R1Gu^6M+;>12Z(s=~MPAfgyV4ciyxP;H0AKsr^^GSjV3`f@G9d>vFT;!mas zTl6IsP�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 literal 0 HcmV?d00001 diff --git a/Week_01/id_118/LinkedList_leetcode25.java b/Week_01/id_118/LinkedList_leetcode25.java new file mode 100644 index 00000000..55f14573 --- /dev/null +++ b/Week_01/id_118/LinkedList_leetcode25.java @@ -0,0 +1,79 @@ +/** + * https://leetcode-cn.com/problems/reverse-nodes-in-k-group/ + * + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode reverseKGroup(ListNode head, int k) { + + // 1. 边界值处理:空指针、一个节点、k小于等于1 + if(head==null || head.next==null || k<=1){ + return head; + } + + // 2. 加哨兵节点 + ListNode guard = new ListNode(0); + guard.next = head; + + // 3. 左侧已翻转完链表的尾节点,并将其指向 null,避免产生环 + ListNode left = guard; + left.next = null; + + // 4. head 不为 null,则持续翻转 + while(head!=null){ + + // 判断剩下的部分是否还有 k 个节点能翻转 + if(!hasEnoughNode(head,k)){ + break; + } + + // 把头结点提拉出来,作为翻转部分的第一个节点 + ListNode new_tail = head;// 新翻转链表的尾节点 + ListNode new_head = head;// 新翻转链表的头结点 + head = head.next; + new_tail.next = null;// 这是为了避免误操作搞出环来 + + // 然后再找k-1个节点出来,插到链表头 + int count = k-1; + while(count!=0){ + ListNode tmp = head; + head = head.next; + tmp.next = new_head; + new_head = tmp; + count--; + } + + // 左边的链表,和新翻转的链表串起来 + left.next = new_head; + + // 移动尾巴 + left = new_tail; + } + + // 5.最后再把没反转的部分给链上 + left.next = head; + + // 6. 返回 + return guard.next; + } + + + // 判断后面是否还有足够的节点可以反转。 + boolean hasEnoughNode(ListNode head,int k){ + ListNode tmp = head; + while(k!=0){ + if(tmp == null){ + return false; + } + tmp=tmp.next; + k--; + } + return true; + } + +} From 46f6e77615c9dcfe393b3db72900c41be58ab310 Mon Sep 17 00:00:00 2001 From: hey Date: Wed, 17 Apr 2019 09:20:19 +0800 Subject: [PATCH 036/780] 01_83_remove-duplicates-from-sorted-list --- Week_01/id_6/LeetCode_83_6.java | 40 +++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Week_01/id_6/LeetCode_83_6.java diff --git a/Week_01/id_6/LeetCode_83_6.java b/Week_01/id_6/LeetCode_83_6.java new file mode 100644 index 00000000..afbf0bf6 --- /dev/null +++ b/Week_01/id_6/LeetCode_83_6.java @@ -0,0 +1,40 @@ + + + /** + * ִʱ : 4 ms, Remove Duplicates from Sorted ListJavaύл5.37% û + ڴ : 34.5 MB, Remove Duplicates from Sorted ListJavaύл99.90% û + */ + public ListNode deleteDuplicates(ListNode head) { + + if (head == null){ + return head; + } + + // ȡÿڵ㣬Dzظڵ + // жϽڵǷظķ + // ÿζڵ㣬ȥhashвѯڣΪظڵ㣻򣬲hash + // hashΪ˿֧ + + HashMap map = new HashMap<>(); + + // Ľڵָ. headڵǵһȻΪظҪɾĽڵ + map.put(head.val, head.val); + + ListNode current = head.next; + // βڵ. βʱ + ListNode tail = head; + + while (current != null){ + // ûҵ˵ظڵ㣬ýڵhash + if (!map.containsKey(current.val)){ + System.out.println(current.val); + map.put(current.val, current.val); + tail.next = current; + tail = current; + } + current = current.next; + } + tail.next = null; + this.printNodes(head); + return head; + } \ No newline at end of file From fef7fe1359f2d8572d65f7423c8adf91a76a3299 Mon Sep 17 00:00:00 2001 From: hey Date: Wed, 17 Apr 2019 09:59:07 +0800 Subject: [PATCH 037/780] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_6/LeetCode_83_6.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Week_01/id_6/LeetCode_83_6.java b/Week_01/id_6/LeetCode_83_6.java index afbf0bf6..677be5f6 100644 --- a/Week_01/id_6/LeetCode_83_6.java +++ b/Week_01/id_6/LeetCode_83_6.java @@ -1,9 +1,6 @@ - /** - * ִʱ : 4 ms, Remove Duplicates from Sorted ListJavaύл5.37% û - ڴ : 34.5 MB, Remove Duplicates from Sorted ListJavaύл99.90% û - */ + public ListNode deleteDuplicates(ListNode head) { if (head == null){ From 0ab10353c74e7d84715d9a51273e91ace1005d87 Mon Sep 17 00:00:00 2001 From: wangzhao Date: Wed, 17 Apr 2019 10:05:59 +0800 Subject: [PATCH 038/780] commit --- Week_01/id_85/LinkedListCycleII.java | 92 +++++++++++++ ...{LinkDelDup.java => LinkedListDelDup.java} | 33 ++--- Week_01/id_85/LinkedListReverseKGroup.java | 130 ++++++++++++++++++ Week_01/id_85/LinkedListSortMerge.java | 76 ++++++++++ Week_01/id_85/LinkedListSwapPairs.java | 70 ++++++++++ Week_01/id_85/ListNode.java | 8 ++ 6 files changed, 389 insertions(+), 20 deletions(-) create mode 100644 Week_01/id_85/LinkedListCycleII.java rename Week_01/id_85/{LinkDelDup.java => LinkedListDelDup.java} (69%) create mode 100644 Week_01/id_85/LinkedListReverseKGroup.java create mode 100644 Week_01/id_85/LinkedListSortMerge.java create mode 100644 Week_01/id_85/LinkedListSwapPairs.java create mode 100644 Week_01/id_85/ListNode.java diff --git a/Week_01/id_85/LinkedListCycleII.java b/Week_01/id_85/LinkedListCycleII.java new file mode 100644 index 00000000..d5391f87 --- /dev/null +++ b/Week_01/id_85/LinkedListCycleII.java @@ -0,0 +1,92 @@ +import java.util.HashMap; + +/** + * @Package: + * @ClassName: LinkedListCycleII + * @Description: 给定一个链表,返回链表开始入环的第一个结点。 如果链表无环,则返回 null 难度:中 + * @leetCode url : https://leetcode.com/problems/linked-list-cycle-ii/ + * @Author: wangzhao + * @Date: 2019-04-16 13:24:35 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +public class LinkedListCycleII { + + + /** + * + * 利用哈希表保存已出现的结点, + * 如果该结点存在,则返回该结点 + * + */ + public ListNode detectCycle(ListNode head) { + if (head==null){ + return head; + } + HashMap map = new HashMap<>(); + while (head.next!=null){ + + if (map.get(head)!=null){ + return head; + }else { + map.put(head,1); + } + head = head.next; + } + + + return null; + } + + public ListNode detectCycle2(ListNode head) { + if (head==null){ + return null; + } + + + + + return null; + } + + + public static void main(String[] args) { + Integer[] arr = {0, 1, 2, 3, 4, 6, 7, 8}; + + //初始化一个无用结点。去除边界问题 + ListNode cur = new ListNode(-1); + ListNode head = cur; + + ListNode cycleNode = null; + + for (int i = 0; i < arr.length; i++) { + + cur.next = new ListNode(arr[i]); + if (i == 4) { + //摘取入环结点 + cycleNode = cur.next; + } + cur = cur.next; + if (i == arr.length - 1) { + //链表尾结点指向入环结点 + cur.next = cycleNode; + } + } + + + /** + * 循环去重 + */ + ListNode resultNode = new LinkedListCycleII().detectCycle(head.next); + ListNode node = head.next; + int i=-1; + while (node != null&&resultNode!=null) { + i++; + if (node==resultNode){ + break; + } + node = node.next; + } + System.out.println("入环位置:"+i); + } +} diff --git a/Week_01/id_85/LinkDelDup.java b/Week_01/id_85/LinkedListDelDup.java similarity index 69% rename from Week_01/id_85/LinkDelDup.java rename to Week_01/id_85/LinkedListDelDup.java index 9ffaa1c5..0d741d8e 100644 --- a/Week_01/id_85/LinkDelDup.java +++ b/Week_01/id_85/LinkedListDelDup.java @@ -2,12 +2,13 @@ * @Package: * @ClassName: Solution * @Description: 删除排序链表中的重复元素 + * @leetcode url :https://leetcode.com/problems/remove-duplicates-from-sorted-list/ * @Author: wangzhao * @Date: 2019-04-15 15:18:28 * @Version: 1.0.0 * @Since: 1.8 **/ -public class LinkDelDup { +public class LinkedListDelDup { public ListNode deleteDuplicates(ListNode head) { @@ -19,15 +20,15 @@ public ListNode deleteDuplicates(ListNode head) { while (head.next != null) { /** - * 当前节点与下一节点值比较 - * 如果相等,则将当前节点的下一节点指向下下节点 + * 当前结点与下一结点值比较 + * 如果相等,则将当前结点的下一结点指向下下结点 */ if (head.val == head.next.val) { head.next = head.next.next; } /** - * 比较当前节点与下一节点的值是否相等, - * 如果相等则当前节点不移动到下一节点 + * 比较当前结点与下一结点的值是否相等, + * 如果相等则当前结点不移动到下一结点 * 循环上一步判断 */ if (head.next != null && head.val != head.next.val) { @@ -44,15 +45,15 @@ public ListNode deleteDuplicates2(ListNode head) { return head; } /** - * 取出当前节点的下一节点 + * 取出当前结点的下一结点 */ ListNode next = head.next; /** - * 判断当前节点与下一节点的值是否相等 + * 判断当前结点与下一结点的值是否相等 */ if (head.val == next.val) { /** - * 如果相等,将当前节点的下一节点指向下一届节点的下一节点 + * 如果相等,将当前结点的下一结点指向下一届结点的下一结点 */ head.next = next.next; /** @@ -61,7 +62,7 @@ public ListNode deleteDuplicates2(ListNode head) { deleteDuplicates2(head); } else { /** - * 当前节点与下一节点的值不相等,递归下一节点 + * 当前结点与下一结点的值不相等,递归下一结点 */ deleteDuplicates2(next); } @@ -74,7 +75,7 @@ public static void main(String[] args) { Integer[] arr = {1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5}; - //初始化一个无用节点。去除边界问题 + //初始化一个无用结点。去除边界问题 ListNode cur = new ListNode(-1); ListNode head = cur; @@ -86,7 +87,7 @@ public static void main(String[] args) { /** * 循环去重 */ - ListNode resultNode = new LinkDelDup().deleteDuplicates(head.next); + ListNode resultNode = new LinkedListDelDup().deleteDuplicates(head.next); while (resultNode != null) { System.out.println(resultNode.val); resultNode = resultNode.next; @@ -95,7 +96,7 @@ public static void main(String[] args) { /** * 递归去重 */ - resultNode = new LinkDelDup().deleteDuplicates2(head.next); + resultNode = new LinkedListDelDup().deleteDuplicates2(head.next); while (resultNode != null) { System.out.println(resultNode.val); resultNode = resultNode.next; @@ -104,11 +105,3 @@ public static void main(String[] args) { } -class ListNode { - int val; - ListNode next; - - ListNode(int x) { - val = x; - } -} \ No newline at end of file diff --git a/Week_01/id_85/LinkedListReverseKGroup.java b/Week_01/id_85/LinkedListReverseKGroup.java new file mode 100644 index 00000000..5747ba0f --- /dev/null +++ b/Week_01/id_85/LinkedListReverseKGroup.java @@ -0,0 +1,130 @@ +/** + * @Package: + * @ClassName: LinkedListReverseKGroup + * @Description: 给出一个链表,每 k 个结点一组进行翻转,并返回翻转后的链表。 + * k 是一个正整数,它的值小于或等于链表的长度。如果结点总数不是 k 的整数倍,那么将最后剩余结点保持原有顺序。 + * 难度:困难 + * @leetcode url :https://leetcode.com/problems/reverse-nodes-in-k-group/ + * @Author: wangzhao + * @Date: 2019-04-16 14:35:49 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +public class LinkedListReverseKGroup { + + public ListNode reverseKGroup(ListNode head, int k) { + + if (head == null || k == 0) { + return null; + } + if (k == 1) { + return head; + } + + int i = 1; + + ListNode oldList = head; + + ListNode cursor = head; + + ListNode first = head; + + ListNode result = null; + + ListNode lastCursor = new ListNode(-1); + + boolean isDiv = false; + while (cursor.next != null) { + i++; + ListNode _next = cursor.next; + cursor.next = _next.next; + _next.next = first; + first = _next; + lastCursor.next = first; + + isDiv = false; + if (i % k == 0) { + lastCursor = cursor; + cursor = cursor.next; + if (result == null) { + result = first; + } + isDiv = true; + first = cursor; + i++; + if (cursor == null) { + break; + } + } + + } + if (result == null && !isDiv) { + result = oldList; + } + + if (result != null && !isDiv) { + cursor = first; + while (cursor.next != null) { + ListNode _next = cursor.next; + cursor.next = _next.next; + _next.next = first; + first = _next; + lastCursor.next = first; + } + } + + return result; + } + + public ListNode reverse(ListNode head, ListNode end) { + + + ListNode cursor = head; + + ListNode first = head; + while (cursor.next != null) { + + ListNode _next = cursor.next; + cursor.next = _next.next; + _next.next = first; + first = _next; + if (cursor.next == end) { + break; + } + } + + return first; + } + + + public static void main(String[] args) { + Integer[] arr = {1, 2, 3, 4, 5, 6, 7}; + Integer[] arr1 = {0, 1}; + + //初始化一个无用结点。去除边界问题 + ListNode cur = new ListNode(-1); + ListNode head = cur; + + ListNode puase = null; + int t = 0; + for (Integer i : arr) { + cur.next = new ListNode(i); + cur = cur.next; +// t++; +// if (t == 4) { +// puase = cur; +// +// } + } + + + int k = 1; + +// ListNode resultNode = new LinkedListReverseKGroup().reverse(head.next,puase); + ListNode resultNode = new LinkedListReverseKGroup().reverseKGroup(head.next, k); + while (resultNode != null) { + System.out.println(resultNode.val); + resultNode = resultNode.next; + } + } +} diff --git a/Week_01/id_85/LinkedListSortMerge.java b/Week_01/id_85/LinkedListSortMerge.java new file mode 100644 index 00000000..37a54d87 --- /dev/null +++ b/Week_01/id_85/LinkedListSortMerge.java @@ -0,0 +1,76 @@ +/** + * @Package: + * @ClassName: LinkedListSortMerge + * @Description: 有序链表合并为一个新的有序链表 + * @leetcode url :https://leetcode.com/problems/merge-two-sorted-lists + * @Author: wangzhao + * @Date: 2019-04-16 10:16:48 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +public class LinkedListSortMerge { + + + /** + *思路: + * 1.两个链表同时移动比较,值大的结点暂停移动,直到该结点为较小值 + */ + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + + ListNode node = new ListNode(-1); + ListNode cur = node; + while (true) { + if (l1 == null && l2 == null) { + break; + } + if (l1 == null) { + cur.next = l2; + break; + } + if (l2 == null) { + cur.next = l1; + break; + } + if (l1.val <= l2.val) { + cur.next = l1; + l1 = l1.next; + } else { + cur.next = l2; + l2 = l2.next; + } + cur = cur.next; + } + return node.next; + } + + + public static void main(String[] args) { + Integer[] arr = {0,1, 1, 3, 6, 7}; + Integer[] arr1 = {0,2, 3, 5, 6,8}; + + //初始化一个无用结点。去除边界问题 + ListNode cur = new ListNode(-1); + ListNode head1 = cur; + + for (Integer i : arr) { + cur.next = new ListNode(i); + cur = cur.next; + } + + + //初始化一个无用结点。去除边界问题 + cur = new ListNode(-1); + ListNode head2 = cur; + + for (Integer i : arr1) { + cur.next = new ListNode(i); + cur = cur.next; + } + + ListNode resultNode = new LinkedListSortMerge().mergeTwoLists(head1.next, head2.next); + while (resultNode != null) { + System.out.println(resultNode.val); + resultNode = resultNode.next; + } + } +} diff --git a/Week_01/id_85/LinkedListSwapPairs.java b/Week_01/id_85/LinkedListSwapPairs.java new file mode 100644 index 00000000..8136e630 --- /dev/null +++ b/Week_01/id_85/LinkedListSwapPairs.java @@ -0,0 +1,70 @@ +/** + * @Package: + * @ClassName: LinkedListSwapPairs + * @Description: 给定一个链表,两两交换其中相邻的结点 难度:中 + * @leetCode url:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ + * @Author: wangzhao + * @Date: 2019-04-16 10:52:29 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +public class LinkedListSwapPairs { + + /** + *思路: + * 1.暂存前结点 + * 2.交换两个结点位置 + * 3.将前结点的下一结点指向交换后的两个的结点的第一个结点 + * 4.移动前结点到交换后的两个结点的第二个结点 + * 5.如果存在结点交换,并且头结点为空,保存头结点,用于函数返回 + * 6.移动head到下一对结点的第一个结点 + */ + public ListNode swapPairs(ListNode head) { + + if (head == null || head.next == null) return head; + + ListNode prev = new ListNode(-1); + ListNode result = null; + + while (head != null) { + + if (head.next == null) { + break; + } + ListNode next = head.next; + head.next = next.next; + next.next = head; + + prev.next = next; + prev = head; + + if (result == null) { + result = next; + } + + head = head.next; + + } + return result; + } + + public static void main(String[] args) { + Integer[] arr = {0, 1, 2, 3, 4, 6, 7, 8}; + + //初始化一个无用结点。去除边界问题 + ListNode cur = new ListNode(-1); + ListNode head = cur; + + for (Integer i : arr) { + cur.next = new ListNode(i); + cur = cur.next; + } + + + ListNode resultNode = new LinkedListSwapPairs().swapPairs(head.next); + while (resultNode != null) { + System.out.println(resultNode.val); + resultNode = resultNode.next; + } + } +} diff --git a/Week_01/id_85/ListNode.java b/Week_01/id_85/ListNode.java new file mode 100644 index 00000000..94f18861 --- /dev/null +++ b/Week_01/id_85/ListNode.java @@ -0,0 +1,8 @@ +class ListNode { + int val; + ListNode next; + + ListNode(int x) { + val = x; + } +} From 1f793954debab670c45dde3522e4e99eb35709c1 Mon Sep 17 00:00:00 2001 From: wangzhao Date: Wed, 17 Apr 2019 10:07:07 +0800 Subject: [PATCH 039/780] commit --- Week_01/id_85/LinkedListReverseKGroup.java | 31 +--------------------- 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/Week_01/id_85/LinkedListReverseKGroup.java b/Week_01/id_85/LinkedListReverseKGroup.java index 5747ba0f..8b51a158 100644 --- a/Week_01/id_85/LinkedListReverseKGroup.java +++ b/Week_01/id_85/LinkedListReverseKGroup.java @@ -76,51 +76,22 @@ public ListNode reverseKGroup(ListNode head, int k) { return result; } - public ListNode reverse(ListNode head, ListNode end) { - - - ListNode cursor = head; - - ListNode first = head; - while (cursor.next != null) { - - ListNode _next = cursor.next; - cursor.next = _next.next; - _next.next = first; - first = _next; - if (cursor.next == end) { - break; - } - } - - return first; - } public static void main(String[] args) { Integer[] arr = {1, 2, 3, 4, 5, 6, 7}; - Integer[] arr1 = {0, 1}; //初始化一个无用结点。去除边界问题 ListNode cur = new ListNode(-1); ListNode head = cur; - ListNode puase = null; - int t = 0; for (Integer i : arr) { cur.next = new ListNode(i); cur = cur.next; -// t++; -// if (t == 4) { -// puase = cur; -// -// } } + int k = 2; - int k = 1; - -// ListNode resultNode = new LinkedListReverseKGroup().reverse(head.next,puase); ListNode resultNode = new LinkedListReverseKGroup().reverseKGroup(head.next, k); while (resultNode != null) { System.out.println(resultNode.val); From 091f0c85952cfd1c295c26467d9888bdcd317954 Mon Sep 17 00:00:00 2001 From: Niu Jin Date: Wed, 17 Apr 2019 11:46:59 +0800 Subject: [PATCH 040/780] =?UTF-8?q?=E9=93=BE=E8=A1=A8=E9=A2=98=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_21/LeetCode_021_021.cpp | 33 +++++++++++++++ Week_01/id_21/LeetCode_024_021.cpp | 33 +++++++++++++++ Week_01/id_21/LeetCode_025_021.cpp | 55 +++++++++++++++++++++++++ Week_01/id_21/LeetCode_083_021.cpp | 25 ++++++++++++ Week_01/id_21/LeetCode_142_021.cpp | 64 ++++++++++++++++++++++++++++++ 5 files changed, 210 insertions(+) create mode 100644 Week_01/id_21/LeetCode_021_021.cpp create mode 100644 Week_01/id_21/LeetCode_024_021.cpp create mode 100644 Week_01/id_21/LeetCode_025_021.cpp create mode 100644 Week_01/id_21/LeetCode_083_021.cpp create mode 100644 Week_01/id_21/LeetCode_142_021.cpp diff --git a/Week_01/id_21/LeetCode_021_021.cpp b/Week_01/id_21/LeetCode_021_021.cpp new file mode 100644 index 00000000..3aa8f6b8 --- /dev/null +++ b/Week_01/id_21/LeetCode_021_021.cpp @@ -0,0 +1,33 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + if (l1 == nullptr) return l2; + if (l2 == nullptr) return l1; + ListNode* dummy = new ListNode(0); + ListNode* p = dummy; + while(l1 != nullptr && l2 != nullptr) { + if (l1->val <= l2->val) { + p->next = l1; + l1 = l1->next; + } else { + p->next = l2; + l2 = l2->next; + } + p = p->next; + } + if (l1 != nullptr) p->next = l1; + else p->next = l2; + + p = dummy->next; + delete dummy; + return p; + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_024_021.cpp b/Week_01/id_21/LeetCode_024_021.cpp new file mode 100644 index 00000000..1a8d3b6d --- /dev/null +++ b/Week_01/id_21/LeetCode_024_021.cpp @@ -0,0 +1,33 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* swapPairs(ListNode* head) { + if (head == nullptr || head->next == nullptr) return head; + ListNode* dummy = new ListNode(0); + dummy->next = head; + + ListNode * prev = dummy, * p1, * p2, * next; + while(prev->next && prev->next->next) { + p1 = prev->next; + p2 = p1->next; + next = p2->next; + + prev->next = p2; + p2->next = p1; + p1->next = next; + prev = p1; + } + + p1 = dummy->next; + delete dummy; + + return p1; + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_025_021.cpp b/Week_01/id_21/LeetCode_025_021.cpp new file mode 100644 index 00000000..c1fa10e1 --- /dev/null +++ b/Week_01/id_21/LeetCode_025_021.cpp @@ -0,0 +1,55 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* reverseKGroup(ListNode* head, int k) { + if (head == nullptr || k == 1) return head; + ListNode* dummy = new ListNode(0); + dummy->next = head; + + ListNode* begin = dummy, *end, * next; + + while(begin != nullptr) { + int i; + end = begin->next; + for(i = 1; i < k; i++) { + if (end == nullptr || end->next == nullptr) break; + end = end->next; + } + if (i < k) break; + next = begin->next; + reverse(begin, end); + begin = next; + } + + return dummy->next; + } + + /* + * 此函数为左开右闭区间 + * 直接修改 begin->next 的指向来完成翻转 + */ + void reverse(ListNode* begin, ListNode* end) { + end = end->next; + ListNode* p1 = begin->next, * next; + + ListNode* dummy = new ListNode(0); + dummy->next = end; + + while (p1 != end) { + next = p1->next; + p1->next = dummy->next; + dummy->next = p1; + p1 = next; + } + + begin->next = dummy->next; + delete dummy; + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_083_021.cpp b/Week_01/id_21/LeetCode_083_021.cpp new file mode 100644 index 00000000..8a083192 --- /dev/null +++ b/Week_01/id_21/LeetCode_083_021.cpp @@ -0,0 +1,25 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + if (head == nullptr || head->next == nullptr) return head; + ListNode* p1 = head, * temp; + while (p1->next != nullptr) { + if (p1->val == p1->next->val) { + temp = p1->next; + p1->next = p1->next->next; + delete temp; + } else { + p1 = p1->next; + } + } + return head; + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_142_021.cpp b/Week_01/id_21/LeetCode_142_021.cpp new file mode 100644 index 00000000..7a56e5e1 --- /dev/null +++ b/Week_01/id_21/LeetCode_142_021.cpp @@ -0,0 +1,64 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *detectCycle(ListNode *head) { + set path; + set::iterator itr; + + ListNode* p1 = head; + while(p1 != nullptr) { + itr = path.find(p1); + if (itr != path.end()) { + return *itr; + } + path.insert(p1); + p1 = p1->next; + } + + return NULL; + } +}; + +/** + * 快慢指针做法 + */ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode *detectCycle(ListNode *head) { + if (head == NULL || head->next == NULL) + return NULL; + + ListNode* fast = head; + ListNode* slow = head; + + while(fast->next && fast->next->next) { + slow = slow->next; + fast = fast->next->next; + if (slow == fast) { + fast = head; + while(slow != fast) { + slow = slow->next; + fast = fast->next; + } + return fast; + } + } + + return NULL; + } +}; \ No newline at end of file From e2e3d01ce1e74dc145ff986372d98b3a080bbb4b Mon Sep 17 00:00:00 2001 From: suncen Date: Wed, 17 Apr 2019 11:57:16 +0800 Subject: [PATCH 041/780] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=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 --- Week_01/id_126/LeetCode_21_126.java | 41 +++++++++++++++++++++++++++++ Week_01/id_126/NOTE.md | 6 ++++- Week_01/id_126/test.txt | 0 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_126/LeetCode_21_126.java delete mode 100644 Week_01/id_126/test.txt diff --git a/Week_01/id_126/LeetCode_21_126.java b/Week_01/id_126/LeetCode_21_126.java new file mode 100644 index 00000000..cbeef479 --- /dev/null +++ b/Week_01/id_126/LeetCode_21_126.java @@ -0,0 +1,41 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + //创建一个新的listnode + //两个有序的listnode每个取一个,比较,并加入新的Listnode + ListNode listNode = new ListNode(0); + ListNode current = listNode; + while (l1 != null && l2 != null) { + if (l1.val < l2.val) { + //l1加入listnode l1位置后移 + current.next = l1; + current = l1; + l1 = l1.next; + + } else { + //l2加入listnode l2位置后移 + current.next = l2; + current = l2; + l2 = l2.next; + + } + + } + + if (l1 == null) { + current.next = l2; + } + if (l2 == null) { + current.next = l1; + } + + return listNode.next; + } +} \ No newline at end of file diff --git a/Week_01/id_126/NOTE.md b/Week_01/id_126/NOTE.md index c684e62f..0b7a1c9e 100644 --- a/Week_01/id_126/NOTE.md +++ b/Week_01/id_126/NOTE.md @@ -1 +1,5 @@ -# 学习笔记 \ No newline at end of file +# 学习笔记 + +解题思路: +技巧一:初始化的时候把head节点初始化一个给定的值,这样,后续操作就不用考虑头节点问题,直接排序好了,把最小的赋值给head.next就可以了。 +技巧二:两个链表为空和不为空的判断,循环逻辑依赖判断条件 \ No newline at end of file diff --git a/Week_01/id_126/test.txt b/Week_01/id_126/test.txt deleted file mode 100644 index e69de29b..00000000 From fd7911a2667b5aaa2fdb0f93ac58abf55dd50861 Mon Sep 17 00:00:00 2001 From: hey Date: Wed, 17 Apr 2019 12:01:13 +0800 Subject: [PATCH 042/780] 01_21_merge-two-sorted-lists --- Week_01/id_6/LeetCode_21_6.java | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Week_01/id_6/LeetCode_21_6.java diff --git a/Week_01/id_6/LeetCode_21_6.java b/Week_01/id_6/LeetCode_21_6.java new file mode 100644 index 00000000..05e101e3 --- /dev/null +++ b/Week_01/id_6/LeetCode_21_6.java @@ -0,0 +1,42 @@ + + + // ͨȽϣIJ뵽µ + // ڱڵ㣬ٴ븴Ӷ + public ListNode mergeTwoLists2(ListNode l1, ListNode l2) { + System.out.println("mergeTwoLists2"); + if (l1 == null){ + return l2; + } + if (l2 == null){ + return l1; + } + + // ڱڵ + ListNode temp = new ListNode(0); + ListNode head = temp; + ListNode tail = temp; + // ıԭʼ + ListNode current1 = l1; + ListNode current2 = l2; + while (current1 != null && current2 != null){ + // ˭С˭ + if (current1.val <= current2.val){ + tail.next = current1; + tail = current1; + current1 = current1.next; + } + else { + tail.next = current2; + tail = current2; + current2 = current2.next; + } + } + // ʣб + if (current1 == null){ + tail.next = current2; + }else { + tail.next = current1; + } + + return head.next; + } \ No newline at end of file From 16209dcf931ae4654fc852196f4fb9dd92f8b612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Wed, 17 Apr 2019 12:22:49 +0800 Subject: [PATCH 043/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=20LeetCode-25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-25.java | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Week_01/id_52/LeetCode-25.java diff --git a/Week_01/id_52/LeetCode-25.java b/Week_01/id_52/LeetCode-25.java new file mode 100644 index 00000000..dd81e98b --- /dev/null +++ b/Week_01/id_52/LeetCode-25.java @@ -0,0 +1,40 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public ListNode reverseKGroup(ListNode head, int k) { + ListNode curr = head; + for(int i=0;i Date: Wed, 17 Apr 2019 13:46:49 +0800 Subject: [PATCH 044/780] =?UTF-8?q?Create=20=E5=88=A0=E9=99=A4=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E9=93=BE=E8=A1=A8=E4=B8=AD=E7=9A=84=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=85=83=E7=B4=A0.cs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/ --- ...15\345\244\215\345\205\203\347\264\240.cs" | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 "Week_01/id_2/\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.cs" diff --git "a/Week_01/id_2/\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.cs" "b/Week_01/id_2/\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.cs" new file mode 100644 index 00000000..e98331f1 --- /dev/null +++ "b/Week_01/id_2/\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.cs" @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode +{ + + public class ListNode + { + public int val; + public ListNode next; + public ListNode(int x) { val = x; } + } + + public class 删除排序链表中的重复元素 + { + public ListNode DeleteDuplicates(ListNode head) + { + if (head == null) + { + return null; + } + + if (head.next == null) + { + return head; + } + + if (head.val == head.next.val) + { + head.next = head.next.next; + DeleteDuplicates(head); + } + else + { + DeleteDuplicates(head.next); + } + + return head; + } + + public ListNode DeleteDuplicates_1(ListNode head) + { + if (head == null) + { + return null; + } + + + ListNode currentNode = head; + while (currentNode.next != null) + { + if (currentNode.val == currentNode.next.val) + { + currentNode.next = currentNode.next.next; + } + else + { + currentNode = currentNode.next; + } + } + + return head; + } + } +} From a4b48c5c39a456025a009535c354dacc5ada1570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Wed, 17 Apr 2019 13:59:48 +0800 Subject: [PATCH 045/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=9Aleetcode-905?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-905.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Week_01/id_52/LeetCode-905.java diff --git a/Week_01/id_52/LeetCode-905.java b/Week_01/id_52/LeetCode-905.java new file mode 100644 index 00000000..65e50d24 --- /dev/null +++ b/Week_01/id_52/LeetCode-905.java @@ -0,0 +1,17 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + int[] result=new int[A.length]; + int j=0; + int k=A.length-1; + for(int i=0;i Date: Wed, 17 Apr 2019 14:28:44 +0800 Subject: [PATCH 046/780] week_01 task --- Week_01/id_131/LeetCode_21_131.cpp | 43 ++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Week_01/id_131/LeetCode_21_131.cpp diff --git a/Week_01/id_131/LeetCode_21_131.cpp b/Week_01/id_131/LeetCode_21_131.cpp new file mode 100644 index 00000000..b16201bc --- /dev/null +++ b/Week_01/id_131/LeetCode_21_131.cpp @@ -0,0 +1,43 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { + ListNode* mergeNode = new ListNode(0); + ListNode* newNode = mergeNode; + while ( l1 !=NULL && l2 != NULL) + { + if(l1->val < l2->val) + { + newNode->next = l1; + newNode = newNode->next; + l1 = l1->next; + } + else + { + newNode->next = l2; + newNode = newNode->next; + l2 = l2->next; + } + } + while(l1 != NULL) + { + newNode->next = l1; + newNode = newNode->next; + l1 = l1->next; + } + while(l2 != NULL) + { + newNode->next = l2; + newNode = newNode->next; + l2 = l2->next; + } + return mergeNode->next; + } +}; \ No newline at end of file From 616f40335a1af4553b98a5f15381da008ede97bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=A2=E6=A1=83=E5=85=AD?= <49054754+HongChao6@users.noreply.github.com> Date: Wed, 17 Apr 2019 14:30:01 +0800 Subject: [PATCH 047/780] week_01 task --- Week_01/id_131/LeetCode_83_131.cpp | 26 ++++++++++++++++++ Week_01/id_131/LeetCode_905_131.cpp | 21 +++++++++++++++ Week_01/id_131/LeetCode_922_131.cpp | 41 +++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 Week_01/id_131/LeetCode_83_131.cpp create mode 100644 Week_01/id_131/LeetCode_905_131.cpp create mode 100644 Week_01/id_131/LeetCode_922_131.cpp diff --git a/Week_01/id_131/LeetCode_83_131.cpp b/Week_01/id_131/LeetCode_83_131.cpp new file mode 100644 index 00000000..e56bb601 --- /dev/null +++ b/Week_01/id_131/LeetCode_83_131.cpp @@ -0,0 +1,26 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + ListNode* data = head; + while(data != NULL && data->next != NULL) + { + if(data->val == data->next->val) + { + data->next = data->next->next; + } + else + { + data = data->next; + } + } + return head; + } +}; \ No newline at end of file diff --git a/Week_01/id_131/LeetCode_905_131.cpp b/Week_01/id_131/LeetCode_905_131.cpp new file mode 100644 index 00000000..c7f89654 --- /dev/null +++ b/Week_01/id_131/LeetCode_905_131.cpp @@ -0,0 +1,21 @@ +class Solution { +public: + vector sortArrayByParity(vector& A) { + int begin = 0, end = A.size()-1; + while(begin < end) + { + if(A[begin]%2 == 0) ++begin; + if(A[end]%2 == 1) --end; + if(begin >= end) break; + if((A[begin]%2 == 1) && (A[end]%2 == 0)) + { + A[begin] ^= A[end]; + A[end] ^= A[begin]; + A[begin] ^= A[end]; + ++begin; + --end; + } + } + return A; + } +}; \ No newline at end of file diff --git a/Week_01/id_131/LeetCode_922_131.cpp b/Week_01/id_131/LeetCode_922_131.cpp new file mode 100644 index 00000000..91f27aa7 --- /dev/null +++ b/Week_01/id_131/LeetCode_922_131.cpp @@ -0,0 +1,41 @@ +class Solution { +public: + int findSuitData(vector& unorderV, int index) + { + if (unorderV.empty()) + { + unorderV.push_back(index); + return -1; + } + int lastIndex = unorderV[unorderV.size() - 1]; + if (index % 2 != lastIndex % 2) + { + unorderV.pop_back(); + return lastIndex; + } + else + { + unorderV.push_back(index); + } + return -1; + } + + vector sortArrayByParityII(vector& A) { + vector unorderV; + for (int begin = 0; begin < A.size(); ++begin) + { + if (begin % 2 != A[begin] % 2) + { + int i = findSuitData(unorderV, begin); + if (i >= 0) + { + int tmpData = A[begin]; + A[begin] = A[i]; + A[i] = tmpData; + } + } + } + return A; + } + +}; \ No newline at end of file From 6721b122e896edd4b55995980e86f0be0dc61cb4 Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Wed, 17 Apr 2019 15:27:58 +0800 Subject: [PATCH 048/780] https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/ --- ...11\345\272\217\351\223\276\350\241\250.cs" | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 "Week_01/id_2/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.cs" diff --git "a/Week_01/id_2/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.cs" "b/Week_01/id_2/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.cs" new file mode 100644 index 00000000..3c8899ec --- /dev/null +++ "b/Week_01/id_2/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.cs" @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode.合并两个有序链表 +{ + public class ListNode + { + public int val; + public ListNode next; + public ListNode(int x) { val = x; } + } + + public class 合并两个有序链表 + { + public ListNode MergeTwoLists(ListNode l1, ListNode l2) + { + ListNode head = new ListNode(int.MinValue); + ListNode tail = head; + while (l1 != null && l2 != null) + { + if (l1.val < l2.val) + { + tail.next = l1; + l1 = l1.next; + } + else + { + tail.next = l2; + l2 = l2.next; + } + tail = tail.next; + } + + if (l1 != null) + { + tail.next = l1; + } + + if (l2 != null) + { + tail.next = l2; + } + head = head.next; + return head; + } + } +} From bee4970d41625ca80a5fe3329b83bf9dc3cd9016 Mon Sep 17 00:00:00 2001 From: Niu Jin Date: Wed, 17 Apr 2019 16:02:11 +0800 Subject: [PATCH 049/780] =?UTF-8?q?=E6=95=B0=E7=BB=84=E9=A2=98=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_21/LeetCode_081_021.cpp | 43 +++++++++++++++++++++++++++ Week_01/id_21/LeetCode_153_021.cpp | 47 ++++++++++++++++++++++++++++++ Week_01/id_21/LeetCode_905_021.cpp | 26 +++++++++++++++++ Week_01/id_21/LeetCode_922_021.cpp | 27 +++++++++++++++++ 4 files changed, 143 insertions(+) create mode 100644 Week_01/id_21/LeetCode_081_021.cpp create mode 100644 Week_01/id_21/LeetCode_153_021.cpp create mode 100644 Week_01/id_21/LeetCode_905_021.cpp create mode 100644 Week_01/id_21/LeetCode_922_021.cpp diff --git a/Week_01/id_21/LeetCode_081_021.cpp b/Week_01/id_21/LeetCode_081_021.cpp new file mode 100644 index 00000000..e6df66fa --- /dev/null +++ b/Week_01/id_21/LeetCode_081_021.cpp @@ -0,0 +1,43 @@ +/* + * BF: 直接遍历,算法复杂度 O(N) + */ +class Solution { +public: + bool search(vector& nums, int target) { + for(auto itr = nums.begin(); itr != nums.end(); itr++) { + if (*itr == target) return true; + } + return false; + } +}; + +/* + * 二分法查找 + */ +class Solution { +public: + bool search(vector& nums, int target) { + if (nums.size() < 1) return false; + if (nums.size() == 1) return nums[0] == target; + // 前半段,顺序查找 target + // 如果没有找到 target ,但是找到反转的位置,则停止顺序查找 + int begin = 0; + while (begin + 1 < nums.size()) { + if (nums[begin] == target || nums[begin + 1] == target) return true; + if (nums[begin] > nums[begin + 1]) break; + begin++; + } + + // 后半段使用二分法查找 + int end = nums.size(); + while (begin + 1 < end && end <= nums.size()) { + int pos = (begin + end) / 2; + if (nums[pos] == target) return true; + if (begin == end) break; + if (nums[pos] < target) begin = pos; + else end = pos; + } + + return false; + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_153_021.cpp b/Week_01/id_21/LeetCode_153_021.cpp new file mode 100644 index 00000000..1a6474a4 --- /dev/null +++ b/Week_01/id_21/LeetCode_153_021.cpp @@ -0,0 +1,47 @@ +class Solution { +public: + int findMin(vector& nums) { + for(int i = 1; i < nums.size(); i ++) { + if (nums[i] < nums[i-1]) return nums[i]; + } + return nums[0]; + } +}; + +/* + * 二分法查找 + */ +class Solution { +public: + int findMin(vector& nums) { + if(nums.size() == 1) { + return nums[0]; + } + + int left = 0, right = nums.size() - 1; + + if (nums[right] > nums[0]) { + return nums[0]; + } + + while (right >= left) { + int mid = left + (right - left) / 2; + + if (nums[mid] > nums[mid + 1]) { + return nums[mid + 1]; + } + + if (nums[mid - 1] > nums[mid]) { + return nums[mid]; + } + + if (nums[mid] > nums[0]) { + left = mid + 1; + } else { + right = mid - 1; + } + } + + return -1; + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_905_021.cpp b/Week_01/id_21/LeetCode_905_021.cpp new file mode 100644 index 00000000..db8841f9 --- /dev/null +++ b/Week_01/id_21/LeetCode_905_021.cpp @@ -0,0 +1,26 @@ +class Solution { +public: + vector sortArrayByParity(vector& A) { + int i = 0, j = A.size() - 1; + while (i < j) { + if (isOdd(A[i]) && isEven(A[j])) { + swap(A[i], A[j]); + i++; + j--; + } else if (isEven(A[i])) { + i++; + } else if (isOdd(A[j])) { + j--; + } + } + return A; + } +private: + inline bool isOdd(int value) { + return value % 2; + } + + inline bool isEven(int value) { + return !isOdd(value); + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_922_021.cpp b/Week_01/id_21/LeetCode_922_021.cpp new file mode 100644 index 00000000..1d72d201 --- /dev/null +++ b/Week_01/id_21/LeetCode_922_021.cpp @@ -0,0 +1,27 @@ +class Solution { +public: + vector sortArrayByParityII(vector& A) { + if (A.size() == 1) return A; + int i = 0, j = 1; + while(j < A.size() && i < A.size() - 1) { + if (isOdd(A[i]) && isEven(A[j])) { + swap(A[i], A[j]); + i += 2; + j += 2; + } else if (isEven(A[i])) { + i += 2; + } else if (isOdd(A[j])) { + j += 2; + } + } + return A; + } +private: + inline bool isOdd(int value) { + return value % 2; + } + + inline bool isEven(int value) { + return !isOdd(value); + } +}; \ No newline at end of file From 95da59185e8667523b2632d08e45e82bc5708cee Mon Sep 17 00:00:00 2001 From: zhaowende Date: Wed, 17 Apr 2019 16:54:41 +0800 Subject: [PATCH 050/780] =?UTF-8?q?=E5=AE=8C=E6=88=90LeetCode83=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_123/LeetCode_83_123.go | 77 ++++++++++++++++++++++++++ Week_01/id_123/LeetCode_83_123_test.go | 75 +++++++++++++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 Week_01/id_123/LeetCode_83_123.go create mode 100644 Week_01/id_123/LeetCode_83_123_test.go diff --git a/Week_01/id_123/LeetCode_83_123.go b/Week_01/id_123/LeetCode_83_123.go new file mode 100644 index 00000000..58680aba --- /dev/null +++ b/Week_01/id_123/LeetCode_83_123.go @@ -0,0 +1,77 @@ +package id_123 + +import "fmt" + +//Definition for singly-linked list. +type ListNode struct { + Val int + Next *ListNode +} + +func addNodeToHead(head *ListNode, val int) *ListNode { + if head == nil { + return nil + } + + node := ListNode{ + Val: val, + Next: nil, + } + node.Next = head.Next + head.Next = &node + + return head +} + +func addNodeToTail(head *ListNode, val int) *ListNode { + if head == nil { + return nil + } + + p := head + for p.Next != nil { + p = p.Next + } + + node := ListNode{ + Val: val, + Next: nil, + } + + p.Next = &node + + return head +} + +func printAllNode(head *ListNode) { + if head == nil { + return + } + + p := head.Next + valArray := make([]int, 0) + for p != nil { + valArray = append(valArray, p.Val) + p = p.Next + } + + fmt.Printf("%v\n", valArray) +} + +func deleteDuplicates(head *ListNode) *ListNode { + existValMap := make(map[int]bool, 0) + + p := head + var prev *ListNode + for p != nil { + if _, ok := existValMap[p.Val]; ok { + prev.Next = p.Next + } else { + existValMap[p.Val] = true + prev = p + } + p = p.Next + } + + return head +} diff --git a/Week_01/id_123/LeetCode_83_123_test.go b/Week_01/id_123/LeetCode_83_123_test.go new file mode 100644 index 00000000..71687907 --- /dev/null +++ b/Week_01/id_123/LeetCode_83_123_test.go @@ -0,0 +1,75 @@ +package id_123 + +import ( + "testing" +) + +func Test_deleteDuplicates(t *testing.T) { + + head := ListNode{ + Val: 0, + Next: nil, + } + + addNodeToTail(&head, 1) + addNodeToTail(&head, 1) + addNodeToTail(&head, 2) + addNodeToTail(&head, 2) + addNodeToTail(&head, 3) + addNodeToTail(&head, 4) + println("原始数据:") + printAllNode(&head) + + deleteDuplicates(head.Next) + println("去重后数据:") + printAllNode(&head) +} + +func Benchmark_deleteDuplicates(b *testing.B) { + for i := 0; i < b.N; i++ { + head := ListNode{ + Val: 0, + Next: nil, + } + + addNodeToTail(&head, 1) + addNodeToTail(&head, 1) + addNodeToTail(&head, 2) + addNodeToTail(&head, 2) + addNodeToTail(&head, 3) + addNodeToTail(&head, 4) + //println("原始数据:") + //printAllNode(&head) + + deleteDuplicates(head.Next) + //println("去重后数据:") + //printAllNode(&head) + } +} + +func Test_addNodeToTail(t *testing.T) { + head := ListNode{ + Val: 0, + Next: nil, + } + + addNodeToTail(&head, 1) + addNodeToTail(&head, 1) + addNodeToTail(&head, 2) + addNodeToTail(&head, 3) + addNodeToTail(&head, 4) + printAllNode(&head) +} + +func Test_addNodeToHead(t *testing.T) { + head := ListNode{ + Val: 0, + Next: nil, + } + + addNodeToHead(&head, 1) + addNodeToHead(&head, 2) + addNodeToHead(&head, 3) + addNodeToHead(&head, 4) + printAllNode(&head) +} From f40e7046f0d60bf22c2b27dd4ce9d2331c9103d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Wed, 17 Apr 2019 17:05:39 +0800 Subject: [PATCH 051/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=9Aleetcode922?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-922.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Week_01/id_52/LeetCode-922.java diff --git a/Week_01/id_52/LeetCode-922.java b/Week_01/id_52/LeetCode-922.java new file mode 100644 index 00000000..8a0186c0 --- /dev/null +++ b/Week_01/id_52/LeetCode-922.java @@ -0,0 +1,17 @@ +class Solution { + public int[] sortArrayByParityII2(int[] A) { + int[] result=new int[A.length]; + int j=0; + int k=1; + for(int i=0;i Date: Wed, 17 Apr 2019 17:12:07 +0800 Subject: [PATCH 052/780] =?UTF-8?q?=E6=8E=92=E5=BA=8F=5F242=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_27/LeetCode_242_027.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Week_01/id_27/LeetCode_242_027.java diff --git a/Week_01/id_27/LeetCode_242_027.java b/Week_01/id_27/LeetCode_242_027.java new file mode 100644 index 00000000..64a6d840 --- /dev/null +++ b/Week_01/id_27/LeetCode_242_027.java @@ -0,0 +1,17 @@ +class Solution { + public boolean isAnagram(String s, String t) { + + if(null == s || null == t) return false; + char[] sArr = s.toCharArray(); + char[] tArr = t.toCharArray(); + if(sArr.length != tArr.length) return false; + Arrays.sort(sArr); + Arrays.sort(tArr); + for(int i=0;i Date: Wed, 17 Apr 2019 17:30:05 +0800 Subject: [PATCH 053/780] 20,905,922 --- Week_01/id_55/LeetCode_20_55.py | 13 +++++++++++++ Week_01/id_55/LeetCode_905_55.py | 9 +++++++++ Week_01/id_55/LeetCode_922_55.py | 16 ++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 Week_01/id_55/LeetCode_20_55.py create mode 100644 Week_01/id_55/LeetCode_905_55.py create mode 100644 Week_01/id_55/LeetCode_922_55.py diff --git a/Week_01/id_55/LeetCode_20_55.py b/Week_01/id_55/LeetCode_20_55.py new file mode 100644 index 00000000..0e17e535 --- /dev/null +++ b/Week_01/id_55/LeetCode_20_55.py @@ -0,0 +1,13 @@ +class Solution: + def isValid(self, s: str) -> bool: + a = {')': '(', ']': '[', '}': '{'} + l = [None] + # 遍历s + for i in s: + print(l) + # 判断如果i在a中并且比如说是},那么如果i是否等于{(前部分也就是字典的key) 如果是就pop,如果不是就写入l + if i in a and a[i] == l[-1]: + l.pop() + else: + l.append(i) + return len(l) == 1 \ No newline at end of file diff --git a/Week_01/id_55/LeetCode_905_55.py b/Week_01/id_55/LeetCode_905_55.py new file mode 100644 index 00000000..afa7b33f --- /dev/null +++ b/Week_01/id_55/LeetCode_905_55.py @@ -0,0 +1,9 @@ +class Solution: + def sortArrayByParity(self, A: List[int]) -> List[int]: + a, b = [], [] + for val in A: + if val % 2 == 0: + a.append(val) + else: + b.append(val) + return a+b \ No newline at end of file diff --git a/Week_01/id_55/LeetCode_922_55.py b/Week_01/id_55/LeetCode_922_55.py new file mode 100644 index 00000000..5cbe8734 --- /dev/null +++ b/Week_01/id_55/LeetCode_922_55.py @@ -0,0 +1,16 @@ +class Solution: + def sortArrayByParityII(self, A): + a, b = [], [] + for val in A: + if val % 2 == 0: + a.append(val) + else: + b.append(val) + c, d = 0, 0 + for c in A: + A[c] = a[d] + A[c+1] = a[d] + c += 1 + d += 2 + + return a+b \ No newline at end of file From 1885944f32e21a00a9d80f5fc4be9d9db1816a9d Mon Sep 17 00:00:00 2001 From: hey Date: Wed, 17 Apr 2019 17:42:31 +0800 Subject: [PATCH 054/780] 01_905_sort-array-by-parity --- Week_01/id_6/LeetCode_905_6.java | 65 ++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Week_01/id_6/LeetCode_905_6.java diff --git a/Week_01/id_6/LeetCode_905_6.java b/Week_01/id_6/LeetCode_905_6.java new file mode 100644 index 00000000..e34e300b --- /dev/null +++ b/Week_01/id_6/LeetCode_905_6.java @@ -0,0 +1,65 @@ + + // ½飬żǰ룬Ӻǰ + // ʱ临ӶO(n) + // ռ临ӶO(2n)ƻԭ + public int[] sortArrayByParity(int[] A) { + int[] B = new int[A.length]; + + int head = 0; + int tail = A.length -1; + // ݣż + for (int i = 0; i < A.length ; i++) { + if (A[i] % 2 == 0){ + B[head] = A[i]; + head ++; + }else { + B[tail] = A[i]; + tail --; + } + // ݶ + if (head > tail){ + break; + } + } + return B; + } + + + // ֱָǰɨ裬żǰ룬Ӻǰ + // 飬Լڴռ + // ʱ临ӶO(n) + // ռ临ӶO(n)ƻԭ + public int[] sortArrayByParity1(int[] A) { + if (A.length == 1){ + return A; + } + + int head = 0; + int tail = A.length -1; + int swap = 0; + // ݣż + for (int i = 0; i < A.length ; i++) { + // headָżǰ + if (A[head] % 2 == 0){ + head ++; + } + // headָβһżhead + else { + if (A[tail] % 2 != 0){ + tail --; + }else { + swap = A[head]; + A[head] = A[tail]; + A[tail] = swap; + head ++; + tail --; + } + + } + // ݶ + if (head >= tail){ + break; + } + } + return A; + } \ No newline at end of file From e8ad055b9991938f790f67362bd7930a8b03d84a Mon Sep 17 00:00:00 2001 From: zhaowende Date: Wed, 17 Apr 2019 17:46:16 +0800 Subject: [PATCH 055/780] =?UTF-8?q?=E5=AE=8C=E6=88=90=20leetcode=20905.=20?= =?UTF-8?q?=E6=8C=89=E5=A5=87=E5=81=B6=E6=8E=92=E5=BA=8F=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_123/LeetCode_905_123.go | 14 ++++++++++++++ Week_01/id_123/LeetCode_905_123_test.go | 13 +++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 Week_01/id_123/LeetCode_905_123.go create mode 100644 Week_01/id_123/LeetCode_905_123_test.go diff --git a/Week_01/id_123/LeetCode_905_123.go b/Week_01/id_123/LeetCode_905_123.go new file mode 100644 index 00000000..7840b75b --- /dev/null +++ b/Week_01/id_123/LeetCode_905_123.go @@ -0,0 +1,14 @@ +package id_123 + +func sortArrayByParity(A []int) []int { + evenArr := make([]int, 0) + oddArr := make([]int, 0) + for _, v := range A { + if v%2 == 0 { + evenArr = append(evenArr, v) + } else { + oddArr = append(oddArr, v) + } + } + return append(evenArr, oddArr...) +} diff --git a/Week_01/id_123/LeetCode_905_123_test.go b/Week_01/id_123/LeetCode_905_123_test.go new file mode 100644 index 00000000..4692adab --- /dev/null +++ b/Week_01/id_123/LeetCode_905_123_test.go @@ -0,0 +1,13 @@ +package id_123 + +import ( + "fmt" + "testing" +) + +func Test_sortArrayByParity(t *testing.T) { + A := []int{3, 1, 2, 4, 8, 5, 7, 10, 12} + fmt.Printf("sort before: %v\n", A) + B := sortArrayByParity(A) + fmt.Printf("sort after: %v\n", B) +} From 338f9a0e5fe6b32bb5071857b58201e967dbfae2 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Wed, 17 Apr 2019 17:54:54 +0800 Subject: [PATCH 056/780] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=A0=88=E5=81=9A?= =?UTF-8?q?=E6=8B=AC=E5=8F=B7=E5=8C=B9=E9=85=8D=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/valid-parentheses.go | 99 +++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 Week_01/id_7/valid-parentheses.go diff --git a/Week_01/id_7/valid-parentheses.go b/Week_01/id_7/valid-parentheses.go new file mode 100644 index 00000000..e39d97e5 --- /dev/null +++ b/Week_01/id_7/valid-parentheses.go @@ -0,0 +1,99 @@ +package geekcode + +// 用单链表来实现一个简单的栈, +// push 操作为队尾添加元素 +// pop 操作为从队尾获取元素,前边的元素的next 指向nil +// 判断是否为空 , 判断 last 指向的元素是否为nil +// 考虑到单链表操作,如果从队尾删除数据 即 pop 操作,查找pre 元素,复杂度较高,所以,采用头插法实现链表插入操作 +// 不要担心 last 指针为空,着急改变last 的指向,第一个节点的next 为nil 正好表示栈为空 + +//链表实现的一个栈 +//默认最大元素个数为2048 +type Node struct { + val rune + next *Node +} + +//栈类型 +type Stack struct { + head *Node + size int + max int +} + +//初始化栈,不使用大小参数 +func NewStack() *Stack { + s := new(Stack) + s.size = 0 + s.max = 2048 + return s +} + +// 大小控制,默认可以装2048个元素,可以传递大小参数 +func NewStackWithSize(max int) *Stack { + s := new(Stack) + s.size = 0 + s.max = max + return s +} + +//push 操作注意,头指针的next 指针变动 +//遍历结果,从head 指针往next 遍历即可完成操作 +//超过最大的size ,则入栈失败 +func (self *Stack) Push(c rune) bool { + if self.size >= self.max { + return false + } + self.size++ + self.head = &Node{val: c, next: self.head} + return true +} + +//出栈操作,直接获取头指针,然后改变头指针为头指针的下一个结点 +func (self *Stack) Pop() rune { + if self.head == nil { + return 0 + } + b := self.head.val + self.head = self.head.next + self.size-- + return b +} + +//返回当前栈内的元素个数 +func (self *Stack) Count() int { + return self.size +} + +//检查栈是否为空 +func (self *Stack) IsEmpty() bool { + return self.size == 0 +} + +//检查括号字符串匹配 +func isValid(s string) bool { + stack := NewStack() + var last rune + for _, v := range s { + switch v { + case '(', '[', '{': + stack.Push(v) + case ')': + last = stack.Pop() + if last != '(' { + return false + } + case ']': + last = stack.Pop() + if last != '[' { + return false + } + case '}': + last = stack.Pop() + if last != '{' { + return false + } + } + } + return stack.IsEmpty() +} From 35bb692b8511b147f511fec676a5338748a8efe5 Mon Sep 17 00:00:00 2001 From: zjg23 Date: Wed, 17 Apr 2019 17:57:27 +0800 Subject: [PATCH 057/780] =?UTF-8?q?=E6=8E=92=E5=BA=8F=5F324=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_27/LeetCode_324_027.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Week_01/id_27/LeetCode_324_027.java diff --git a/Week_01/id_27/LeetCode_324_027.java b/Week_01/id_27/LeetCode_324_027.java new file mode 100644 index 00000000..5448c37d --- /dev/null +++ b/Week_01/id_27/LeetCode_324_027.java @@ -0,0 +1,21 @@ +class Solution { + public void wiggleSort(int[] nums) { + + + int arrLen = nums.length; + int[] tmp = Arrays.copyOf(nums, arrLen); + Arrays.sort(tmp); + int pos = 0; + + int smallIndex = arrLen % 2 == 0 ? arrLen / 2-1 : arrLen / 2; + int bigIndex = arrLen-1; + for (int i = smallIndex, j = bigIndex;; i--,j--) { + if (pos >= arrLen) break; + nums[pos++] = tmp[i]; + if (pos>= arrLen) break; + nums[pos++] = tmp[j]; + } + + + } +} From 8ced29ebfee5b4c3201d65125d32ed73596a14a9 Mon Sep 17 00:00:00 2001 From: zhaowende Date: Wed, 17 Apr 2019 18:38:50 +0800 Subject: [PATCH 058/780] =?UTF-8?q?=E6=8F=90=E4=BA=A4LeetCode=20922.=20?= =?UTF-8?q?=E6=8C=89=E5=A5=87=E5=81=B6=E6=8E=92=E5=BA=8F=E6=95=B0=E7=BB=84?= =?UTF-8?q?=20II?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_123/LeetCode_922_123.go | 22 ++++++++++++++++++++++ Week_01/id_123/LeetCode_922_123_test.go | 13 +++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 Week_01/id_123/LeetCode_922_123.go create mode 100644 Week_01/id_123/LeetCode_922_123_test.go diff --git a/Week_01/id_123/LeetCode_922_123.go b/Week_01/id_123/LeetCode_922_123.go new file mode 100644 index 00000000..c64df1e8 --- /dev/null +++ b/Week_01/id_123/LeetCode_922_123.go @@ -0,0 +1,22 @@ +package id_123 + +func sortArrayByParityII(A []int) []int { + newArr := make([]int, 0, 20000) + + evenArr := make([]int, 0) + oddArr := make([]int, 0) + for _, v := range A { + if v%2 == 0 { + evenArr = append(evenArr, v) + } else { + oddArr = append(oddArr, v) + } + } + + for i := 0; i < len(evenArr); i++ { + newArr = append(newArr, evenArr[i]) + newArr = append(newArr, oddArr[i]) + } + + return newArr +} diff --git a/Week_01/id_123/LeetCode_922_123_test.go b/Week_01/id_123/LeetCode_922_123_test.go new file mode 100644 index 00000000..fe1674f9 --- /dev/null +++ b/Week_01/id_123/LeetCode_922_123_test.go @@ -0,0 +1,13 @@ +package id_123 + +import ( + "log" + "testing" +) + +func Test_sortArrayByParityII(t *testing.T) { + A := []int{4, 2, 5, 7} + log.Printf("sort before: %v", A) + B := sortArrayByParityII(A) + log.Printf("sort after: %v", B) +} From 91a485c57ca554c9a8d41a14130bb32eb8d4fb7e Mon Sep 17 00:00:00 2001 From: wangzhao Date: Wed, 17 Apr 2019 18:48:37 +0800 Subject: [PATCH 059/780] commit --- Week_01/id_85/ArraySortByParity.java | 74 +++++++++++++++++++++++++++ Week_01/id_85/ArraySortedFindMin.java | 55 ++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 Week_01/id_85/ArraySortByParity.java create mode 100644 Week_01/id_85/ArraySortedFindMin.java diff --git a/Week_01/id_85/ArraySortByParity.java b/Week_01/id_85/ArraySortByParity.java new file mode 100644 index 00000000..45846684 --- /dev/null +++ b/Week_01/id_85/ArraySortByParity.java @@ -0,0 +1,74 @@ +import java.util.Random; + +/** + * @Package: + * @ClassName: ArraySortByParity + * @Description: 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 难度:简单 + * @leetcode url:https://leetcode.com/problems/sort-array-by-parity/ + * @Author: wangzhao + * @Date: 2019-04-17 10:18:20 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +public class ArraySortByParity { + + public int[] sortArrayByParity(int[] A) { + + if (A == null) return null; + int prev = 0; + int last = A.length - 1; + + for (int i = 0; i < A.length; i++) { + + if (prev >= last) { + break; + } + if (A[prev] % 2 != 0 && A[last] % 2 == 0) { + int temp = A[prev]; + A[prev] = A[last]; + A[last] = temp; + prev++; + last--; + continue; + } + if (A[prev] % 2 == 0 && A[last] % 2 == 0) { + prev++; + continue; + } + if (A[prev] % 2 != 0 && A[last] % 2 != 0) { + last--; + continue; + } + if (A[prev] % 2 == 0 && A[last] % 2 != 0) { + prev++; + continue; + } + + } + return A; + } + + + public static void main(String[] args) { + int[] arr = new int[10]; + + Random r = new Random(); + for (int i = 0; i < arr.length; i++) { + + int a = r.nextInt(100); + System.out.print(a+","); + + arr[i] = a; + } + System.out.println(""); + System.out.println("-----------我是分割线-------------"); + int[] arr2={0,1,2,3}; + int[] result = new ArraySortByParity().sortArrayByParity(arr2); + for (int i : result) { + System.out.print(i+","); + } + + + } +} +//TODO: https://leetcode-cn.com/problems/sort-array-by-parity-ii/ 暂忽略 diff --git a/Week_01/id_85/ArraySortedFindMin.java b/Week_01/id_85/ArraySortedFindMin.java new file mode 100644 index 00000000..5c92e878 --- /dev/null +++ b/Week_01/id_85/ArraySortedFindMin.java @@ -0,0 +1,55 @@ +/** + * @Package: + * @ClassName: ArraySortedFindMin + * @Description: ***************************************************** + * **************假设按照升序排序的数组在预先未知的某个点上进行了旋转。 + * **************( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 + * **************请找出其中最小的元素。 + * **************你可以假设数组中不存在重复元素。 难度:中 + * @leetcode url:https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ + * @Author: wangzhao + * @Date: 2019-04-17 14:42:15 + * @Version: 1.0.0 + * @Since: 1.8 + **/ +public class ArraySortedFindMin { + + public int findMin(int[] nums) { + + if (nums == null) { + return -1; + } + if (nums.length == 1) { + return nums[0]; + } + int last = nums.length - 1; + int lastVal = nums[last]; + + for (int i = 0; i < nums.length; i++) { + + if (nums[0] > nums[last]) { + lastVal = nums[last]; + last--; + continue; + } + if (nums[0] <= nums[last]) { + break; + } + } + if (nums[0] < lastVal) { + return nums[0]; + } + + return lastVal; + } + + + public static void main(String[] args) { + + int[] arr = {3, 4, 5, 1, 2}; + + int result = new ArraySortedFindMin().findMin(arr); + + System.out.println(result); + } +} From 394ce843cdbaaf6c945a9013d65914ecc3d7b133 Mon Sep 17 00:00:00 2001 From: "guangjun.ma" Date: Wed, 17 Apr 2019 19:02:33 +0800 Subject: [PATCH 060/780] maguangjun: add 83 solution --- Week_01/id_58/LeetCode_83_058.java | 57 ++++++++++++++++++++++++++++++ Week_01/id_58/TestClass.java | 2 +- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_58/LeetCode_83_058.java diff --git a/Week_01/id_58/LeetCode_83_058.java b/Week_01/id_58/LeetCode_83_058.java new file mode 100644 index 00000000..f34a3c9d --- /dev/null +++ b/Week_01/id_58/LeetCode_83_058.java @@ -0,0 +1,57 @@ +package algorithm.Week_01.id_58; + +/** + * + * 83. Given a sorted linked list, delete all duplicates such that each element appear only once. + * + * Example 1: + * + * Input: 1->1->2 + * Output: 1->2 + * Example 2: + * + * Input: 1->1->2->3->3 + * Output: 1->2->3 + * 分析: + * 这里是一个排好序的数组,这样的话,我们就省掉了很多的事情, + * 只要拿一个元素和他后边的元素比较即可,如果相同则next指针指向它后边的元素, + * 如果不相同,则接着考察下一个元素 + * + * @auther: guangjun.ma + * @date: 2019/4/17 17:36 + * @version: 1.0 + */ +public class LeetCode_83_058 { + + /** + * ListNode节点定义 + */ + public class ListNode { + int val; + ListNode next; + ListNode(int x) { val = x; } + } + + class Solution { + public ListNode deleteDuplicates(ListNode head) { + //1、定义一个current指针,用于操作当前元素 + //head指针不动,只是记录链表头结点 + ListNode current = head; + //当前节点非空,当前结点的下一个结点也不为空,即不是空结点也不是最后的结点 + while (current != null && current.next != null){ + //当前节点等于下一个结点的值 + if (current.val == current.next.val){ + //当前结点的next指针,指向当前结点的下一个结点的下一个结点 + //即next指针掉过一个结点,指向它后边的一个结点 + current.next = current.next.next; + }else{ + //如果不相等,接着考察下一个元素,current指针后移一位 + current = current.next; + } + } + //返回头结点 + return head; + } + } + +} diff --git a/Week_01/id_58/TestClass.java b/Week_01/id_58/TestClass.java index 5649550c..6aa207a5 100644 --- a/Week_01/id_58/TestClass.java +++ b/Week_01/id_58/TestClass.java @@ -3,7 +3,7 @@ public class TestClass { public static void main(String[] args) { - + System.out.println("Hello World!" ); From 657841ccb872ba239edc076af7835f69459692f0 Mon Sep 17 00:00:00 2001 From: Niu Jin Date: Wed, 17 Apr 2019 19:17:29 +0800 Subject: [PATCH 061/780] =?UTF-8?q?=E6=A0=88=E7=9A=84=E5=89=8D=E4=B8=A4?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_21/LeetCode_020_021.cpp | 22 ++++++++++++++++++ Week_01/id_21/LeetCode_153_021.cpp | 2 +- Week_01/id_21/LeetCode_503_021.cpp | 36 ++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 Week_01/id_21/LeetCode_020_021.cpp create mode 100644 Week_01/id_21/LeetCode_503_021.cpp diff --git a/Week_01/id_21/LeetCode_020_021.cpp b/Week_01/id_21/LeetCode_020_021.cpp new file mode 100644 index 00000000..adef7452 --- /dev/null +++ b/Week_01/id_21/LeetCode_020_021.cpp @@ -0,0 +1,22 @@ +class Solution { +public: + bool isValid(string s) { + stack temp; + for (int i = 0; i < s.size(); i++) { + if (s.size() > 0 && isPair(temp.top(), s[i])) { + temp.pop(); + } else { + temp.push(s[i]); + } + } + return temp.size() == 0; + } + +private: + bool isPair(char left, char right) { + if (left == '(' && right == ')') return true; + if (left == '[' && right == ']') return true; + if (left == '{' && right == '}') return true; + return false; + } +}; \ No newline at end of file diff --git a/Week_01/id_21/LeetCode_153_021.cpp b/Week_01/id_21/LeetCode_153_021.cpp index 1a6474a4..b5121bb9 100644 --- a/Week_01/id_21/LeetCode_153_021.cpp +++ b/Week_01/id_21/LeetCode_153_021.cpp @@ -44,4 +44,4 @@ class Solution { return -1; } -}; \ No newline at end of file +}; diff --git a/Week_01/id_21/LeetCode_503_021.cpp b/Week_01/id_21/LeetCode_503_021.cpp new file mode 100644 index 00000000..2895587e --- /dev/null +++ b/Week_01/id_21/LeetCode_503_021.cpp @@ -0,0 +1,36 @@ +// 暴力破解方法 +class Solution { +public: + vector nextGreaterElements(vector& nums) { + vector result; + + if (nums.size() == 1) { + result.push_back(-1); + return result; + } + + int i, j; + for(i = 0; i < nums.size(); i ++) { + + if(i == nums.size() - 1) { + j = 0; + } else { + j = i + 1; + } + while(j != i) { + if (nums[j] > nums[i]) { + result.push_back(nums[j]); + break; + } + if (j == nums.size() - 1) { + j = 0; + } else { + j++; + } + + } + if (i == j) result.push_back(-1); + } + return result; + } +}; \ No newline at end of file From f3972399ceb2c509aafd5cb242dccb66c64692a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Wed, 17 Apr 2019 20:24:12 +0800 Subject: [PATCH 062/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=9Aleetcode687?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-687.java | 49 +++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Week_01/id_52/LeetCode-687.java diff --git a/Week_01/id_52/LeetCode-687.java b/Week_01/id_52/LeetCode-687.java new file mode 100644 index 00000000..23a85c5d --- /dev/null +++ b/Week_01/id_52/LeetCode-687.java @@ -0,0 +1,49 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +class Solution { + int max =0; + public int longestUnivaluePath(TreeNode root) { + if(root==null){ + return 0; + } + maxL(root); + return max; + } + + public int maxL(TreeNode root){ + int leftL=0; + int rightL=0; + + if(root.left!=null){ + if(root.left.val==root.val){ + leftL=1+maxL(root.left); + }else{ + maxL(root.left); + } + } + if(root.right!=null){ + if(root.right.val==root.val){ + rightL=1+maxL(root.right); + }else{ + maxL(root.right); + } + } + if((rightL+leftL)>max){ + max=rightL+leftL; + } + int result=0; + if(rightL>leftL){ + result=rightL; + }else{ + result=leftL; + } + return result; + } +} From a3c2461dfde92aded9905105ca5716b79c104c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Wed, 17 Apr 2019 21:18:49 +0800 Subject: [PATCH 063/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=EF=BC=9Aleetcode503?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-503.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Week_01/id_52/LeetCode-503.java diff --git a/Week_01/id_52/LeetCode-503.java b/Week_01/id_52/LeetCode-503.java new file mode 100644 index 00000000..4814e255 --- /dev/null +++ b/Week_01/id_52/LeetCode-503.java @@ -0,0 +1,26 @@ +class Solution { + public int[] nextGreaterElements(int[] nums) { + if(nums==null){ + return new int[0]; + } + int[] result = new int[nums.length]; + for(int i=0;inums[i]){ + result[i]=nums[j]; + break; + } + if(k==nums.length-1){ + result[i]=-1; + break; + } + j++; + } + } + return result; + } +} From 1c8e9247d2681652cc1a5e4664104652ea9d5c30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=88=88?= Date: Wed, 17 Apr 2019 21:45:04 +0800 Subject: [PATCH 064/780] Create valid _anagram.rb --- Week_01/id_24/valid _anagram.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Week_01/id_24/valid _anagram.rb diff --git a/Week_01/id_24/valid _anagram.rb b/Week_01/id_24/valid _anagram.rb new file mode 100644 index 00000000..d7e3d4ae --- /dev/null +++ b/Week_01/id_24/valid _anagram.rb @@ -0,0 +1,22 @@ +# @param {String} s +# @param {String} t +# @return {Boolean} + +# 解法一 +def is_anagram(s, t) + source_hash = {} + s.each_char { |s| + if source_hash[s] + source_hash[s] += 1 + else + source_hash[s] = 1 + end + } + t.each_char { |t| + return false unless source_hash.keys.include? t + source_hash[t] -= 1 + source_hash.delete_if {|_, value| value == 0 } + } + return true if source_hash.empty? + return false +end From cbed247cb7db9bf1e7988b8a74a3f786ca9c1c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=88=88?= Date: Wed, 17 Apr 2019 22:18:36 +0800 Subject: [PATCH 065/780] Update valid _anagram.rb --- Week_01/id_24/valid _anagram.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Week_01/id_24/valid _anagram.rb b/Week_01/id_24/valid _anagram.rb index d7e3d4ae..8221d0cf 100644 --- a/Week_01/id_24/valid _anagram.rb +++ b/Week_01/id_24/valid _anagram.rb @@ -20,3 +20,25 @@ def is_anagram(s, t) return true if source_hash.empty? return false end +#解法二 +def is_anagram(s, t) + x = Array.new(26, 0) + for i in 0..s.length-1 do + value = s[i].ord - 97 + x[value] ? x[value] += 1 : x[value] = 0 + end + for j in 0..t.length-1 do + value = t[j].ord - 97 + return false if x[value] == 0 + x[value] -= 1 + end + return true if x.sum == 0 + return false +end + +# 解法三 +def is_anagram(s, t) + s_sort = s.split("").sort + t_sort = t.split("").sort + s_sort == t_sort +end From 7b0ed257f4d86976c4622495bfde2dd4c61177a4 Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Wed, 17 Apr 2019 22:23:35 +0800 Subject: [PATCH 066/780] https://leetcode-cn.com/problems/swap-nodes-in-pairs/comments/ --- ...55\347\232\204\350\212\202\347\202\271.cs" | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 "Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" diff --git "a/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" "b/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" new file mode 100644 index 00000000..49a64ccc --- /dev/null +++ "b/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode.两两交换链表中的节点 +{ + + public class ListNode + { + public int val; + public ListNode next; + public ListNode(int x) { val = x; } + } + + public class 两两交换链表中的节点 + { + public ListNode SwapPairs(ListNode head) + { + ListNode a = new ListNode(int.MinValue); + ListNode b = head; + ListNode c = head?.next; + a.next = head; + head = a; + + while (b != null && c != null) + { + var temp = c.next; + c.next = b; + b.next = temp; + a.next = c; + a = b; + b = b?.next; + c = b?.next; + } + head = head.next; + + return head; + } + + public ListNode SwapPairs_recursive(ListNode head) + { + if (head == null || head.next == null) + { + return null; + } + + var next = head.next; + head.next = SwapPairs_recursive(next.next); + next.next = head; + return next; + } + + public void Printf(ListNode ListNode) + { + while (ListNode != null) + { + Console.WriteLine(ListNode.val); + ListNode = ListNode.next; + } + } + } +} From 559086a59d5cb62183096afde02b3e0fd2a24023 Mon Sep 17 00:00:00 2001 From: hongchao6 Date: Wed, 17 Apr 2019 22:26:02 +0800 Subject: [PATCH 067/780] week_01 code --- Week_01/id_131/LeetCode_20_131.cpp | 65 ++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Week_01/id_131/LeetCode_20_131.cpp diff --git a/Week_01/id_131/LeetCode_20_131.cpp b/Week_01/id_131/LeetCode_20_131.cpp new file mode 100644 index 00000000..720aff01 --- /dev/null +++ b/Week_01/id_131/LeetCode_20_131.cpp @@ -0,0 +1,65 @@ +class Solution { +public: + bool isMatchStack(stack &strStack, char c) + { + if(strStack.empty()) return false; + + switch(c) + { + case ')': + { + if('(' == strStack.top()) + { + strStack.pop(); + return true; + } + break; + } + case '}': + { + if('{' == strStack.top()) + { + strStack.pop(); + return true; + } + break; + } + case ']': + { + if('[' == strStack.top()) + { + strStack.pop(); + return true; + } + break; + } + } + return false; + } + + bool isValid(string s) + { + if(s.empty()) return true; + + stack strStack; + for(int i = 0; i < s.size(); ++i) + { + if( (s[i] == '(') || (s[i] == '[') || (s[i] == '{') ) + { + strStack.push(s[i]); + } + else if( !isMatchStack(strStack,s[i]) ) + { + return false; + } + } + if(strStack.empty()) + { + return true; + } + else + { + return false; + } + } +}; \ No newline at end of file From 7582095699b0e99ba9e3d037c917d6dce9963beb Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Wed, 17 Apr 2019 22:30:46 +0800 Subject: [PATCH 068/780] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" "b/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" index 49a64ccc..d1331764 100644 --- "a/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" +++ "b/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" @@ -43,7 +43,7 @@ public ListNode SwapPairs_recursive(ListNode head) { if (head == null || head.next == null) { - return null; + return head; } var next = head.next; From 7b37453c7c4fdd06049e47b623fbd5a9414f8cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E8=91=86=E7=91=9E?= Date: Wed, 17 Apr 2019 22:31:47 +0800 Subject: [PATCH 069/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9Aleetcode20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_52/LeetCode-20.java | 62 ++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Week_01/id_52/LeetCode-20.java diff --git a/Week_01/id_52/LeetCode-20.java b/Week_01/id_52/LeetCode-20.java new file mode 100644 index 00000000..75e3a959 --- /dev/null +++ b/Week_01/id_52/LeetCode-20.java @@ -0,0 +1,62 @@ +class Solution { + public boolean isValid(String s) { + if(s==null){ + return true; + } + char[] chars= s.toCharArray(); + int num1 = 0; + int num2 = 0; + int num3 = 0; + for(int i=0;i Date: Wed, 17 Apr 2019 22:34:07 +0800 Subject: [PATCH 070/780] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../id_2/LeetCode_21_2.cs | 0 .../id_2/LeetCode_24_2.cs | 0 .../id_2/LeetCode_83_2.cs | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename "Week_01/id_2/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.cs" => Week_01/id_2/LeetCode_21_2.cs (100%) rename "Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" => Week_01/id_2/LeetCode_24_2.cs (100%) rename "Week_01/id_2/\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.cs" => Week_01/id_2/LeetCode_83_2.cs (100%) diff --git "a/Week_01/id_2/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.cs" b/Week_01/id_2/LeetCode_21_2.cs similarity index 100% rename from "Week_01/id_2/\345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.cs" rename to Week_01/id_2/LeetCode_21_2.cs diff --git "a/Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" b/Week_01/id_2/LeetCode_24_2.cs similarity index 100% rename from "Week_01/id_2/\344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.cs" rename to Week_01/id_2/LeetCode_24_2.cs diff --git "a/Week_01/id_2/\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.cs" b/Week_01/id_2/LeetCode_83_2.cs similarity index 100% rename from "Week_01/id_2/\345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.cs" rename to Week_01/id_2/LeetCode_83_2.cs From 8a1c0b3e77ab492ddd4ec50601dd9eaf14ed3225 Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Wed, 17 Apr 2019 22:39:37 +0800 Subject: [PATCH 071/780] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=96=B9=E6=B3=95=EF=BC=9B=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_2/LeetCode_24_2.cs | 9 --------- Week_01/id_2/LeetCode_83_2.cs | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/Week_01/id_2/LeetCode_24_2.cs b/Week_01/id_2/LeetCode_24_2.cs index d1331764..feeb3f4a 100644 --- a/Week_01/id_2/LeetCode_24_2.cs +++ b/Week_01/id_2/LeetCode_24_2.cs @@ -51,14 +51,5 @@ public ListNode SwapPairs_recursive(ListNode head) next.next = head; return next; } - - public void Printf(ListNode ListNode) - { - while (ListNode != null) - { - Console.WriteLine(ListNode.val); - ListNode = ListNode.next; - } - } } } diff --git a/Week_01/id_2/LeetCode_83_2.cs b/Week_01/id_2/LeetCode_83_2.cs index e98331f1..3d5b302c 100644 --- a/Week_01/id_2/LeetCode_83_2.cs +++ b/Week_01/id_2/LeetCode_83_2.cs @@ -41,7 +41,7 @@ public ListNode DeleteDuplicates(ListNode head) return head; } - public ListNode DeleteDuplicates_1(ListNode head) + public ListNode DeleteDuplicates_recursive(ListNode head) { if (head == null) { From 6b6ee2c5f3dfba900873417bc946f2f6a6061c8b Mon Sep 17 00:00:00 2001 From: GradyWong Date: Wed, 17 Apr 2019 22:53:12 +0800 Subject: [PATCH 072/780] Create sortArrayByParity.java --- .../sortArrayByParity.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Week_01/id_69/sort-array-by-parity/sortArrayByParity.java diff --git a/Week_01/id_69/sort-array-by-parity/sortArrayByParity.java b/Week_01/id_69/sort-array-by-parity/sortArrayByParity.java new file mode 100644 index 00000000..5783aec4 --- /dev/null +++ b/Week_01/id_69/sort-array-by-parity/sortArrayByParity.java @@ -0,0 +1,18 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + + int[] tempArray = new int[A.length]; + + for(int i = 0, length = A.length, odd = 0, even = length - 1; i < length; i++){ + if (A[i] % 2 == 0) { + tempArray[odd] = A[i]; + odd++; + } else { + tempArray[even] = A[i]; + even--; + } + } + + return tempArray; + } +} From 42016e9a5060c423569e9372a6580a8068119d56 Mon Sep 17 00:00:00 2001 From: GradyWong Date: Wed, 17 Apr 2019 22:55:15 +0800 Subject: [PATCH 073/780] Create sortArrayByParityII.java --- .../sortArrayByParityII.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java diff --git a/Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java b/Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java new file mode 100644 index 00000000..747c141b --- /dev/null +++ b/Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java @@ -0,0 +1,17 @@ +class Solution { + public int[] sortArrayByParityII(int[] A) { + int[] tempArray = new int[A.length]; + + for(int i = 0, length = A.length, j = 0, k = 1; i < length; i++){ + if (A[i] % 2 == 0) { + tempArray[j] = A[i]; + j += 2; + } else { + tempArray[k] = A[i]; + k += 2; + } + } + + return tempArray; + } +} From 50b7070b5c4862bc6697ec6cace9461daacca382 Mon Sep 17 00:00:00 2001 From: GradyWong Date: Wed, 17 Apr 2019 23:03:26 +0800 Subject: [PATCH 074/780] Delete sortArrayByParityII.java --- .../sortArrayByParityII.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java diff --git a/Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java b/Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java deleted file mode 100644 index 747c141b..00000000 --- a/Week_01/id_69/sortArrayByParityII/sortArrayByParityII.java +++ /dev/null @@ -1,17 +0,0 @@ -class Solution { - public int[] sortArrayByParityII(int[] A) { - int[] tempArray = new int[A.length]; - - for(int i = 0, length = A.length, j = 0, k = 1; i < length; i++){ - if (A[i] % 2 == 0) { - tempArray[j] = A[i]; - j += 2; - } else { - tempArray[k] = A[i]; - k += 2; - } - } - - return tempArray; - } -} From 369b7ecacda7b905f1072aff13da2914ee4c5ad6 Mon Sep 17 00:00:00 2001 From: GradyWong Date: Wed, 17 Apr 2019 23:04:38 +0800 Subject: [PATCH 075/780] Create sortArrayByParityII.java --- .../sortArrayByParityII.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java diff --git a/Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java b/Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java new file mode 100644 index 00000000..747c141b --- /dev/null +++ b/Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java @@ -0,0 +1,17 @@ +class Solution { + public int[] sortArrayByParityII(int[] A) { + int[] tempArray = new int[A.length]; + + for(int i = 0, length = A.length, j = 0, k = 1; i < length; i++){ + if (A[i] % 2 == 0) { + tempArray[j] = A[i]; + j += 2; + } else { + tempArray[k] = A[i]; + k += 2; + } + } + + return tempArray; + } +} From 6b17b70876367699123b3a2df10a64a6930d6c88 Mon Sep 17 00:00:00 2001 From: liyanling Date: Thu, 18 Apr 2019 00:15:37 +0800 Subject: [PATCH 076/780] update graph for leetcode25 ,and add solution for leetcode905 --- Week_01/id_118/Array_leetcode905.java | 48 ++++++++++++++++++ ..._leetcode25-\345\233\276\350\247\243.pptx" | Bin 0 -> 58009 bytes 2 files changed, 48 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode905.java create mode 100644 "Week_01/id_118/LinkedList_leetcode25-\345\233\276\350\247\243.pptx" diff --git a/Week_01/id_118/Array_leetcode905.java b/Week_01/id_118/Array_leetcode905.java new file mode 100644 index 00000000..8421cd96 --- /dev/null +++ b/Week_01/id_118/Array_leetcode905.java @@ -0,0 +1,48 @@ +/** + * https://leetcode-cn.com/problems/sort-array-by-parity/submissions/ + */ + +class Solution { + public int[] sortArrayByParity(int[] A) { + + // 1. 边界处理,长度 <=1 什么都不做 + if(A.length<=1){ + return A; + } + + // 2. 定义前后索引 + int left = 0; + int right = A.length-1; + + // 3. 移动元素 + while(left(;H$(}xVUOm`st+E@SfbU(w_<^ zAT1+6Hn?kbutCjNMnB~LYJ?7x0J!hI?$~dVR7{b6+QJMvkbo%MmH!37EDIgu=i~8^ zO(eakFk~;*jc8@7Gru@ z+}M%cBAE%b(dL&ig^4rHpp&{lQ8^NWc5-Z~yg*Sp5(Bg3u#=`hkw#;rT=D9Nd{$P6 z+Z{^{Z~u8(MhPWWR1aI%3s<_T&{+Tk>C^ozCeKF{$Efxdv?kN z`5xK*M)J>ZsOvfyTRGCw{ImbR5dR;H>;KL53c#8K2>mz2!L|s-y;;{N2xqNqg^n|a zUx5r6+Oaoq#ENFSI&-)6^{M?k$H#f`wusejA8k;s66#=edh5#gW0!i>wkX|f@X(s^ z8S+`#z-6J~67=V^bSkpVglGiaYv>~cZq$2waIOl*J@7+Xq2s(xoCw(W9i%!VOSWo$ zx0an@r}{ADq|yy6l8I?Lg5_}wz2a$d7%&Z!Ig2%fmP-9@GDe>o z2*^O!$W#pt$@IK28^TPi)_K4x{gO6&am}4}R+;mj<`m63>L?1cEyhqE6lz6@IZ#}*y0>YosBSP@HK%X#JuwH9k6^kyJ=u+EA9%Tya zHDgbQoP|4Tm_g{)cs7{HfX4V#N$9R8dcLTviNYIudR)rB32SzxihsRG>}xsKIy2Xh zZYs{}6EWA#E{TRM$drbvD7p@uy!)-bFp3H>Crx8w)0*eMx^AdN)X?)i^8fET{r~Q| zMgKppb5FY>G^^He1|m=ylYB5}0-wZ)5~cN+f3`z7tmF{)3p`WSve zN^AraD<_^vEFT-)tKSG(bZi-h_^{aYTH|ZE?X!`Ezi#%CBg#M*=@J2x61ACT{7Llk zCGiA@V3O2#B}l8fIO5(+6Y>Y9AmfuLopZ6COa3j^VLG*YbZ(N_GgUu>Ze;^^S2$k> zsjCX>QbZ}R3cN0_k~Gwb_)=vqHkto>;3*h+mXW`Mt_%tUga-uq<;}$jx^#;a3$nGBd2=@yclzLSc$3)YyxH=KOq=KHAgeLhMq}v9U);e%LzBEZA zGg*$Pzp}kgla~m!AWohNy8-<`>>n0T*CF;qY8L>~+4SGU)mNEdGVlIOsx9LHF4;M- zr#%=lIEIxrr0t~zk{ao&Yuc5jD&?@JruXCNKx9$7*|I(iGVcKX9+}S;cci&L*}*NT z$b`eJQM9>BwWB|bjb!}xzve|)z~Uz0Zpg@Ucm-C{Avj5E(du;+GH{*i<2@Y#J03E@ zm3>pcZ8wfnVHQ#TE@U7~65;a0EYgDVKEs6DerLk}Nhp8Qj(7yW3-H9Z-bVSp;-9?w z|7O&AvUc<;9m3ES@Z{vmKKPnCZV!qHm0#owNChbVX=${QRBWMpZt3; zSSWsTmXxjn;#W%;Ng~)&I+;)}PMJ|d{n?e0`^{bq)=opFi5@6$75&w)b0Cj(@WjI7 zqF4IX4jn2>vSsA41@tDm!dy8q7=0GgR-LB{?=dAUlgRh3oCz8M=-8RAgyX48M9n@U z=5f`~5|#QgFzO0^(K+R%ii|}eWSR@WYy3sI-sCHx6v$AF!0>RuQAF|Z(NZpKIzzLf9L~uXJZUGsRnqXMh?{SR7>niv8}$w9?df-s;}?A0 zGsu5Sy0Hhbjhq=YF^TK)7*N^=k@u}^WAIQ*c{oM+1ZeO z1zuTS=3eJnUE%b4xIEPL;_%yCXJg;sSYKJ?f)i9J!Z*O}D>!fyrSNZ2QjV~_GGe=C<*MjKRbG_)5mvMk~lcD>`z7t&; zL}zDvx^E^D2O@Gvf-i^+4g`9uU!atz(g;z!uOg51LBv|;#-YsDiQS-_`w2Pjx%E@D zO!Q@DSBlv#~w{=eTkNA!JfT-KCjfu_6M{~!iW}UHs3p@_Cf(|dYgvZCHw}3PFlji}3=gg^O zSKfHvL)*L7O_e79_^%ti^5*u|8P1I-(Klm-1VNeTi-0*Vz~lOdYy#_}tc))E$NQ%Z zv+vcfKHUyL?e0%kR@jkx zJJV`cj5ImqiW6`D zi^*nk_Uz)ONE*_%AQ4kIe9hr}}u%6~;`wf4L?hITQWWT7s9Bsdj9bH*t zR<~GKFYz9_=uRFSyt0yBHYRExtiEL7WiM?gqD8E1GFW`+gxz(FJdd_s#$R0F@Nk$c z@vTLcXhM!u2BSPX^8>oMPA`@n7T%v0cU-z2HzqFTHn-t@SI_V~=GQhGo35;IadB)j zyPTd!ZyvYF6H0GSmcAUyUDqdz=eQ7cc{~n27jG^L%oli@x|@;E9dFc|9(B3T z;cMKzu*lKqSp8vm%VanA+dr^xc-T8VaB^TO#Ufd0Xp_I zyLtn?*n8Xc!#+|&{EWc?ZRPCn;eP7;e-L4|ogX1G<9-RaAhn8=!)Tgljgv8k-z(yx zLQuk~;B?T#b-lyb*}XmV^P?>%>(W{a#1Y_p_S^pYTD!vg+C4JmeVK^g`kKpc-t>O2 z_g$gW78cb9)JO=}DFh6i)3)Id3Kjrn0~6H5O@xMayjM=QDwCs|cs*yi>f-0#H}O+f z)tu8SCuD7|qb;^hupb7HbwJl0X=TTRv1AHaU=Jz66w)G6#zIvFm^(YfU7>7bWjr-K zt2cQcL__u5B5Nnz5x7`5h^=bnkkL|D4V(RsT7?t$-MGu1th|^7yTZc@fj;X<|YK zmGKjvTmd4K%RgSme_KXU5H-wZv0$FcgoUnX%%lk2%;aTKTm`=&Z6z%gQ^(NcgL8qK z(GV?wl!af81zUC4q^N!hR$guoQ!?YFfsYXzW6qe7F@lM4B9wesb;7D~+{)uzDkQ-V zaU{egkqN(0X~qn+uM$`vdh9m@O-^PWd0R;;WOM&*YTXepT_BF8B+Xm!pB0M5paVu* zFDGAD%i;)v+1M2pW91Wyi3x--dSZx8H)tOF%<5kbIe*2kGelEOOjO3}%24dg;%WBA zM)AE)dBcj;R9G%Au5iDWet^T5VuzD&JnaP{1V%)-khGv!`-dM8VV7$TFc)Pzc!WD2 z?m`@CSZl)qDyln>my>~rO*$$+6XT<6pm!fN=qOAy{YzUI zXm2oh+#A$S3J$6$AC1dZcNC@f`rym+w&`i=`{tYN^$`)%{k+EO_564-Ej2dBy?olK z^b7TX5UFI)h6m33dytDGc3WSAd;`4CuW^rdm{4*ZkUI;167w&V+ za`9&Ky6e&O*Ymr?-R;JNukYSaz|4c~vw+HD)P_!V zX3K#~SA(m=>+Q_sAD}!?Y1hv>p0?&Cp)`6t7)XBdTf2sDCZuS-SXFWbHJ^HVHk?_IDI{DO5Nn z|DDpdVOm1 zm8?QeE!S?t;>PZ8n@w&_IhUnO{yZrKnFWlVS67X`)Q^J^h@rgjUMgg0R1?uo=SNBu zm2aCClLI%lyuqhjg!a)OQ>Gj~U7=9_34QuxJ>WUMM3&9p=%HGqD9~joR4;kZL8#D_ zC{@JGW1UsQ}{zAaVVZr#VqpGS{C=bVk@{_`z zlv=E$u;>Gb7{$ODl#_}S77+*v$mY`zkmi87nCbEX+6QB0Wx5JAT$8>1%{_F^eY(7So@a`7|FyDVS7E$SnXm zOcepH2Mml=#Sz-5^Tso)VujRQ*a4(E3@UDR5}XkuZNv`@LBvtSgC%Lzl`pGl)!MPx z0&R`X%=<1`cP;G_SM%bM+1hZiqa?#Ocwj@QK_%(}0WaLlQKp6iMu&4MwSkn)eM zS++5r3YF%+wJs4OZ0p80lofP`&!~&={YXi|$E0aH+E@`6$Z!8Ef6zn&M8wJ&!C zsQKXn5a)v%;D(5guoJ5$pCmZ9tTI@GwGX0%3jwqALrpT+Ie_|eFH=?=qNOnCa-odk z6#L5txMGnziQLLbSLd#!RI1)8L=|Igl6XW!+$D-X^!$QUePwB=naZXGiI}+FX^mq8 zQk%n0#tU^tRMAxYk@JP8KBt2UkH?aWO*T}{7KSGskV_B3<@qSvIcAOJ?0oulQ{^=c zE``6`wtrwMi%wiRU6XsclqnpdQpTHz#s*{+|5^R;@9ez^r&=Z%3DWb&b=6Q zxD!sf8yNb3@}qM>`AF*oxUy8|awBRW_rwaFAouq|oABLQK@U1&nr3~~yCH#Li;P4> zU|qQJ9N5=)h}^CDwkPaN4?AZAPlcjLG+a1`lnV0j@rL6JNjzEx8-g+59Hl8VTc5T` z^xY?5AHx2~0)Sk)JsuE2^$66BkROdJQ0}F$R4^G^tp5lA9!M$HX2fCcmuJK&UvF^} zO0)h3G}Q`>``>b--Vm5S3U+bY2#NVrXI!em9tmSsE2$e6(xY8UL4E%~bV-gjR}Pw1 zK;N_;QF;gro8K`XU;MI10TqArIAhKaQR}b^T@{Pu3cXzUKcsPw1nv7uh~kpCS5@nj zLV)6i0AsdI?in;209cea6rQ(OTrDl0mE=<*dtC_phXYi|v}B=sS~rHn!rmq?r8Ra- z1Sl#^`!wtken1`B0A`~QURW=q< z>I_thXbi?vSJtmTiGe02@k9E9kgNwh^zx&O9@Iz?h}*{{vCtJmC9y1XYewq$8?;pz zEX*!W%vP;Ls%URSHgS-k!$4rd0xP>q*C&zCz0^e$k2jLYPBw;tmK1S0uadSk_s8<|XD-BdB;oM3HR8k@OGs9kHVh-ex z)C211j7P#nS+z58VMdb7>48%FvI_9(M*IRy{sXDl&qJn{t&bnUR64g+jgvCom^9gQ zTUFPkHN+V#Vo?%9897HGq3%Y+pQsbG*Ss50%dtgy;1zQ>=%ngy$b)p&Iiji>%;yw^ zpEJH!L$7gJId7oi3@DzHloMvi<=9$y`6dahc#=_nmqONAbp~|@VLSqVfVh9MRsbpS z9~TUT{VWT1OJFZjTcd3UtxYuw%hBC?q!Rq`hRKh=QH5p6)6SiNCzqn~UpVk?(yAw7 zpaEl9B0$;xAP03pn7>g9@Tm=n>4@(NzOs0>3&TrTHjNV~6AY^$(U+g`rUg|OM@IqlZ#!>WZukAJc-+3GjSSHv>BtmPWl*$~Q$u*NT6AU4S?=z(D>UBFluA6l|?>}_C-#cTn zI_@^LbQZXHG<|Qg?_lAZJZKY-_*%){{6aX{ky_fJE`Cl(d&b^U%v5AOH8s_PEqC}| z+S=gQ;{M9q=Y>KNCEj^C+UCvL+Th&i%5H*teEj)0aeU)nnrn}db?b!@-pi-Z{pIqo zyZdIZ_xRP-lYr-R(58B6a@B!Tca?MG^5Nf-%kUq`CHuw<=gRxE_1mh`_0zK9sH;71 zkEZz@85s>=AxUW?Ny1gqbRTJb;=%y2RMr*s>>#+%Tvc}vi7w-S4TKpZ?8V}D2lxXk zVtJwP`BgFEk6qS9E*K$nz=RhgZ{ehmf{Hh_57L6E>WwUPO^CIaLHH%S_7N9%x|R?> zUioSgT(IXjW1$*0nC4cXLMpe3Wmh)5LV407vPX`HhB$IzHI?PdmnIi1-X*Yr_y&|Brnfo;GjC}?NgYZSs^pG`XGhVEC;f8OqAIvx1geA- zFr@it>K#I!o)%W5PMPqkVZDc2P^__JhZ+d$z&53Q2~r4!y_vO< zn7Md;jGw+L`xse(bZ-)A2*VFr>%>Yrr~;@#^UND@DpVK}0<+ca7Jq%Pe&}FJQXz>E zw)~DBLs2O0w31_^nO!kZ$URUdMR&Sr^LRfb5?vGSVth>CHJ1cb7)lHkIxSXm1&ubg z?>S6g_BIJA&VHDO>!CK2NHy{0)eqB?TbrWBx>3;WuZA{hivBYND$G)SS1?-0(J8Ty zYS>K52lG)X7&1VSH> z0btfeFh^reLw$|8tY83#lOo#;*qH)@&VA(vrDQdaIfl@LAih7NG@3d$M_q~dVw0Hu zERG_A^0CUo>Y_+W!YtJIUjr}PMryP>lmh767BEOv4J&LKKTZ;V$*hUr*iZNKLNays zV=OyvSrpoZ;;MXU3A1O%p$+9ufB(pX_d})-%Eh{6y@RI{un`rYBW+Y@-KVM~`@<_1 z07T>$2=~R=74kKdF(w12JFF#m`LhyIEge-7Pv`l|6bWi{#&>3`W?__3lBTT;;zU5G zl33tW5T_*$Aa$Y7h8Z|%4B?ikZ1{uA`JTxE-oD!8$>wu6{B4H>zBoYjEs0c|R}kpNY9 zpoG2g_u`elx|1~fiN3m;0z8VMhd(A9^e3vqdnz<1svM*`60fyYHfTR52sxM#Qjqkh zj`XrOw^H4o%Yik8yIXaQRGV-3PVj$Bw$_bj8K;ckV zW<0T|VmNbo;37!qR&eyl0I`g_y1y9~zb5X#*CI_U3A7^Bp%O*(^nk?KQd~j_D!;A6|_0s2|y>LfL76&Isu?cWJO4%C6JDijG)a0 zDN+u*>68u5SwdM>rtp|PxPL2>p@jS7;JfjFSSuDOD`%#oRinh-C@1x>I($QWR3olz7?3jX&lojhL~iA<>k*0vKO9#%Tic)K)- z`bQ>3CVVAkA1W%@{*pD=U6l=(CZ0P&;h`ob#Aw3ep$zf#tR{Bd@6*2(Ys&ShJ2|Ts z{+PEvN8XGfQIOP~ih2}BrgQWZ9u0T@;TcMds!TotJk%5To|DhV4U4|w9QVV zSgEWK-Db_G*jw`te3-v~V5#<8Gf54CGt&)8fFe9lf{-qq){4=HpO6Q`xIjvamMM%^ zY+knH2;dP1Fi*Gv6xi0NGExt_rOO!>*wi*JI#vRVG~CNnH8oX7%p?EqBh~BubQedr zWORr5Gu-MlUwe#B0im&&Y`&=SO=sdo^wuqxs*%!7O%$n3Ws58pYs>?yZKFs^iz{5T z+-&AjM3Rtc;gBPWLs56^9BO6|ow>r&HBG^+U38Xnk?~EMI*m=trOIgW7-4zkkwOQU zgbF`s+@RAOfzk4Vi0S0~nZ{|XyctFEauP=RjIn=_2#XI>z|(Y#Fk>Q}e^Mi3C;3ZDd{Hy3 zM30&&CwvqaeU&Ngj23=Lux}OKXP=*nBu%JJr;xRvND(Zu*^MHH3LsC&6S>|68nBX! zP3mJ>vu2SN{$o=nhKiONNU4govT^%v1wMW_Mo-a8)VxiM+Jj0U0wxsvvoerMjh-2m z4PT9_Kou&^Kf&jZBJ!U!*s@=iz;?{Ye}bGH=?@dNsqg7$Ul0t((HA@JDfG9^bbLd_ zUv^bIQ%y)HxuwU)?%t1tPwpp*f&Ug*PWOb7gPehNT5gRkgjh* zF)7?1g{RBK3J!dJ8EJ)DlDT9F*Yqa@!`479VX>I+j3Y4DCdSWJST9QEG_a zC_&{eLcakQb++D?dwZe4UXjsdLpH(OPFmYqbvBrP^{!XwXIi4@^SI#a`7N-|W}7n# zuL?WkaiGu7t6CnPPI~RN!EBw^NjTqe%5zm)zbKx*xGItFew=qaVSdh)7iX75fo7#r zORrp(7tP0|YahLq;jaKQfLOH5xX>`>w6!gvX(JTkI*XGgLyyiH@Y912hL{;lr*XKf zrT!QsF<ie-2|53b1i+&y2=`u<09=i|NK zp09n~?mzLm-N)!^nk?FeZ5{8t@p8Yd(Q5X)`rIEj<8^(BnCIQ` zZt=V=etF!sXD@&b8(h7_+jgY?9>?Q(KU_)o{W`Y%dfm^o5Y%+ zQoMTfzk00R!rZ(b!s~cBKH}whJ1+iyyEp(`-Ob(C8nDeW96!|>EGyptSC{Zn;;8ir z{t}3z*<0k7QaBQXLUdWYoyC5v1qd}{k|iX#JL4jEnT9h&Tbpd!Rh<;_sD#t0KMLRe zNE6pyo=$#Mlja&(_pYchi`81f zV&)0Clv&`FqaGUud8qOF`gFNAnrt%IaBKV&5d~pEDYT&lWt$(wuvJWHHTg8T%Ve}L zTHDz~h)OtF9kL*KQ_Jlt@{^&DtFpLK=SNDLUH?VU?g9tXhzO&AE&&0Lhc1q7yEsS= z>oiT(?gxiPgYif$V>yzFl^_la&74M9I=D$jUsgLLL899kt)d2MTg@_D<+4C9t|&|W zV>k0h(Or*PIfTO3YatYCm?aZeRAGv z=(B?UPdUksRxuk)Z$WW8C&Q4ig>6Q<{i~?QK7C#%&)A|^Z@PSQoN;~#h+qbBpB}!RJ zJj6n=6o|nb+gSo{9bDdcuV1TgQ+>Q&8Ak!YdavC4S zR1Y?4JEM*RJaTZVtb;wiH&JMYDS*;`ZZ}N>GbrN`b)df2K73DTZgt*bLCHFOc^ip) z#wjriBhOVu4;WAVm;XK}3?dv;aT3;014}(poz3z*MY~5{pu%3{iM}G`q`G;)3(Rqt zWTm@Ce3Ob<6%k2V6#yxYeKK?gA*zTE8e)_%#u!;aABJD9eK@!WRzPZ|4!4p!V!94> z)r=V*A39#zoywU+i9n1cjB=m7r_8H3agP%f?M#iZxm>Fsshm>~fr|0qRLeh#h41^l z?u0PjDb?%ue4s&jx(;$HbDSn}>)GOXcod3Nh~Dx7wGX0!2oX9X1~_yR+a^mG=nR43 z2xU@0zcEX_fVfyGPl=w|cY)ejy|k!}V>{cgsn9b~Jy0ViO{a|{;q~h>Hz|aTjm1y| zU|yi7nc^)5NUttv7}0t%Ng*ySxu#}3mQPfuP+uhDEgv-K(sxA{eE=3Uz_rV0>-`8+ zx5eZTDkL;K%DLKc5siw}yPo;T_!U=W1?EjuD3`{=<1AgABEp>JvDj8iWO+QCy;;;^!2&&0bjPXNnT@rqV z>n>YTeg|U`+FByHCShCy;r!L~cAbCgMzarZ>*Z zOsgVIxYU0tD8e(@Lnk4_tKhRnLX_=SjO1XS+E56p`w{>El5_Cl#V0ll(ly$pB5mmk z3L~$P5~ZmlKn{(Uhu6e+XExEdxJPSQ&dfu8{2Jw{K=CF17?N+VC?xwWWBH_{Lf)La zhevpENWyFSTyNUWtemCo?4!&X*;knhsm`P7VOTAq5Mk&B<&X5Tz7g|zs;e6S&&opi zx{Etj^Dfnm3FVm$9IzBcvZ_p2mePK{(5auCqo7)LKS|q{@ZA}h;7J1=9tJK7lN#;Q zVzfb@lPcQ7%EaE7(S}lDt*CM;+tMxb+TFFMHL05NwbTY6r3DVk=Ridce`04N37JO` zgDN7_zpmF~?xPB{6b_v`IJ4IGFF8SFnZznl$iq4mx*r=OX&2}Ks&1!2Na)!NdUKz) zm20{6xl4!@#MpNSTDAIH3lBpPrE&FZ!7V^9IK7;Imt6`iWR^TkZxAO7g^H^RhmtrT zlTFOfKY@E~<485Ii-eK_fMueolr5se&Mz8f?Egc6(ysMp#Zli27s8>1vs4aA61o(y zN{&z(kbwwXBYQVVt?p$zN8p0SZedXr->VQ6dM!z9>GujjgeMk3c@n)04Tu1k6~+SL zBMD(>s%}3W#NOiy_Pye{4I^;(>~^jHX!nJUf+Zy~wDI%fU-gfF)h{BFf`EJ7LDNG) z42-T5z@v?F`;7X9K0x*BkOXNJpkin1lu*xw$y0uvX{kE1sw#uW>J+z&bFTeLbIV47 zFI15KgIXAG!2}u@&w>J_HHJ&{TTj4+RYsHkZNcq{?KB_>`}0A3ZoWo zA5DTDRFB8?sG)%3o6!D*~Lw?zZoIFuaIkVKqa(npIPpM)&NL1byoIIgHtUyfO2?qQ;ZPU&Id zq7*nn#6$FV3|w&>LB}!+KvNdb*c{+l5a8q$2AJ#Bmt@_lB23^#rlF7XfQzX){wa?Kp+fl+p-=1LOsk6AD^P$~LX46yA(JWC-vic{hs1(U!w4}< zLNwY?r3&k5xvbg0$&3v0H|}%RU9_X!f`m(B0>y1VrSs-IRMQZlz@C3vPb|EiVZ^58 zE33O`N3|qTiN5DD;s=WZgX-IM<_1mzQszi7KC=R!3Rxl-#`HWi9``92t2Y@Py)wG~ zb^xs;I=@|+)EcBg9*sZJKyi5+WI2se-*E}&U*2~P?0t4^nbifmln5b=v772di9Zfp z?ME~(@98m8a!7LHWf-j3TMl|Qs^SS;&TQ*XOr=5!pG(a{lqixYCU`Y?^pXUP`i2UD zB%!~=TLC*B;)rZT2`mPw znMbdk6d!W2iz-qOmQ5;d=T)?#RlXud zbx4oQxB{G+1)KyJMxY566<)i=H512|5Nvcih5RrciagmMn<;;<=hYO;Ub7EtXi{(77QT5S*jxqLMLbXLREilDl2dzLlsil- zNcF@ysRqDvR~xTcUG!$tM17)L$HkiN2{eY!@^(`1Bu%fj+M~2>8l5cx@2JGb#aGR+ zwM`Aibqw47bf^^VKrJsXGp8#ghGdXQjCGvq^2|e9CQqzluj1tHNCqXBDqKUdNhPy# zCChc8zU^ic_LN%~lBWIIRg*STQ})cpIA^2CBs#lCvha5Udy5mMj}y8Cr3LG2~d7Y z6%6G+fw#{5xXuVsUVPD}!%6+O5y}plapRsmoz@v4#zvi>dgs37^mIx_%>jZ`OyJCm z*r*Q2^&R2xo?j~8K-N-;!OOdAcWH#> zsW5U^a;JWh`k4`5e@D>i2|SUr3?2#QJxVv`hT z1|rW~SRX;M;33(~F)snM2S_-1BjUVw~ER=EIPwrqZt4`R{u1?`@OFpKIj znQ557#kR?W;jysg-NFRX78?*t1RSyrvgUK+ zLGJTamuAI@>2m3HmWJ!vAFgI`AiXAAYPf&&M{-Ml%JzuSYvWF{d_fLXH&h8EJK=|Q zsV=uDSewg$e$!;qHM5<$Pz3NRAS?TKVJ5cSNqe9q(Zz)EPua9akBK_UnbX}Iy*Y+T zU3|7Ex%6_xQgf=MKuOtJgW9*|kM-hq-#7bV5XWjFY!lfa2aQY|<_WC1@Rg|4eNHRT z%P6U}RoBYNLOq33eqDYg7C&VM;L@M|yT?-fJu_Plpnyacs?S_~C%ne15^ua%x~N@K zj)}pgQ)YZT*8@^?bu1Dx)wQ@Wu0s+6LSs{&R-KuEFyUs9+L{fDpTp=-BY{{ zDXpokFHaBm&(EoDULjqJ#ije-soQax{g`50A2w^voQNMc7gyqfTRJ{(XD?6La~JEh zk9#L1vUnb72R2n*_u<$rqOp-&hD}^mbtheI9v0YjzXme{WG-AR>8zgG zIGyi7E0#1iOl+GsI$IULHW_~mdswqsIJshH>NGbh`sOlM`0kB#f0kE2Rl{?(H@Z2w zx^>nnZsA3}E>&w|vpi`+MC~AV`jlh)uARZcVdXzN+uf~R=G=I3o$()G1;^@gnl-dP z>^}E03_U$Qu1+MKG27xcwB^4O2dEU&hpY0e+dhTF*FPk)Yx+)O4bB;fX15gl-pgdp zzC17L?*C*AP@(ib-TXYv`EvT=3^+e3w(&KUv%DHSQm%H!hPbJnuSVrXX*bqwZ?1=5 zGJ)%6e_3wvF}1ae{T%cx-&iRf3i%RvebQK6Y-22AzKfd3ublX>omy#by*fJgwr1#Q zGz=(eAEmv#zaZmj%?|l`j1RHx{<>CuvIt*@C~u|5k*+#h%;{A8(uZ88!y|*dLC%?$ z)8kUc*CXUc>ow@}O^6nG_i&sZ&3b4qVhDIHeR7(%f%E9!+&m65xyo_dL2eDJhMW8?;M5nKrDZ`dI@x^!J zvtD-D5?1C+)VXK*&#ot@c{JWof6#oK%O;3?B1Bwn_O7ox4J=w;)R)vLHgEg3laq)Y zne47bEST`8B$-WX?ysk}%E3!$!Ag(cjW?pcZ14L~H`vwOZC{_HHl-Lxt+1Q@0WrRB z$BD^sy06_g>D9h3C*^zamr-9YG4Q(H=I^%(DY2Pf>>WNpZPaSk0q^mSP&O7 zea7q4>$Wh#l{5F4+@52D)GLRXui3iq5BsMM6;=XHoRuZ7ZSwY33NEZ<)tqZC8|bRI z4N}XfVieZ#rVokYL#l zJ!lz5&Zbfm_Jc;^y7qEBW`_7V!QyszvS2`=`bc1PUKP4! znuiVnbYG1^l=~o=@KQ+MFI9``Qi?zFMYp15ivBuZr2P&x)aOpd)nMBC)eQ@1&Zuvv z+t=;6cnbdO$#u__$Ls#Zm&fa)8*aCh2TgxU-$}1&ToHJt^X4#4$@~v36ppS9$HM z;mtR`^Yi}XYPNXqk%Ul+0ss;%N29z0Bn5=N=d0WU%Mi*qqY2ZzV>WHJwT`!<(~KRr zguNd?4WwI~9%hfCx3w{`o0<7aHpsD&o*CM3w08oRH{I06`4F&ZLvP1%h@lb!W%Sb8 zwYEBzt;}Qcc&gdNSh8Uw)WMQAfng?1!@I_L(TG07%U#oRuMUCsW-4oDOS`#C0U;YR zED}w>dA}Xt(#)FT>OYftGW_!SvT@{^xvvl0e|Hl))o=K@J{lrgl@A|S3V~(#6DDd= z9O>_$!^Q8eijHE3D7SH`Cqh1fI(5_y6ctVKYts zf{maDbU&Y-KdUXFGDu(pOBOake*`+Cl_1EQ?RNjc46R7ULFx!MZ7JhT0Zd?^oArd^ zt3UG~GvW6UQ^26)jRi6O4Av<`j%RdhQ9(NfNJs zeVdq$hCdfEWRs9FX}b9?FRw1|rqy#15_zg#WlN8q0eItUS&uOen7)-$Mvt6Zr*N*P zgy72+I@rd#p`ii@xL14KT%PaAmz4qIB%&(|sGBeJqMc2w$GBeItji1L^Us|#)`PXK zrxP=Jw*%4OFIAoV^@YwnH}jmwtRk$0S?Tf3u|fx_oLjaquR&ZVCIarzL8}GpN7iW=)@*}{;9uk-U0EM71$PqLW9|;jYI0βGcB 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 Date: Thu, 18 Apr 2019 00:38:53 +0800 Subject: [PATCH 077/780] update solution for leetcode 922 --- Week_01/id_118/Array_leetcode922.java | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode922.java diff --git a/Week_01/id_118/Array_leetcode922.java b/Week_01/id_118/Array_leetcode922.java new file mode 100644 index 00000000..40d03f7e --- /dev/null +++ b/Week_01/id_118/Array_leetcode922.java @@ -0,0 +1,43 @@ +/** + * https://leetcode-cn.com/problems/sort-array-by-parity-ii/submissions/ + */ +class Solution { + public int[] sortArrayByParityII(int[] A) { + + // 1. 边界条件处理 + if(A.length <=1){ + return A; + } + + // 2. 分别定义两个索引,一个找奇数位,一个找偶数位 + // 这个地方容易陷入左右索引的思维定式。 + // 突破点就是,奇数位放奇数,偶数位放偶数,只要每次找到两个都错位的节点,然后进行交换就可以了。 + int even = 0; + int odd = 1; + + // 3. 移动数据 + while(even Date: Thu, 18 Apr 2019 07:11:27 +0800 Subject: [PATCH 081/780] =?UTF-8?q?=E5=BF=BD=E7=95=A5vs=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 706fd07f..639b29a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea .vscode +.vs From 14844a1149c8ab57052a027aea38a3d1109c0147 Mon Sep 17 00:00:00 2001 From: pangyanhao Date: Thu, 18 Apr 2019 08:10:41 +0800 Subject: [PATCH 082/780] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E9=81=93=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_9/LeetCode_83_9.cs | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Week_01/id_9/LeetCode_83_9.cs diff --git a/Week_01/id_9/LeetCode_83_9.cs b/Week_01/id_9/LeetCode_83_9.cs new file mode 100644 index 00000000..0ebbfe8a --- /dev/null +++ b/Week_01/id_9/LeetCode_83_9.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProblemSolutions +{ + public class Problem083 : IProblem + { + public class ListNode + { + public int val; + public ListNode next; + public ListNode(int x) { val = x; } + } + + public void RunProblem() + { + throw new NotImplementedException(); + } + + public ListNode DeleteDuplicates(ListNode head) + { + /* + * 当前结点,是在遍历的过程中做检测,是该移动一步,还是该排除掉一个重复的情况 + * 单链表基本操作的数量程度 + * 时间复杂度:O(n),只是一次单链表的遍历 + * 空间复杂度:O(1),使用的存储空间是固定的 + */ + + ListNode cur = head; + + while(cur != null && cur.next != null) + { + if(cur.val != cur.next.val) + { + cur = cur.next; + continue; + } + + cur.next = cur.next.next; + } + + return head; + } + } +} From 1110483edc81c9a9a169ac3890d442b6217c19d9 Mon Sep 17 00:00:00 2001 From: yuqiu <41912446@qq.com> Date: Thu, 18 Apr 2019 08:48:31 +0800 Subject: [PATCH 083/780] 01_922_valid-parentheses --- Week_01/id_6/LeetCode_922_6.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Week_01/id_6/LeetCode_922_6.java diff --git a/Week_01/id_6/LeetCode_922_6.java b/Week_01/id_6/LeetCode_922_6.java new file mode 100644 index 00000000..5d5a3bf7 --- /dev/null +++ b/Week_01/id_6/LeetCode_922_6.java @@ -0,0 +1,21 @@ + +// 新建数组,偶数插入偶位置,奇数插入奇位置 +// 两个指针分别指向偶、奇位置 +public int[] sortArrayByParityII(int[] A) { + int[] B = new int[A.length]; + + int odd = 1; + int even = 0; + + for (int i = 0; i < A.length ; i++) { + if (A[i] % 2 == 0){ + B[even] = A[i]; + even += 2; + }else { + B[odd] = A[i]; + odd += 2; + } + } + + return B; +} \ No newline at end of file From b55507791d6660136b4c36b1e69b642252330d1e Mon Sep 17 00:00:00 2001 From: yuqiu <41912446@qq.com> Date: Thu, 18 Apr 2019 09:05:59 +0800 Subject: [PATCH 084/780] 01_20_valid-parentheses --- Week_01/id_6/LeetCode_20_6.java | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Week_01/id_6/LeetCode_20_6.java diff --git a/Week_01/id_6/LeetCode_20_6.java b/Week_01/id_6/LeetCode_20_6.java new file mode 100644 index 00000000..307268ca --- /dev/null +++ b/Week_01/id_6/LeetCode_20_6.java @@ -0,0 +1,51 @@ + + + + // 利用栈实现括号匹配检查 + // 左括号入栈,右括号出栈 + public boolean isValid2(String s) { + if (s.length() == 0){ + return true; + } + + if (s.length() == 1){ + return false; + } + + Stack stack = new Stack(); + + char c = '0'; + char d = '0'; + + // 遍历str + for (int i = 0; i < s.length() ; i++) { + c = s.charAt(i); + if (c=='(' || c=='{' || c=='['){ + // 入栈时,压入对应的右括号,减少出栈时比对的复杂度 + if (c == '('){ + stack.push(')'); + }else if (c == '{'){ + stack.push('}'); + }else { + stack.push(']'); + } + } + + if (c==')' || c=='}' || c==']'){ + if (stack.isEmpty()){ + return false; + } + + d = (char)stack.pop(); + if (c != d){ + return false; + } + } + } + // 栈应该是空 + if (!stack.empty()){ + return false; + } + + return true; + } \ No newline at end of file From fad9611013c53d387670cd4f73cd029b928dabca Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Thu, 18 Apr 2019 10:45:51 +0800 Subject: [PATCH 085/780] =?UTF-8?q?905.=20=E6=8C=89=E5=A5=87=E5=81=B6?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=95=B0=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_2/LeetCode_905_2.cs | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Week_01/id_2/LeetCode_905_2.cs diff --git a/Week_01/id_2/LeetCode_905_2.cs b/Week_01/id_2/LeetCode_905_2.cs new file mode 100644 index 00000000..11cd7da8 --- /dev/null +++ b/Week_01/id_2/LeetCode_905_2.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode +{ + public class 按奇偶排序数组 + { + public int[] SortArrayByParity(int[] A) + { + int[] o = new int[A.Count()]; + int[] e = new int[A.Count()]; + int p = 0; + int q = 0; + for (int i = 0; i < A.Count(); i++) + { + if (A[i] % 2 == 1) + { + o[p] = A[i]; + p++; + } + else + { + e[q] = A[i]; + q++; + } + } + + for (int i = 0; i < p; i++) + { + e[q] = o[i]; + q++; + } + + return e; + } + } +} From d502f17c7f1494f99005b241e8087e3c268dcb90 Mon Sep 17 00:00:00 2001 From: "guangjun.ma" Date: Thu, 18 Apr 2019 11:00:11 +0800 Subject: [PATCH 086/780] maguangjun: add 21 solution --- Week_01/id_58/LeetCode_21_058.java | 61 ++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 Week_01/id_58/LeetCode_21_058.java diff --git a/Week_01/id_58/LeetCode_21_058.java b/Week_01/id_58/LeetCode_21_058.java new file mode 100644 index 00000000..f8d3010e --- /dev/null +++ b/Week_01/id_58/LeetCode_21_058.java @@ -0,0 +1,61 @@ +package algorithm.Week_01.id_58; + +import com.sun.org.apache.xpath.internal.WhitespaceStrippingElementMatcher; + +/** + * 21. Merge Two Sorted Lists + * Merge two sorted linked lists and return it as a new list. + * The new list should be made by splicing together the nodes of the first two lists.* + * 分析: + * 由于是排好序的,直接用归并排序的算法即可 + * @auther: guangjun.ma + * @date: 2019/4/18 10:33 + * @version: 1.0 + */ +public class LeetCode_21_058 { + + public class ListNode { + int val; + ListNode next; + ListNode(int x) { val = x; } + } + + class Solution { + public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + //创建一个虚拟头结点 + ListNode dummyHead = new ListNode(0); + //声明一个当前操作指针 + ListNode current = dummyHead; + + //当两个链表都不为空 + while (l1 != null && l2 != null){ + //从第一个链表l1取值,从第二个链表l2取值,如果小于l1值小,则加入到新的链表中 + if (l1.val < l2.val){ + current.next = l1; + //各后移一位,两个操作可以互换,不影响 + //l1后移 + //current当前指针后移 + l1 = l1.next; + current = current.next; + }else{ + //如果l1的值大,则将l2加入到新链表中 + current.next = l2; + l2 = l2.next; + current = current.next; + } + } + + //如果都插入完毕后,发现还有剩余的元素,则把剩下的元素全部,连接到新的链表中 + if (l1 == null){ + current.next = l2; + }else{ + current.next = l1; + } + //返回链表头结点 + //注意这里是dummyHead.next,虚拟结点的下一个结点 + return dummyHead.next; + } + } + + +} From 7bca37db8c849708bd4542211705aa28d5fdd22e Mon Sep 17 00:00:00 2001 From: suncen Date: Thu, 18 Apr 2019 11:19:24 +0800 Subject: [PATCH 087/780] =?UTF-8?q?83=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_126/LeetCode_83_126.java | 32 +++++++++++++++++++++++++++++ Week_01/id_126/NOTE.md | 9 ++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 Week_01/id_126/LeetCode_83_126.java diff --git a/Week_01/id_126/LeetCode_83_126.java b/Week_01/id_126/LeetCode_83_126.java new file mode 100644 index 00000000..8e48621c --- /dev/null +++ b/Week_01/id_126/LeetCode_83_126.java @@ -0,0 +1,32 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + + //排序好的链表 所以解题思路变得简单了 + //每一个和他的next对比,如果有相同的,就直接把当前的换成下一个node + //如果传进来为空,或者传进来的下一个为空就没有必要继续循环了 + //[1,2,1,3,3] + public ListNode deleteDuplicates(ListNode head) { + + if(head==null||head.next==null){ + return head; + } + + + if(head.next!=null){ + head.next=deleteDuplicates(head.next); + } + + if(head.val==head.next.val){ + head=head.next; + } + + return head; + } +} \ No newline at end of file diff --git a/Week_01/id_126/NOTE.md b/Week_01/id_126/NOTE.md index 0b7a1c9e..cf225da5 100644 --- a/Week_01/id_126/NOTE.md +++ b/Week_01/id_126/NOTE.md @@ -1,5 +1,10 @@ # 学习笔记 -解题思路: +21题解题思路: 技巧一:初始化的时候把head节点初始化一个给定的值,这样,后续操作就不用考虑头节点问题,直接排序好了,把最小的赋值给head.next就可以了。 -技巧二:两个链表为空和不为空的判断,循环逻辑依赖判断条件 \ No newline at end of file +技巧二:两个链表为空和不为空的判断,循环逻辑依赖判断条件 + + +83题: +刚开始没有注意到排序以后的链表,所以走了弯路。 + From 8c52869aeca1cbe4182fb576ded0b708fe3bceb2 Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Thu, 18 Apr 2019 11:54:27 +0800 Subject: [PATCH 088/780] =?UTF-8?q?922.=20=E6=8C=89=E5=A5=87=E5=81=B6?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=95=B0=E7=BB=84=20II=20https://leetcode-cn?= =?UTF-8?q?.com/problems/sort-array-by-parity-ii/submissions/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_2/LeetCode_922_2.cs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Week_01/id_2/LeetCode_922_2.cs diff --git a/Week_01/id_2/LeetCode_922_2.cs b/Week_01/id_2/LeetCode_922_2.cs new file mode 100644 index 00000000..f739f995 --- /dev/null +++ b/Week_01/id_2/LeetCode_922_2.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode +{ + public class 按奇偶排序数组_II + { + public int[] SortArrayByParityII(int[] A) + { + int[] o = new int[A.Length]; + int p = 0; + int q = 1; + for (int i = 0; i < A.Length; i++) + { + if (A[i] % 2 == 0) + { + o[p] = A[i]; + p += 2; + } + else + { + o[q] = A[i]; + q += 2; + } + } + return o; + } + } +} From b7f79bbd7a15cb397f851cafd02e76e50a1134c4 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Thu, 18 Apr 2019 13:11:09 +0800 Subject: [PATCH 089/780] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=A2=98=E7=9B=AEURL?= =?UTF-8?q?=20=E5=92=8C=20=E9=A2=98=E7=9B=AE=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/geek_test.go | 6 +++++ Week_01/id_7/merge-two-sorted-lists.go | 10 ++++++++ Week_01/id_7/single-number.go | 18 ++++++++++++++ Week_01/id_7/two-sum.go | 16 +++++++++++++ Week_01/id_7/valid-parentheses.go | 33 ++++++++++++++++++++++++++ 5 files changed, 83 insertions(+) diff --git a/Week_01/id_7/geek_test.go b/Week_01/id_7/geek_test.go index dd608f41..efa69293 100644 --- a/Week_01/id_7/geek_test.go +++ b/Week_01/id_7/geek_test.go @@ -32,3 +32,9 @@ func TestSingleNumber(t *testing.T) { nums := []int{3, 3, 1} t.Log(singleNumber(nums)) } + +func TestValidParenthesses(t *testing.T) { + t.Log("===========") + t.Log(isValid("()")) + t.Log(isValid("(]")) +} diff --git a/Week_01/id_7/merge-two-sorted-lists.go b/Week_01/id_7/merge-two-sorted-lists.go index 55a0964a..4cdacb2f 100644 --- a/Week_01/id_7/merge-two-sorted-lists.go +++ b/Week_01/id_7/merge-two-sorted-lists.go @@ -1,5 +1,15 @@ package geekcode +// 题目地址: https://leetcode-cn.com/problems/merge-two-sorted-lists/ +// 合并两个有序链表 +//将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 +// +//示例: +// +//输入:1->2->4, 1->3->4 +//输出:1->1->2->3->4->4 +// + import ( "log" ) diff --git a/Week_01/id_7/single-number.go b/Week_01/id_7/single-number.go index 4bf7c2cb..7bdaab58 100644 --- a/Week_01/id_7/single-number.go +++ b/Week_01/id_7/single-number.go @@ -1,6 +1,24 @@ package geekcode /* +https://leetcode-cn.com/problems/single-number/ + +给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 + +说明: + +你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? + +示例 1: + +输入: [2,2,1] +输出: 1 +示例 2: + +输入: [4,1,2,1,2] +输出: 4 + + 因为抑或满足交换律,所以, 乱序 也可以随意交换, 把两个相同的放在一起,抑或为 0 , 最后剩下多余的那个数字,就是出现一次的数字 diff --git a/Week_01/id_7/two-sum.go b/Week_01/id_7/two-sum.go index 81d44659..cd0485a3 100644 --- a/Week_01/id_7/two-sum.go +++ b/Week_01/id_7/two-sum.go @@ -1,5 +1,21 @@ package geekcode +/* +https://leetcode-cn.com/problems/two-sum/ + +给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 + +你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 + +示例: + +给定 nums = [2, 7, 11, 15], target = 9 + +因为 nums[0] + nums[1] = 2 + 7 = 9 +所以返回 [0, 1] + +*/ + func twoSum(nums []int, target int) []int { l := len(nums) hashNums := make(map[int]int) diff --git a/Week_01/id_7/valid-parentheses.go b/Week_01/id_7/valid-parentheses.go index e39d97e5..30ca00a5 100644 --- a/Week_01/id_7/valid-parentheses.go +++ b/Week_01/id_7/valid-parentheses.go @@ -1,5 +1,38 @@ package geekcode +/* +https://leetcode-cn.com/problems/valid-parentheses/ +给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 + +有效字符串需满足: + +左括号必须用相同类型的右括号闭合。 +左括号必须以正确的顺序闭合。 +注意空字符串可被认为是有效字符串。 + +示例 1: + +输入: "()" +输出: true +示例 2: + +输入: "()[]{}" +输出: true +示例 3: + +输入: "(]" +输出: false +示例 4: + +输入: "([)]" +输出: false +示例 5: + +输入: "{[]}" +输出: true + +*/ + // 用单链表来实现一个简单的栈, // push 操作为队尾添加元素 // pop 操作为从队尾获取元素,前边的元素的next 指向nil From cac2f18317a9933a19c9a153d81e562adeaa9e81 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Thu, 18 Apr 2019 13:18:03 +0800 Subject: [PATCH 090/780] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E5=8F=8A=E9=A2=98?= =?UTF-8?q?=E7=9B=AE=E5=AF=BC=E8=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/NOTE.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Week_01/id_7/NOTE.md b/Week_01/id_7/NOTE.md index 60762cb1..827330b5 100644 --- a/Week_01/id_7/NOTE.md +++ b/Week_01/id_7/NOTE.md @@ -1,13 +1,25 @@ # 学习笔记 -* 链表操作: +* 合并两个有序链表: [https://leetcode-cn.com/problems/merge-two-sorted-lists/](https://leetcode-cn.com/problems/merge-two-sorted-lists/) -* 栈操作 +[merge-two-sorted-lists.go](merge-two-sorted-lists.go) -[https://leetcode-cn.com/problems/valid-parentheses/](https://leetcode-cn.com/problems/valid-parentheses/) +* 只出现一次的数字: + +[https://leetcode-cn.com/problems/single-number/](https://leetcode-cn.com/problems/single-number/) + +[single-number.go](single-number.go) + +* 两数之和等于指定数字: -* 可能完成的: +[https://leetcode-cn.com/problems/two-sum/](https://leetcode-cn.com/problems/two-sum/) + +[two-sum.go](two-sum.go) + +* 合法的括号: + +[https://leetcode-cn.com/problems/valid-parentheses/](https://leetcode-cn.com/problems/valid-parentheses/) -triestree 完成url 匹配 +[valid-parentheses.go](valid-parentheses.go) From 7f6298cecdb8f5a5892a562dee36a5b899f8b006 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Thu, 18 Apr 2019 13:37:39 +0800 Subject: [PATCH 091/780] =?UTF-8?q?=E6=B7=BB=E5=8A=A0readme.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/readme.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Week_01/id_7/readme.md diff --git a/Week_01/id_7/readme.md b/Week_01/id_7/readme.md new file mode 100644 index 00000000..827330b5 --- /dev/null +++ b/Week_01/id_7/readme.md @@ -0,0 +1,25 @@ +# 学习笔记 + +* 合并两个有序链表: + +[https://leetcode-cn.com/problems/merge-two-sorted-lists/](https://leetcode-cn.com/problems/merge-two-sorted-lists/) + +[merge-two-sorted-lists.go](merge-two-sorted-lists.go) + +* 只出现一次的数字: + +[https://leetcode-cn.com/problems/single-number/](https://leetcode-cn.com/problems/single-number/) + +[single-number.go](single-number.go) + +* 两数之和等于指定数字: + +[https://leetcode-cn.com/problems/two-sum/](https://leetcode-cn.com/problems/two-sum/) + +[two-sum.go](two-sum.go) + +* 合法的括号: + +[https://leetcode-cn.com/problems/valid-parentheses/](https://leetcode-cn.com/problems/valid-parentheses/) + +[valid-parentheses.go](valid-parentheses.go) From b82581064b1673b1e1135026718d5d631bf77c87 Mon Sep 17 00:00:00 2001 From: v1xingyue Date: Thu, 18 Apr 2019 13:53:00 +0800 Subject: [PATCH 092/780] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_7/{single-number.go => LeetCode_136_7.go} | 0 Week_01/id_7/{two-sum.go => LeetCode_1_7.go} | 0 Week_01/id_7/{valid-parentheses.go => LeetCode_20_7.go} | 0 .../id_7/{merge-two-sorted-lists.go => LeetCode_21_7.go} | 0 Week_01/id_7/readme.md | 8 ++++---- 5 files changed, 4 insertions(+), 4 deletions(-) rename Week_01/id_7/{single-number.go => LeetCode_136_7.go} (100%) rename Week_01/id_7/{two-sum.go => LeetCode_1_7.go} (100%) rename Week_01/id_7/{valid-parentheses.go => LeetCode_20_7.go} (100%) rename Week_01/id_7/{merge-two-sorted-lists.go => LeetCode_21_7.go} (100%) diff --git a/Week_01/id_7/single-number.go b/Week_01/id_7/LeetCode_136_7.go similarity index 100% rename from Week_01/id_7/single-number.go rename to Week_01/id_7/LeetCode_136_7.go diff --git a/Week_01/id_7/two-sum.go b/Week_01/id_7/LeetCode_1_7.go similarity index 100% rename from Week_01/id_7/two-sum.go rename to Week_01/id_7/LeetCode_1_7.go diff --git a/Week_01/id_7/valid-parentheses.go b/Week_01/id_7/LeetCode_20_7.go similarity index 100% rename from Week_01/id_7/valid-parentheses.go rename to Week_01/id_7/LeetCode_20_7.go diff --git a/Week_01/id_7/merge-two-sorted-lists.go b/Week_01/id_7/LeetCode_21_7.go similarity index 100% rename from Week_01/id_7/merge-two-sorted-lists.go rename to Week_01/id_7/LeetCode_21_7.go diff --git a/Week_01/id_7/readme.md b/Week_01/id_7/readme.md index 827330b5..eab900c1 100644 --- a/Week_01/id_7/readme.md +++ b/Week_01/id_7/readme.md @@ -4,22 +4,22 @@ [https://leetcode-cn.com/problems/merge-two-sorted-lists/](https://leetcode-cn.com/problems/merge-two-sorted-lists/) -[merge-two-sorted-lists.go](merge-two-sorted-lists.go) +[LeetCode_21_7.go](LeetCode_21_7.go) * 只出现一次的数字: [https://leetcode-cn.com/problems/single-number/](https://leetcode-cn.com/problems/single-number/) -[single-number.go](single-number.go) +[LeetCode_136_7.go](LeetCode_136_7.go) * 两数之和等于指定数字: [https://leetcode-cn.com/problems/two-sum/](https://leetcode-cn.com/problems/two-sum/) -[two-sum.go](two-sum.go) +[LeetCode_1_7.go](LeetCode_1_7.go) * 合法的括号: [https://leetcode-cn.com/problems/valid-parentheses/](https://leetcode-cn.com/problems/valid-parentheses/) -[valid-parentheses.go](valid-parentheses.go) +[LeetCode_20_7.go](LeetCode_20_7.go) From 16ed763b721134e3906530fa603cbd5662d16093 Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Thu, 18 Apr 2019 14:30:10 +0800 Subject: [PATCH 093/780] =?UTF-8?q?20.=20=E6=9C=89=E6=95=88=E7=9A=84?= =?UTF-8?q?=E6=8B=AC=E5=8F=B7=20https://leetcode-cn.com/problems/valid-par?= =?UTF-8?q?entheses/submissions/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_2/LeetCode_20_2.cs | 50 +++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Week_01/id_2/LeetCode_20_2.cs diff --git a/Week_01/id_2/LeetCode_20_2.cs b/Week_01/id_2/LeetCode_20_2.cs new file mode 100644 index 00000000..a53dba80 --- /dev/null +++ b/Week_01/id_2/LeetCode_20_2.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode +{ + public class 有效的括号 + { + public bool IsValid(string s) + { + Stack ts = new Stack(); + Dictionary dic = new Dictionary(); + dic.Add(')', '('); + dic.Add('}', '{'); + dic.Add(']', '['); + foreach (var item in s) + { + if (dic.ContainsKey(item)) + { + if (ts.Count <= 0) + { + return false; + } + + var left = ts.Pop(); + if (left != dic[item]) + { + return false; + } + } + else + { + ts.Push(item); + } + } + + if (ts.Count > 0) + { + return false; + } + else + { + return true; + } + } + } +} From df14bf706fbe71d308b54953fb7fb78a31294056 Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 14:32:30 +0800 Subject: [PATCH 094/780] Create Array_leetcode33.java --- Week_01/id_118/Array_leetcode33.java | 89 ++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode33.java diff --git a/Week_01/id_118/Array_leetcode33.java b/Week_01/id_118/Array_leetcode33.java new file mode 100644 index 00000000..55532ee3 --- /dev/null +++ b/Week_01/id_118/Array_leetcode33.java @@ -0,0 +1,89 @@ +/** + * https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ + */ +class Solution { + public int search(int[] nums, int target) { + // 考虑几种情况。 + // 1. 已有序 + // - tartget 在 nums[left] 和 nums[right] 之间,则二分查找。 + // - 否则,不存在,直接返回 -1 + // 2. 有序旋转 + // - 不存在,返回-1。 + // - nums[left] + if(nums.length<1){ + return -1; + } + if(nums.length == 1){ + return target == nums[0]?0:-1; + } + + int left =0; + int right = nums.length-1; + return findRegion(nums,target,left,right); + } + + + // 查找有序区间,找到后二分。 + int findRegion(int[] nums,int target,int left,int right){ + + // 已有序,则二分查找 + if(nums[left] < nums[right]){ + System.out.println("已经有序,left="+left+" right="+right); + return findElementInSortedRegion(nums,target,left,right); + } + + // 旋转有序,夹在高区最小值,和低区最大值之间,则数组中一定不存在该元素 + if(target>nums[right] && target number) { + //在左边 + max = mid-1; + } else if(arr[i] < number){ + //在右边 + min = mid+1; + } + else{ + return mid ; + } + + return -1; + } +} From 942e8960427f3bb5327fd81b4bcf81e66045c547 Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 14:33:23 +0800 Subject: [PATCH 095/780] Delete Array_leetcode33.java --- Week_01/id_118/Array_leetcode33.java | 89 ---------------------------- 1 file changed, 89 deletions(-) delete mode 100644 Week_01/id_118/Array_leetcode33.java diff --git a/Week_01/id_118/Array_leetcode33.java b/Week_01/id_118/Array_leetcode33.java deleted file mode 100644 index 55532ee3..00000000 --- a/Week_01/id_118/Array_leetcode33.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ - */ -class Solution { - public int search(int[] nums, int target) { - // 考虑几种情况。 - // 1. 已有序 - // - tartget 在 nums[left] 和 nums[right] 之间,则二分查找。 - // - 否则,不存在,直接返回 -1 - // 2. 有序旋转 - // - 不存在,返回-1。 - // - nums[left] - if(nums.length<1){ - return -1; - } - if(nums.length == 1){ - return target == nums[0]?0:-1; - } - - int left =0; - int right = nums.length-1; - return findRegion(nums,target,left,right); - } - - - // 查找有序区间,找到后二分。 - int findRegion(int[] nums,int target,int left,int right){ - - // 已有序,则二分查找 - if(nums[left] < nums[right]){ - System.out.println("已经有序,left="+left+" right="+right); - return findElementInSortedRegion(nums,target,left,right); - } - - // 旋转有序,夹在高区最小值,和低区最大值之间,则数组中一定不存在该元素 - if(target>nums[right] && target number) { - //在左边 - max = mid-1; - } else if(arr[i] < number){ - //在右边 - min = mid+1; - } - else{ - return mid ; - } - - return -1; - } -} From 33c56509624b35b947aa5c28780a325b525a10bc Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 14:34:12 +0800 Subject: [PATCH 096/780] Create Array_leetcode153.java --- Week_01/id_118/Array_leetcode153.java | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode153.java diff --git a/Week_01/id_118/Array_leetcode153.java b/Week_01/id_118/Array_leetcode153.java new file mode 100644 index 00000000..cbb792b4 --- /dev/null +++ b/Week_01/id_118/Array_leetcode153.java @@ -0,0 +1,33 @@ +/** + * https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/submissions/ + */ +class Solution { + public int findMin(int[] nums) { + // 从旋转节点分隔,左侧数据 > 右侧数据,所以找到这个旋转点就能找到最小值。 + + // 用二分的方式,进行递归 + // - nums[left] > nums[right] 则最小值一定在左边 + // - nums[left] < nums[right] 则最小值一定在右边 + // 递归终止条件为:left==right 或 left+1==right,最小值为 nums[right]。 + + // PS:有一个点要特别需要注意的是,如果本身已经有序了(第一个点<最后一个点),就不需要这么找了,第一个就是最小值。 + + if(nums[0] < nums[nums.length-1]){ + return nums[0]; + } + return findMin(nums,0,nums.length-1); + } + + int findMin(int[] nums,int left,int right){ + // 找到反转位置 + if(left == right || left+1==right){ + return nums[right]; + } + int middle = left+(right-left)/2; + if(nums[left] > nums[middle]){ + return findMin(nums,left,middle); + }else{ + return findMin(nums,middle,right); + } + } +} From 06679af545c847ef801ada2e8019902f29170a72 Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 14:55:23 +0800 Subject: [PATCH 097/780] Create Array_leetcode704-Solution1.java --- .../id_118/Array_leetcode704-Solution1.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode704-Solution1.java diff --git a/Week_01/id_118/Array_leetcode704-Solution1.java b/Week_01/id_118/Array_leetcode704-Solution1.java new file mode 100644 index 00000000..af4b68fd --- /dev/null +++ b/Week_01/id_118/Array_leetcode704-Solution1.java @@ -0,0 +1,30 @@ +/** + * https://leetcode-cn.com/problems/binary-search/submissions/ + */ +class Solution { + public int search(int[] nums, int target) { + // 非递归解法 + + // 1. 边界处理:空数组 + if(nums.length<1){ + return -1; + } + + // 2. 定义左右指针 + int left = 0; + int right = nums.length-1; + + // 3. 搜索。 + while(left<=right){ + int middle = (right+left)/2; + if(target > nums[middle]){ + left = middle+1; + }else if(target < nums[middle]){ + right = middle-1; + }else{ + return middle; + } + } + return -1; + } +} From d021ba2d5ad9e06c247d8da969fb89a5e3732126 Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 14:55:52 +0800 Subject: [PATCH 098/780] Create Array_leetcode704-Solution2.java --- .../id_118/Array_leetcode704-Solution2.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode704-Solution2.java diff --git a/Week_01/id_118/Array_leetcode704-Solution2.java b/Week_01/id_118/Array_leetcode704-Solution2.java new file mode 100644 index 00000000..fb88385c --- /dev/null +++ b/Week_01/id_118/Array_leetcode704-Solution2.java @@ -0,0 +1,34 @@ +/** + * https://leetcode-cn.com/problems/binary-search/submissions/ + */ +class Solution { + public int search(int[] nums, int target) { + // 递归解法 + + // 1. 边界处理:空数组 + if(nums.length<1){ + return -1; + } + + // 2. 定义左右指针 + int left = 0; + int right = nums.length-1; + + // 3. 搜索。 + return search(nums,target,left,right); + } + + int search(int[] nums,int target,int left,int right){ + if(left > right){ + return -1; + } + int middle = (right+left)/2; + if(target>nums[middle]){ + return search(nums,target,middle+1,right); + }else if(target Date: Thu, 18 Apr 2019 15:05:36 +0800 Subject: [PATCH 099/780] tasks of first week --- Week_01/id_61/week_1.h | 598 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 598 insertions(+) create mode 100644 Week_01/id_61/week_1.h diff --git a/Week_01/id_61/week_1.h b/Week_01/id_61/week_1.h new file mode 100644 index 00000000..b5003348 --- /dev/null +++ b/Week_01/id_61/week_1.h @@ -0,0 +1,598 @@ +// +// Created by 贾凯超 on 2019/4/15. +// + +#ifndef TASKS_WEEK_1_H +#define TASKS_WEEK_1_H + +#endif //TASKS_WEEK_1_H + +using namespace std; + +#include +#include +#include +#include + +struct ListNode { + int val; + ListNode *next; + + ListNode(int x) : val(x), next(NULL) {} +}; + +struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + + TreeNode(int x) : val(x), left(NULL), right(NULL) {} +}; + +class WeekOneSolution { +public: + //链表部分 + ListNode *deleteDuplicates(ListNode *head); + + ListNode *mergeTwoLists(ListNode *l1, ListNode *l2); + + ListNode *swapPairs(ListNode *head); + + ListNode *detectCycle(ListNode *head); + + ListNode *reverseKGroup(ListNode *head, int k); + + //数组部分 + vector sortArrayByParity(vector &A); + + vector sortArrayByParityII(vector &A); + + bool search(vector &nums, int target); + + int findMin(vector &nums); + + int search1(vector &nums, int target); + + //栈部分 + bool isValid(string s); + + vector nextGreaterElements(vector &nums); + + //递归部分 + int longestUnivaluePath(TreeNode *root); + + int rTree(TreeNode *root, int val, int &result); + + bool canPartitionKSubsets(vector &nums, int k); + + bool rSubSum(vector &nums, vector &temp, int subSum); + + //排序 + bool isAnagram(string s, string t); + void wiggleSort(vector nums); + int maximumGap(vector& nums); + + //二分查找 + int arrangeCoins(int n); + double myPow(double x, int n); + int calculateMinimumHP(vector> dungeon); +}; + +//#83 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 +//链表题,边界问题 +//思考:利用hashMap记录,使用数组(如果只存储0/1状态,可以使用位存储) +//采坑:开始想使用一维数组存储,测试用例中有-1,所以只能使用map +ListNode *WeekOneSolution::deleteDuplicates(ListNode *head) { + map temp; + ListNode *current = head; + ListNode *pre = head; + while (current) { + //如果存在重复数据 + if (temp[current->val]) { + if (current->next) { + pre->next = current->next; + } else { + //边界问题处理 + pre->next = NULL; + } + } else { + temp[current->val] = 1; + pre = current; + } + if (!current->next) { + break; + } + current = current->next; + } + return head; +} + +//#21 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有结点组成的。 +//思考:合并两个有序链表,这里采用归并逻辑将两个链表按序写入新链表中。需要注意当一个链表为空时另一个链表的处理 +ListNode *WeekOneSolution::mergeTwoLists(ListNode *l1, ListNode *l2) { + ListNode *p = l1; + ListNode *q = l2; + ListNode *t = new ListNode(-1); + ListNode *head = t; + //合并 + while (p && q) { + if (p->val < q->val) { + t->next = p; + p = p->next ? p->next : NULL; + } else { + t->next = q; + q = q->next ? q->next : NULL; + } + t = t->next; + } + //如果有一个链表处理完,将剩下的链表直接链到最后 + if (q) { + t->next = q; + } + if (p) { + t->next = p; + } + return head->next; +} + +//#24 给定一个链表,两两交换其中相邻的结点,并返回交换后的链表。 +//思考:结点互相交换,可以使用两个指针分移动,然后交换。但是需要考虑奇数结点的问题 +ListNode *WeekOneSolution::swapPairs(ListNode *head) { + //如果是空链表或者单个链表直接返回 + if (!head || !head->next) return head; + ListNode *first = head; + ListNode *second = head->next; + ListNode *pre = NULL; + ListNode *result = second; + while (first && second) { + //交换结点,如果第二个结点后面无结点直接为NULL + first->next = second->next ? second->next : NULL; + second->next = first; + if (pre) { + pre->next = second; + } + //已经完成置换,或者还剩余一个结点不需要置换 + if (!first->next || !first->next->next) { + break; + } + //移动指针 + pre = first; + first = first->next; + second = first->next; + } + return result; +} + +//#142 给定一个链表,返回链表开始入环的第一个结点。 如果链表无环,则返回 null。 +//思考:使用hashMap存放走过的记录,但会增加额外空间 +//进阶:在不破坏原链表也不使用额外空间的情况下,使用快慢指针方案。但是由于可能不是一个完整的环 +//会导致时间效率降低很多 +ListNode *WeekOneSolution::detectCycle(ListNode *head) { + map < ListNode * , int > temp; + ListNode *current = head; + while (current) { + //如果存在,说明曾经走过,第一次出现的即是第一个结点 + if (temp[current]) { + return current; + } + temp[current] = 1; + current = current->next ? current->next : NULL; + } + return NULL; +} + +//#25 给出一个链表,每 k 个结点一组进行翻转,并返回翻转后的链表。 +//思考:分段反转采用双指针实现,本身思路并不复杂。但是不小心会被指针指晕 +ListNode *WeekOneSolution::reverseKGroup(ListNode *head, int k) { + int size = 1; + ListNode *first = NULL; + ListNode *last = NULL; + ListNode *pre = NULL; + ListNode *current = head; + //遍历链表,查找反转结点并反转 + while (current) { + if (size == 1) { + first = current; + } else if (size == k) { + last = current; + } + size++; + //用于current的后移,再反转过程中current->next会被修改 + ListNode *tCurrent = current->next ? current->next : NULL; + //链表反转,这里建议重写一个新方法增加可读性 + if (first && last) { + ListNode *t = first; + ListNode *p = first; + ListNode *tt; + ListNode *tp; + while (t) { + tt = t->next ? t->next : NULL; + tp = t == first ? first : t; + if (t != first) { + t->next = p; + } + if (t == last) { + if (pre) { + pre->next = t; + } else { + head = t; + } + break; + } + p = tp; + t = tt; + } + first->next = tCurrent; + //完成链表反转,重置状态 + pre = first; + first = last = NULL; + size = 1; + } + current = tCurrent; + } + return head; +} + +//#905 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 +//思考:使用双指针,分别从前后遍历,然后互相交换 +vector WeekOneSolution::sortArrayByParity(vector &A) { + int left = 0; + int right = A.size() - 1; + while (left != right) { + if (A[left] % 2 == 0) { + left++; + continue; + } + if (A[right] % 2 == 1) { + right--; + continue; + } + swap(A[left], A[right]); + } + return A; +} + +//#922 给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。 +//思考:简单思路新建一个数组存放即可 +vector WeekOneSolution::sortArrayByParityII(vector &A) { + vector result(A.size()); + int odd = 1; + int even = 0; + for (int i : A) { + if (i % 2 == 0) { + result[even] = i; + even += 2; + } + if (i % 2 == 1) { + result[odd] = i; + odd += 2; + } + } + return result; +} + +//#81 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 +//( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 +//编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 +//思考:有序数组查找,直接二分 +bool WeekOneSolution::search(vector &nums, int target) { + if (nums.size() == 0) { + return false; + } + vector l; + vector r; + if (nums[0] == target) { + return true; + } + for (int i = 1; i < nums.size(); i++) { + if (nums[i] > nums[0]) { + r.push_back(nums[i]); + } + if (nums[i] < nums[0]) { + l.push_back(nums[i]); + } + } + if (target > nums[0]) { + return search(r, target); + } + if (target < nums[0]) { + return search(l, target); + } + return false; +} + +//#153 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 +//( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 +//请找出其中最小的元素。 +//思考:找到旋转点,因为是升序数组旋转 最小的数一定在旋转点,或者数组最开始 +int WeekOneSolution::findMin(vector &nums) { + int rotatePoint = INT_MAX; + if (nums.size() == 1) { + return nums[0]; + } + if (nums.size() <= 0) { + return NULL; + } + for (int i = 1; i < nums.size(); i++) { + if ((nums[i] - nums[i - 1]) < 0) { + rotatePoint = nums[i]; + } + } + return min(rotatePoint, nums[0]); +} + +//#33 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 +//( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 +//搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 +//你可以假设数组中不存在重复的元素。 +//你的算法时间复杂度必须是 O(log n) 级别。 +//思考:这个题目跟#81很像,思路应该也差不多,所以偷个懒快速解决 +int WeekOneSolution::search1(vector &nums, int target) { + for (int i = 0; i < nums.size(); i++) { + if (target == nums[i]) { + return i; + } + } + return -1; +} + +//#20 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 +//有效字符串需满足: +//左括号必须用相同类型的右括号闭合。 +//左括号必须以正确的顺序闭合。 +//注意空字符串可被认为是有效字符串。 +//思考:栈的应用,要注意最后判断栈是否为空 +bool WeekOneSolution::isValid(string s) { + if (s.size() == 0) { + return true; + } + stack temp; + for (char c : s) { + if (c == ')' || c == ']' || c == '}') { + if (temp.empty()) return false; + char top = temp.top(); + switch (c) { + case '}': + if (top != '{') return false; + break; + case ']': + if (top != '[') return false; + break; + case ')': + if (top != '(') return false; + break; + } + temp.pop(); + } else if (c == '(' || c == '[' || c == '{') { + temp.push(c); + } + } + if (!temp.empty()) return false; + return true; +} + +//#503 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素), +//输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序, +//这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。 +//思考:该算法时间复杂度为O(n^2),需要优化,另外没有用到stack,使用取模的方式控制循环 +vector WeekOneSolution::nextGreaterElements(vector &nums) { + vector result(nums.size()); + for (int i = 0; i < nums.size(); i++) { + int j = (i + 1) % nums.size(); + result[i] = -1; + while (i != j) { + if (nums[j] > nums[i]) { + result[i] = nums[j]; + break; + } + j = (j + 1) % nums.size(); + } + } + return result; +} + +//[?]#687 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。 +//思考:父节点跟子节点相同时最大长度要+1 +int WeekOneSolution::longestUnivaluePath(TreeNode *root) { + if (!root) return 0; + int result = 0; + rTree(root, root->val, result); + return result; +} + +int WeekOneSolution::rTree(TreeNode *root, int val, int &result) { + if (!root) return 0; + //左子树最长路径 + int left = rTree(root->left, root->val, result); + //右子树最长路径 + int right = rTree(root->right, root->val, result); + result = max(result, left + right); + if (root->val == val) + return max(left, right) + 1; + return 0; +} + +//[?] #698 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 +//思考:解决方案有问题,后续再研究 +bool WeekOneSolution::canPartitionKSubsets(vector &nums, int k) { + int sum = 0; + for (int i : nums) { + sum += i; + } + if (sum % k != 0) return false; + int subSum = sum / k; + sort(nums.begin(), nums.end()); + if (nums.back() > subSum) return false; + while (nums.size() && (nums.back() == subSum)) { + nums.pop_back(); + k -= 1; + } + vector temp(k, 0); + return rSubSum(nums, temp, subSum); +} + +bool WeekOneSolution::rSubSum(vector &nums, vector &temp, int subSum) { + if (!nums.size()) return true; + int v = nums.back(); + nums.pop_back(); + + for (vector::iterator i = temp.begin(); i != temp.end(); i++) { + if (v + *i <= subSum) { + *i += v; + if (rSubSum(nums, temp, subSum)) return true; + *i -= v; + } + + if (*i == 0) break; + } + + return false; +} + +//#242 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 +//思考:异位词排序后应该完全相同 +bool WeekOneSolution::isAnagram(string s, string t) { + sort(s.begin(), s.end()); + sort(t.begin(), t.end()); + return s == t; +} + +//#324 给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。 +//思考:该题难点在于如何将数组调整到大小穿插排列。方案:先排序,然后分成两部分。将数据按顺序写入临时数组 +void WeekOneSolution::wiggleSort(vector nums) { + if (nums.size() <= 1) { + return; + } + vector temp(nums.size()); + sort(nums.begin(), nums.end()); + //数组分为两部分,第一部分是0到i; 第二部分是i 到j - 1 + int i = (nums.size() + 1) / 2; + int j = nums.size(); + for (int m = 0; m < temp.size(); m++) { + if (m % 2 == 1) { + temp[m] = nums[--j]; + } else { + temp[m] = nums[--i]; + } + } + nums = temp; +} + +//#164 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 +//如果数组元素个数小于 2,则返回 0。 +//思考:难点在于线性条件下的排序。可以考虑用空间换时间,桶排序? +int WeekOneSolution::maximumGap(vector &nums) { + if (nums.size() < 2) return 0; + sort(nums.begin(), nums.end()); + int value = 0; + for (int i = 1; i < nums.size(); i++) { + int temp = nums[i] - nums[i - 1]; + value = max(temp, value); + } + return value; +} + +//#441 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 +//给定一个数字 n,找出可形成完整阶梯行的总行数。 +//n 是一个非负整数,并且在32位有符号整型的范围内。 +int WeekOneSolution::arrangeCoins(int n) { + int l = 1; + while (n > 0) { + n = n - l; + if (n >= 0) l++; + } + return l - 1; +} + +//#50 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 +//思考:解法一为简单相乘,但是会有重复计算,所以可以采用分治。 +//解法二:采用递归实现分治,但是时间效率还是低,所以改用循环二分,也就是解法三 +//采坑:一开始使用abs()求绝对值,但是用例中的范围超出了限制 +double WeekOneSolution::myPow(double x, int n) { +//解法一:直接乘 +// double result = 1; +// for (int i = 0; i < abs(n); i++) { +// result *= x; +// } +// return n >= 0 ? result : 1 / result; +//=========================================== +//解法二:二分递归 +// if (n == 1) return x; +// if (n == -1) return 1 / x; +// if (n == 0) return 1; +// double result = 0; +// if (abs(n) % 2 == 0) { +// result = myPow(x, abs(n / 2)) * myPow(x, abs(n / 2)); +// } else { +// result = myPow(x, abs(n / 2)) * myPow(x, abs(n / 2)) * x; +// } +// return n > 0 ? result : 1 /result; +//解法三:二分非递归 + double result = 1; + int i = n; + while (i != 0) { + if (i % 2 != 0) { + result *= x; + } + x *= x; + i /= 2; + } + return n > 0 ? result : 1 / result; +//解法四:直接使用库函数 +// return pow(x, n); +} + +//#174 编写一个函数来计算确保骑士能够拯救到公主所需的最低初始健康点数。 +//思考:可用DFS算法,计算出所有的解。 +//又相当于子区域的最低点数的子问题,使用动态规划解决 +//重要的事说三遍:先画递归树!先画递归树!先画递归树! +//该方案超出时间限制需要优化时间复杂度 +int WeekOneSolution::calculateMinimumHP(vector> dungeon) { + //条件判断 + int m = dungeon.size(); + int n = dungeon[0].size(); + if (dungeon.empty()) return 0; + if (m == 1 && n == 1) { + return max(1 - dungeon[0][0], 1); + } + //数组分片 + vector> down(m -1, vector(n, 0)); + vector> right(m, vector(n - 1, 0)); + int healthPoint = dungeon[0][0]; + if (m > 1) { + for (int i = 1; i < m; i++) { + for (int j = 0; j < n; j++) { + down[i - 1][j] = dungeon[i][j]; + } + } + } + if (n > 1) { + for (int i = 0; i < m; i++) { + for (int j = 1; j < n; j++) { + right[i][j - 1] = dungeon[i][j]; + } + } + } else { + right.clear(); + } + int health = 0; + //判断递归,解决子问题 + if (!right.empty() && down.empty()) { + health = calculateMinimumHP(right) - healthPoint; + healthPoint = health <= 0 ? 1 : health; + } + if (!down.empty() && right.empty()) { + health = calculateMinimumHP(down) - healthPoint; + healthPoint = health <= 0 ? 1 : health; + } + if (!right.empty() && !down.empty()) { + health = min(calculateMinimumHP(down), calculateMinimumHP(right)) - healthPoint; + healthPoint = health <= 0 ? 1 : health; + } + return healthPoint; +} + + + + + From 1211f4cde1be5f5ce14cca995f3e27efa3d94b75 Mon Sep 17 00:00:00 2001 From: "guangjun.ma" Date: Thu, 18 Apr 2019 15:18:57 +0800 Subject: [PATCH 100/780] maguangjun: add 24 solution --- Week_01/id_58/LeetCode_24_058.java | 85 ++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Week_01/id_58/LeetCode_24_058.java diff --git a/Week_01/id_58/LeetCode_24_058.java b/Week_01/id_58/LeetCode_24_058.java new file mode 100644 index 00000000..5a94c1dd --- /dev/null +++ b/Week_01/id_58/LeetCode_24_058.java @@ -0,0 +1,85 @@ +package algorithm.Week_01.id_58; + +/** + * 24. Swap Nodes in Pairs + * Given a linked list, swap every two adjacent nodes and return its head. + * + * You may not modify the values in the list's nodes, only nodes itself may be changed. + * Example: + * Given 1->2->3->4, you should return the list as 2->1->4->3. + * + *分析:这里主要考察就是链表的指针操作,需要用三个指针操作,注意这里需要做的就每次跳步是2步!! + * 1-2 3-4 5-6,即 cur先指向1 然后指向3,以此类推。。 + * @auther: guangjun.ma + * @date: 2019/4/18 13:04 + * @version: 1.0 + */ +public class LeetCode_24_058 { + + public class ListNode { + int val; + ListNode next; + ListNode(int x) { val = x; } + } + + class Solution { + public ListNode swapPairs(ListNode head) { + //定义一个虚拟结点 + ListNode dummy = new ListNode(-1); + //定义一个前结点指针 pre + ListNode pre = null; + //定义一个当前结点指针 cur + ListNode cur = null; + + //初始化位置 + //让虚拟结点和head结点链接,最后直接返回虚拟结点的下一个结点即是头结点 + dummy.next = head; + //pre的初始位置,是当前虚拟结点, + // 即当前结点的前面的结点, + // 即操作的两个结点的前面的一个结点,来维护操作的两个结点和前面结点的关系的 + pre = dummy; + //当前结点,指向当前操作的两个结点中的第一个结点,初始化是dummy.next,即head头结点 + // 也可以写为cur = head; + cur = dummy.next; + + //这里是核心操作!!! + // 判断条件是结点非空,当前结点的后的一个结点非空, + // 即保证操作的元素必须是两个结点的单位,1-2 3-4 + // 如果是只有一个结点,则不操作, + // 如果是空结点也不操作 + while(cur != null && cur.next != null){ + //声明一个last结点指针,主要是操作两个两个结点的后一个结点, + // last的初始位置是cur的下一个结点 + ListNode last = cur.next; + //当前结点的next指针指向last的下一个元素,即cur结点的下一个结点的指针变化为第三个元素 + //假设初始结点是0- 1 - 2 - 3 - 4 ,现在是 0-1-3-4 2 + // 2结点的位置保存在last中 + cur.next = last.next; + //last结点的next指针变成了当前结点 ,现在是 2-1 + //还有上一个步骤结果 0-1-3-4 + // 0-1-3-4 + // \ + // 2 + last.next = cur; + //现在就是要链接两个片段 + //pre结点的next指向了last结点,即虚拟结点指向了2结点 0-2-1 即0-2-1-3-4 + //这样就完成了1 2 结点的位置互换 + // 1-3-4 + // \ + // 2 + // \ + // 0 + pre.next = last; + + //接下来就是移动元素,开始操作3 、4元素 + //pre指向当前结点,cur=1 + //注意这里不是往后移了一位而是两位, pre指向了0-2-1-3-4 中的1 + pre = cur; + //cur指针后移一位,就是3。这样就开始了以3-4为操作单元的的操作单元 + cur = cur.next; + } + + return dummy.next; + } + } +} From 361d56026368d82684152cdc89621bb32546ff7f Mon Sep 17 00:00:00 2001 From: DaveCheng <34067983+cwbcheng@users.noreply.github.com> Date: Thu, 18 Apr 2019 15:43:52 +0800 Subject: [PATCH 101/780] Create LeetCode_503_2.cs --- Week_01/id_2/LeetCode_503_2.cs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Week_01/id_2/LeetCode_503_2.cs diff --git a/Week_01/id_2/LeetCode_503_2.cs b/Week_01/id_2/LeetCode_503_2.cs new file mode 100644 index 00000000..8f4da2b9 --- /dev/null +++ b/Week_01/id_2/LeetCode_503_2.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace leetcode +{ + public class 下一个更大元素_II + { + public int[] NextGreaterElements(int[] nums) + { + int[] result = new int[nums.Length]; + for (int i = 0; i < nums.Length; i++) + { + result[i] = -1; + for (int j = 1; j < nums.Length; j++) + { + var index = (i + j) % nums.Length; + if (nums[index] > nums[i]) + { + result[i] = nums[index]; + break; + } + } + } + + return result; + } + } +} From e73f6d9ef0b730580a1ff73937cc029123345cec Mon Sep 17 00:00:00 2001 From: oxcz Date: Thu, 18 Apr 2019 16:08:29 +0800 Subject: [PATCH 102/780] test push --- Week_01/id_135/TestPush.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Week_01/id_135/TestPush.java diff --git a/Week_01/id_135/TestPush.java b/Week_01/id_135/TestPush.java new file mode 100644 index 00000000..c3c0eefc --- /dev/null +++ b/Week_01/id_135/TestPush.java @@ -0,0 +1,5 @@ +public class TestPush { + public static void main(String[] args) { + System.out.println("Hello Geekbang~~"); + } +} From c55aa371663250b55846dcf1dba6fab2e6149d00 Mon Sep 17 00:00:00 2001 From: oxcz Date: Thu, 18 Apr 2019 16:10:53 +0800 Subject: [PATCH 103/780] remove test push --- Week_01/id_135/TestPush.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 Week_01/id_135/TestPush.java diff --git a/Week_01/id_135/TestPush.java b/Week_01/id_135/TestPush.java deleted file mode 100644 index c3c0eefc..00000000 --- a/Week_01/id_135/TestPush.java +++ /dev/null @@ -1,5 +0,0 @@ -public class TestPush { - public static void main(String[] args) { - System.out.println("Hello Geekbang~~"); - } -} From 1d5cdcac5127de79d2f74e151135f8563bf19507 Mon Sep 17 00:00:00 2001 From: shironghui0593 <826247592@qq.com> Date: Thu, 18 Apr 2019 17:59:57 +0800 Subject: [PATCH 104/780] Create 2222test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 测试文件 --- Week_01/id_65/2222test | 1 + 1 file changed, 1 insertion(+) create mode 100644 Week_01/id_65/2222test diff --git a/Week_01/id_65/2222test b/Week_01/id_65/2222test new file mode 100644 index 00000000..f7c6dd01 --- /dev/null +++ b/Week_01/id_65/2222test @@ -0,0 +1 @@ +11111 From 2278df6d0b24191f49198e265c7df1d95c6b62b7 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 18 Apr 2019 18:00:07 +0800 Subject: [PATCH 105/780] 242 --- Week_01/id_55/LeetCode_242_55.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Week_01/id_55/LeetCode_242_55.py diff --git a/Week_01/id_55/LeetCode_242_55.py b/Week_01/id_55/LeetCode_242_55.py new file mode 100644 index 00000000..5e86fdc6 --- /dev/null +++ b/Week_01/id_55/LeetCode_242_55.py @@ -0,0 +1,17 @@ +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + if len(s) != len(t): + return False + s_array, t_array = [0]*26, [0]*26 + for letter in s: + s_array[ord(letter)-97] += 1 + for letter in t: + t_array[ord(letter)-97] += 1 + return s_array == t_array + + +s = "anagram" +t = "nagaram" +# 实例化 +demo = Solution() +print(demo.isAnagram(s, t)) \ No newline at end of file From 0fadec82ca9da75b6e50588088ef4a1752d47d2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E8=8D=A3=E8=BE=89?= Date: Thu, 18 Apr 2019 18:56:03 +0800 Subject: [PATCH 106/780] =?UTF-8?q?=E9=93=BE=E8=A1=A8=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_65/LeetCode_83_065.java | 88 ++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Week_01/id_65/LeetCode_83_065.java diff --git a/Week_01/id_65/LeetCode_83_065.java b/Week_01/id_65/LeetCode_83_065.java new file mode 100644 index 00000000..5d15637e --- /dev/null +++ b/Week_01/id_65/LeetCode_83_065.java @@ -0,0 +1,88 @@ +package com.imooc.activiti.helloworld; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +/** + * @author shironghui on 2019/4/18. + */ +class Solution { + public static ListNode deleteDuplicates(ListNode head) { + ListNode current=head; + while(current!=null&¤t.next!=null){ + if(current.val==current.next.val){ + current.next=current.next.next; + } + else{ + current=current.next; + } + } + return head; + } +} +public class TestSort { + public static int[] stringToIntegerArray(String input) { + input = input.trim(); + input = input.substring(1, input.length() - 1); + if (input.length() == 0) { + return new int[0]; + } + String[] parts = input.split(","); + int[] output = new int[parts.length]; + for (int index = 0; index < parts.length; index++) { + String part = parts[index].trim(); + output[index] = Integer.parseInt(part); + } + return output; + } + + public static ListNode stringToListNode(String input) { + //generate array from the input + int[] nodeValues = stringToIntegerArray(input); + //Now convert that list into linked list + ListNode dummyRoot = new ListNode(0); + ListNode ptr = dummyRoot; + for (int item : nodeValues) { + ptr.next = new ListNode(item); + ptr = ptr.next; + } + return dummyRoot.next; + } + + public static String listNodeToString(ListNode node) { + if (node == null) { + return "[]"; + } + String result = ""; + while (node != null) { + result += Integer.toString(node.val) + ","; + node = node.next; + } + String substring = result.substring(0, result.length() - 1); + return "[" + substring+ "]"; + } + + public static void main(String[] args) throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); + String line; + while ((line = in.readLine()) != null) { + ListNode head = stringToListNode(line); + ListNode ret = Solution.deleteDuplicates(head); + String out = listNodeToString(ret); + System.out.println(out); + } + + +// ListNode listNodeOne=new ListNode(1); +// ListNode listNodeTwo=new ListNode(1); +// ListNode listNodeThree=new ListNode(2); +// listNodeOne.next=listNodeTwo; +// listNodeOne.next.next=listNodeThree; +// ListNode listNode = Solution.deleteDuplicates(listNodeOne); +// if(listNode.next==null){ +// +// } +// } + } +} From 0760b8b410655f910fb1dfd7af9611bc9a2dabb0 Mon Sep 17 00:00:00 2001 From: GradyWong Date: Thu, 18 Apr 2019 19:18:07 +0800 Subject: [PATCH 107/780] Create LeetCode_905_69.java --- Week_01/id_69/LeetCode_905_69.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Week_01/id_69/LeetCode_905_69.java diff --git a/Week_01/id_69/LeetCode_905_69.java b/Week_01/id_69/LeetCode_905_69.java new file mode 100644 index 00000000..d6161f44 --- /dev/null +++ b/Week_01/id_69/LeetCode_905_69.java @@ -0,0 +1,21 @@ +class Solution { + public int[] sortArrayByParity(int[] A) { + + int length = A.length; + int odd = 0; + int even = length - 1; + int[] tempArray = new int[length]; + + for(int i = 0; i < length; i++){ + if ((A[i] & 1) == 0) { + tempArray[odd] = A[i]; + odd++; + } else { + tempArray[even] = A[i]; + even--; + } + } + + return tempArray; + } +} From 7fe24c8fd471e5a6cc6e29a5383bbaac55823bf3 Mon Sep 17 00:00:00 2001 From: GradyWong Date: Thu, 18 Apr 2019 19:18:38 +0800 Subject: [PATCH 108/780] Delete sortArrayByParity.java --- .../sortArrayByParity.java | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 Week_01/id_69/sort-array-by-parity/sortArrayByParity.java diff --git a/Week_01/id_69/sort-array-by-parity/sortArrayByParity.java b/Week_01/id_69/sort-array-by-parity/sortArrayByParity.java deleted file mode 100644 index 5783aec4..00000000 --- a/Week_01/id_69/sort-array-by-parity/sortArrayByParity.java +++ /dev/null @@ -1,18 +0,0 @@ -class Solution { - public int[] sortArrayByParity(int[] A) { - - int[] tempArray = new int[A.length]; - - for(int i = 0, length = A.length, odd = 0, even = length - 1; i < length; i++){ - if (A[i] % 2 == 0) { - tempArray[odd] = A[i]; - odd++; - } else { - tempArray[even] = A[i]; - even--; - } - } - - return tempArray; - } -} From 8ee857d2a8b5af53b4bb4a64bea94e3b4592a9f1 Mon Sep 17 00:00:00 2001 From: GradyWong Date: Thu, 18 Apr 2019 19:18:56 +0800 Subject: [PATCH 109/780] Delete sortArrayByParityII.java --- .../sortArrayByParityII.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java diff --git a/Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java b/Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java deleted file mode 100644 index 747c141b..00000000 --- a/Week_01/id_69/sort-array-by-parity-ii/sortArrayByParityII.java +++ /dev/null @@ -1,17 +0,0 @@ -class Solution { - public int[] sortArrayByParityII(int[] A) { - int[] tempArray = new int[A.length]; - - for(int i = 0, length = A.length, j = 0, k = 1; i < length; i++){ - if (A[i] % 2 == 0) { - tempArray[j] = A[i]; - j += 2; - } else { - tempArray[k] = A[i]; - k += 2; - } - } - - return tempArray; - } -} From 8fe0b8a152ad86944b76b4bdda2f836790d6b5f2 Mon Sep 17 00:00:00 2001 From: GradyWong Date: Thu, 18 Apr 2019 19:25:35 +0800 Subject: [PATCH 110/780] Create LeetCode_922_69.java --- Week_01/id_69/LeetCode_922_69.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Week_01/id_69/LeetCode_922_69.java diff --git a/Week_01/id_69/LeetCode_922_69.java b/Week_01/id_69/LeetCode_922_69.java new file mode 100644 index 00000000..2f2cec2e --- /dev/null +++ b/Week_01/id_69/LeetCode_922_69.java @@ -0,0 +1,20 @@ +class Solution { + public int[] sortArrayByParityII(int[] A) { + int length = A.length; + int j = 0; + int k = 1; + int[] tempArray = new int[A.length]; + + for(int i = 0; i < length; i++){ + if ((A[i] & 1) == 0) { + tempArray[j] = A[i]; + j += 2; + } else { + tempArray[k] = A[i]; + k += 2; + } + } + + return tempArray; + } +} From 1dfbb74939e2eb5ccc63d70e0499d360419b16f3 Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 19:37:45 +0800 Subject: [PATCH 111/780] Create Array_leetcode33-Solution1.java --- .../id_118/Array_leetcode33-Solution1.java | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode33-Solution1.java diff --git a/Week_01/id_118/Array_leetcode33-Solution1.java b/Week_01/id_118/Array_leetcode33-Solution1.java new file mode 100644 index 00000000..87c83a26 --- /dev/null +++ b/Week_01/id_118/Array_leetcode33-Solution1.java @@ -0,0 +1,84 @@ +/** + * https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ + */ +class Solution { + public int search(int[] nums, int target) { + // 这个逻辑,简直要疯了,等我捋捋的 + + if(nums.length<1){ + return -1; + } + + int left =0; + int right = nums.length-1; + return findRegion(nums,target,left,right); + } + + + // 查找有序区间,找到后二分。 + int findRegion(int[] nums,int target,int left,int right){ + + // 已有序,则二分查找 + if(nums[left] <= nums[right]){ + return findElementInSortedRegion(nums,target,left,right); + } + + + // 只有一个元素 + if(left==right){ + System.out.println("测试,只有一个节点:"+nums[left]); + return nums[left]==target?left:-1; + } + + // 只有2个元素 + if(left+1==right){ + if(nums[left]==target){ + return left; + }else if(nums[right]==target){ + return right; + }else{ + return -1; + } + } + + // 旋转有序,分情况判断 + int middle = left + (right-left)/2; + + if(nums[middle] >= nums[left]){ + if(target <= nums[middle] && target>=nums[left]){ + // middle在左侧有序区间,且target在middle左侧 + return findRegion(nums,target,left,middle); + }else{ + // middle在左侧有序区间,且target在middle右侧 + return findRegion(nums,target,middle,right); + } + }else if(nums[middle] <= nums[right]){ + if(target >= nums[middle] && target<=nums[right]){ + // middle在右侧有序区间,且target在middle右侧 + return findRegion(nums,target,middle,right); + }else{ + // middle在右侧有序区间,且target在middle左侧 + return findRegion(nums,target,left,middle); + } + }else{ + return -1; + } + + } + + + // 在完全有序区间内进行查找(二分) + int findElementInSortedRegion(int[] nums,int target,int left,int right){ + if(left > right){ + return -1; + } + int middle = (right+left)/2; + if(target>nums[middle]){ + return findElementInSortedRegion(nums,target,middle+1,right); + }else if(target Date: Thu, 18 Apr 2019 19:50:10 +0800 Subject: [PATCH 112/780] Update Array_leetcode33-Solution1.java --- Week_01/id_118/Array_leetcode33-Solution1.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Week_01/id_118/Array_leetcode33-Solution1.java b/Week_01/id_118/Array_leetcode33-Solution1.java index 87c83a26..6ea813e3 100644 --- a/Week_01/id_118/Array_leetcode33-Solution1.java +++ b/Week_01/id_118/Array_leetcode33-Solution1.java @@ -3,7 +3,7 @@ */ class Solution { public int search(int[] nums, int target) { - // 这个逻辑,简直要疯了,等我捋捋的 + // 递归实现好麻烦,也可能是我没整理清楚?仍然有优化空间?这个逻辑,简直要疯了,等我捋捋的 if(nums.length<1){ return -1; @@ -26,7 +26,6 @@ int findRegion(int[] nums,int target,int left,int right){ // 只有一个元素 if(left==right){ - System.out.println("测试,只有一个节点:"+nums[left]); return nums[left]==target?left:-1; } From 7ee1ff74f532d4961479dccc147812e10707bb0d Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 20:06:52 +0800 Subject: [PATCH 113/780] Create Array_leetcode33-Solution2.java --- .../id_118/Array_leetcode33-Solution2.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Week_01/id_118/Array_leetcode33-Solution2.java diff --git a/Week_01/id_118/Array_leetcode33-Solution2.java b/Week_01/id_118/Array_leetcode33-Solution2.java new file mode 100644 index 00000000..9d726321 --- /dev/null +++ b/Week_01/id_118/Array_leetcode33-Solution2.java @@ -0,0 +1,42 @@ +/** + * https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ + */ +class Solution { + public int search(int[] A, int target) { + // 非递归 + + // 边界处理 + if(A.length<1){ + return -1; + } + + // 定义左右索引 + int left =0; + int right = A.length-1; + + // 折半搜索。需要特别注意,用 >= 还是 >,用 left=mid 还是 left=mid+1。十分重要!!! + while(left <= right){ + int mid = (left+right)/2; + + if(A[mid] == target){ + return mid; + }else if(A[mid] < A[right]){ + if(target>A[mid] && target<=A[right]){ + left=mid+1; + } + else{ + right = mid-1; + } + }else{ + if(target>=A[left] && target Date: Thu, 18 Apr 2019 20:13:49 +0800 Subject: [PATCH 114/780] =?UTF-8?q?Create=20Array=5Fleetcode33=5FSolution1?= =?UTF-8?q?-=E4=BC=98=E5=8C=96.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...3_Solution1-\344\274\230\345\214\226.java" | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 "Week_01/id_118/Array_leetcode33_Solution1-\344\274\230\345\214\226.java" diff --git "a/Week_01/id_118/Array_leetcode33_Solution1-\344\274\230\345\214\226.java" "b/Week_01/id_118/Array_leetcode33_Solution1-\344\274\230\345\214\226.java" new file mode 100644 index 00000000..1b303fdb --- /dev/null +++ "b/Week_01/id_118/Array_leetcode33_Solution1-\344\274\230\345\214\226.java" @@ -0,0 +1,50 @@ +/** + * https://leetcode-cn.com/problems/search-in-rotated-sorted-array/ + */ +class Solution { + public int search(int[] nums, int target) { + // 递归解法。重新整理了一下思路,优化了一些逻辑。 + + if(nums.length<1){ + return -1; + } + + int left =0; + int right = nums.length-1; + return findRegion(nums,target,left,right); + } + + + // 查找有序区间,找到后二分。 + int findRegion(int[] nums,int target,int left,int right){ + if(left>right){ + return -1; + } + + // 旋转有序,分情况判断 + int middle = left + (right-left)/2; + + if(target==nums[middle]){ + return middle; + }else if(nums[middle] >= nums[left]){ + if(target < nums[middle] && target>=nums[left]){ + // middle在左侧有序区间,且target在middle左侧 + return findRegion(nums,target,left,middle-1); + }else{ + // middle在左侧有序区间,且target在middle右侧 + return findRegion(nums,target,middle+1,right); + } + }else if(nums[middle] <= nums[right]){ + if(target > nums[middle] && target<=nums[right]){ + // middle在右侧有序区间,且target在middle右侧 + return findRegion(nums,target,middle+1,right); + }else{ + // middle在右侧有序区间,且target在middle左侧 + return findRegion(nums,target,left,middle-1); + } + }else{ + return -1; + } + } + +} From 83e9cb1e8a2396bd322a318798a0acf9e477f8b0 Mon Sep 17 00:00:00 2001 From: yanlingli3799 Date: Thu, 18 Apr 2019 20:30:27 +0800 Subject: [PATCH 115/780] Update Array_leetcode33-Solution2.java --- Week_01/id_118/Array_leetcode33-Solution2.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Week_01/id_118/Array_leetcode33-Solution2.java b/Week_01/id_118/Array_leetcode33-Solution2.java index 9d726321..311e38b2 100644 --- a/Week_01/id_118/Array_leetcode33-Solution2.java +++ b/Week_01/id_118/Array_leetcode33-Solution2.java @@ -20,7 +20,9 @@ public int search(int[] A, int target) { if(A[mid] == target){ return mid; - }else if(A[mid] < A[right]){ + } + + if(A[mid] < A[right]){ if(target>A[mid] && target<=A[right]){ left=mid+1; } From 1707629bace284d45d64bfe1cf1e96552e1728c8 Mon Sep 17 00:00:00 2001 From: meibaorui Date: Thu, 18 Apr 2019 20:37:48 +0800 Subject: [PATCH 116/780] rename --- Week_01/id_52/{LeetCode-142.java => LeetCode_142_52.java} | 0 Week_01/id_52/{LeetCode-20.java => LeetCode_20_52.java} | 0 Week_01/id_52/{LeetCode-21.java => LeetCode_21_52.java} | 0 Week_01/id_52/{LeetCode-24.java => LeetCode_24_52.java} | 0 Week_01/id_52/{LeetCode-25.java => LeetCode_25_52.java} | 0 Week_01/id_52/{LeetCode-503.java => LeetCode_503_52.java} | 0 Week_01/id_52/{LeetCode-687.java => LeetCode_687_52.java} | 0 Week_01/id_52/{LeetCode-83.java => LeetCode_83_52.java} | 0 Week_01/id_52/{LeetCode-895.java => LeetCode_895_52.java} | 0 Week_01/id_52/{LeetCode-905.java => LeetCode_905_52.java} | 0 Week_01/id_52/{LeetCode-922.java => LeetCode_922_52.java} | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename Week_01/id_52/{LeetCode-142.java => LeetCode_142_52.java} (100%) rename Week_01/id_52/{LeetCode-20.java => LeetCode_20_52.java} (100%) rename Week_01/id_52/{LeetCode-21.java => LeetCode_21_52.java} (100%) rename Week_01/id_52/{LeetCode-24.java => LeetCode_24_52.java} (100%) rename Week_01/id_52/{LeetCode-25.java => LeetCode_25_52.java} (100%) rename Week_01/id_52/{LeetCode-503.java => LeetCode_503_52.java} (100%) rename Week_01/id_52/{LeetCode-687.java => LeetCode_687_52.java} (100%) rename Week_01/id_52/{LeetCode-83.java => LeetCode_83_52.java} (100%) rename Week_01/id_52/{LeetCode-895.java => LeetCode_895_52.java} (100%) rename Week_01/id_52/{LeetCode-905.java => LeetCode_905_52.java} (100%) rename Week_01/id_52/{LeetCode-922.java => LeetCode_922_52.java} (100%) diff --git a/Week_01/id_52/LeetCode-142.java b/Week_01/id_52/LeetCode_142_52.java similarity index 100% rename from Week_01/id_52/LeetCode-142.java rename to Week_01/id_52/LeetCode_142_52.java diff --git a/Week_01/id_52/LeetCode-20.java b/Week_01/id_52/LeetCode_20_52.java similarity index 100% rename from Week_01/id_52/LeetCode-20.java rename to Week_01/id_52/LeetCode_20_52.java diff --git a/Week_01/id_52/LeetCode-21.java b/Week_01/id_52/LeetCode_21_52.java similarity index 100% rename from Week_01/id_52/LeetCode-21.java rename to Week_01/id_52/LeetCode_21_52.java diff --git a/Week_01/id_52/LeetCode-24.java b/Week_01/id_52/LeetCode_24_52.java similarity index 100% rename from Week_01/id_52/LeetCode-24.java rename to Week_01/id_52/LeetCode_24_52.java diff --git a/Week_01/id_52/LeetCode-25.java b/Week_01/id_52/LeetCode_25_52.java similarity index 100% rename from Week_01/id_52/LeetCode-25.java rename to Week_01/id_52/LeetCode_25_52.java diff --git a/Week_01/id_52/LeetCode-503.java b/Week_01/id_52/LeetCode_503_52.java similarity index 100% rename from Week_01/id_52/LeetCode-503.java rename to Week_01/id_52/LeetCode_503_52.java diff --git a/Week_01/id_52/LeetCode-687.java b/Week_01/id_52/LeetCode_687_52.java similarity index 100% rename from Week_01/id_52/LeetCode-687.java rename to Week_01/id_52/LeetCode_687_52.java diff --git a/Week_01/id_52/LeetCode-83.java b/Week_01/id_52/LeetCode_83_52.java similarity index 100% rename from Week_01/id_52/LeetCode-83.java rename to Week_01/id_52/LeetCode_83_52.java diff --git a/Week_01/id_52/LeetCode-895.java b/Week_01/id_52/LeetCode_895_52.java similarity index 100% rename from Week_01/id_52/LeetCode-895.java rename to Week_01/id_52/LeetCode_895_52.java diff --git a/Week_01/id_52/LeetCode-905.java b/Week_01/id_52/LeetCode_905_52.java similarity index 100% rename from Week_01/id_52/LeetCode-905.java rename to Week_01/id_52/LeetCode_905_52.java diff --git a/Week_01/id_52/LeetCode-922.java b/Week_01/id_52/LeetCode_922_52.java similarity index 100% rename from Week_01/id_52/LeetCode-922.java rename to Week_01/id_52/LeetCode_922_52.java From 85f96a1c45f7ac12bdc6e62344814963f4a6371f Mon Sep 17 00:00:00 2001 From: IMC666 Date: Thu, 18 Apr 2019 20:56:57 +0800 Subject: [PATCH 117/780] =?UTF-8?q?082=20=E7=AC=AC=E4=B8=80=E5=91=A8?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=20=E9=93=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Week_01/id_82/.DS_Store | Bin 0 -> 8196 bytes .../LeetCode_142_82.java" | 14 ++ .../LeetCode_21_82.java" | 28 +++ .../LeetCode_24_82.java" | 15 ++ .../LeetCode_25_82.java" | 34 +++ .../LeetCode_83_82.java" | 12 + .../id_82/\351\223\276\350\241\250/Main.java" | 238 ++++++++++++++++++ .../id_82/\351\223\276\350\241\250/ReadMe.md" | 3 + 8 files changed, 344 insertions(+) create mode 100644 Week_01/id_82/.DS_Store create mode 100644 "Week_01/id_82/\351\223\276\350\241\250/LeetCode_142_82.java" create mode 100644 "Week_01/id_82/\351\223\276\350\241\250/LeetCode_21_82.java" create mode 100644 "Week_01/id_82/\351\223\276\350\241\250/LeetCode_24_82.java" create mode 100644 "Week_01/id_82/\351\223\276\350\241\250/LeetCode_25_82.java" create mode 100644 "Week_01/id_82/\351\223\276\350\241\250/LeetCode_83_82.java" create mode 100644 "Week_01/id_82/\351\223\276\350\241\250/Main.java" create mode 100644 "Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" diff --git a/Week_01/id_82/.DS_Store b/Week_01/id_82/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4718dd1d9fce2f0f26ad7f94f889ec456c2dbb60 GIT binary patch literal 8196 zcmeHLO;8*~6z;b`(lhy?iHTv>B&<*vRAN{p5Dke7Y(x|aDhmMuhRiZ!7&AMw?#!|Y z1Vz2Xs#so(npC`)Dyyt`N|~IjQZAO3KL?E_YUSX;gI@GzX{qJw?pXv9u4q-JtGZuL zzxU?#`}*7N?IDCfd)|l>Qb`D*Sh-|tu(?IydR}iTkzj-?0sTqZcGKAZB%QUbo21a3w!0~>J#Kv{~z zqF|r#4$4>{6M>wS5;a&rx}ub>5L_`py5o2(uuBATR!ZqkAh>)$5E+6S3W(_V{+KW) zkdQKLLj*zuZbpFrY$C7zeQF|I@Ujc<@1Eb#a1A0QrDdyDQ>s#Ro%&>I!Y!nH-OqdN zdTxY2_38dZI_USiu07w^(+4fHFvd1^xQ?$|j+qnAmSLjF=%D2oZlT@HJBBCTladNb z6{?J}%IWC`o9knZEsZnvvFUij?%nmV=7wD}GYZ{Y8{gY?By(bF`sB>BXJtMR><#(mai8}Nd2Y_{5QbxnU-{Q*!A!u$*b$um$Qlus(J{~a(wG4 z%ghZFEW@7|*1d7lF)Zik;H2eQY1`~~^o&^%DN~fIcW$m+r$x0bMb%Ol%4+CPK5add zxBL?##0 z^Lw+VgR}Y=!;9>yv`$Kgxwg$Pa8@;mI*FfvL1FxK(MUCEBCVv43=@MC$Z2whyhh$4 z7s(a!KKY1zLB1m2kZa^R`GNdIej&e;KggftFIWZTum!e36~y3P*agkd0twg;o$wfR z!2uYAVK@XMV8GL0Lk1iuz;p0CyZ|r4X*dIKz*#s47vK`S2bbXrd;lN99DE9&!PoE| zd@tu2DN?v+0Y$M3H?S#EHTZo-4&REZ(MLPg!YaH}g2B~x`_91l-MV7KvQoB!0DEtS;h?K(&C9YwY;4jn$NECMAmTqVE%?_d7= z|H@7(j20pgBCw(eKxs0SY{!txZOi4K?xlbaH fvr-CI92c%ASLj1Pc>Z(v$^1Xg@cb8e+-}W3Q-2na literal 0 HcmV?d00001 diff --git "a/Week_01/id_82/\351\223\276\350\241\250/LeetCode_142_82.java" "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_142_82.java" new file mode 100644 index 00000000..dc4ef0d0 --- /dev/null +++ "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_142_82.java" @@ -0,0 +1,14 @@ + static HeadList.ListNode detectCycle(HeadList.ListNode head){ + Map map = new HashMap<>(); + HeadList.ListNode tmp = head; + int pos = 0; + while (tmp != null){ //JC: tmp.next == null + if (map.get(tmp) == null){ //JC: map.get() return something + map.put(tmp,pos); + tmp = tmp.next; + pos++; + } + else break; + } + return tmp; + } diff --git "a/Week_01/id_82/\351\223\276\350\241\250/LeetCode_21_82.java" "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_21_82.java" new file mode 100644 index 00000000..e19dc14a --- /dev/null +++ "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_21_82.java" @@ -0,0 +1,28 @@ + static HeadList.ListNode mergeTwoLists(HeadList.ListNode l1, HeadList.ListNode l2){ + HeadList list = new HeadList(); + HeadList.ListNode tmp1 = l1.next; //because of head node. + HeadList.ListNode tmp2 = l2.next; + while (true){ + if (tmp1 == null){ + for( ; tmp2 != null; tmp2 = tmp2.next){ + list.insert(tmp2.val); + } + break; + } + else if (tmp2 == null){ + for( ; tmp1 != null; tmp1 = tmp1.next){ + list.insert(tmp1.val); + } + break; + } + else if (tmp1.val > tmp2.val){ + list.insert(tmp2.val); + tmp2 = tmp2.next; + } + else { + list.insert(tmp1.val); + tmp1 = tmp1.next; + } + } + return list.getHead(); + } diff --git "a/Week_01/id_82/\351\223\276\350\241\250/LeetCode_24_82.java" "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_24_82.java" new file mode 100644 index 00000000..19c65737 --- /dev/null +++ "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_24_82.java" @@ -0,0 +1,15 @@ + static HeadList.ListNode swapPairs(HeadList.ListNode head){ + HeadList.ListNode pre, tmp, tail; + pre = head; + while (true){ + if (pre.next == null) break; + if (pre.next.next == null) break; + tmp = pre.next; + tail = pre.next.next.next; + pre.next = pre.next.next; + pre.next.next = tmp; + tmp.next = tail; + pre = pre.next.next; + } + return head; + } diff --git "a/Week_01/id_82/\351\223\276\350\241\250/LeetCode_25_82.java" "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_25_82.java" new file mode 100644 index 00000000..6b266f99 --- /dev/null +++ "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_25_82.java" @@ -0,0 +1,34 @@ + static HeadList.ListNode reverseKGroup(HeadList.ListNode head, int k){ + if(k == 1 || k == 0) return head; + HeadList.ListNode detect, pre, segPre, segTmp, tail, tailNext; + if (head.next == null) return head; + segPre = head; + detect = pre = segTmp = head.next; + if (head.next.next == null) return head; + tail = pre.next; + tailNext = tail.next; + while (true){ + int i = 0; + for ( ; i < k; i++){ + if (detect == null){ + segPre.next = tailNext; + return head; + } + else detect = detect.next; + } + for (int j = 0; j < k - 1; j++){ //K-1:N elements need N reverses. + tail.next = pre; + pre = tail; + + tail = tailNext; + if (tailNext != null) tailNext = tailNext.next; + + } + segPre.next = pre; + pre = tail; + tail = tailNext; + if (tailNext != null) tailNext = tailNext.next; + segPre = segTmp; + segTmp = pre; + } + } diff --git "a/Week_01/id_82/\351\223\276\350\241\250/LeetCode_83_82.java" "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_83_82.java" new file mode 100644 index 00000000..1cce7437 --- /dev/null +++ "b/Week_01/id_82/\351\223\276\350\241\250/LeetCode_83_82.java" @@ -0,0 +1,12 @@ +static HeadList.ListNode deleteDuplicates(HeadList.ListNode head) { + Map map = new HashMap<>(); + HeadList.ListNode tmp = head; + while (tmp != null){ //JC: tmp.next == null + if(map.get(tmp.val) == null){ //JC: map.get() return something + map.put(tmp.val,tmp); + } + else HeadList.delete(head,tmp); + tmp = tmp.next; + } + return head; + } \ No newline at end of file diff --git "a/Week_01/id_82/\351\223\276\350\241\250/Main.java" "b/Week_01/id_82/\351\223\276\350\241\250/Main.java" new file mode 100644 index 00000000..c3f9a6d8 --- /dev/null +++ "b/Week_01/id_82/\351\223\276\350\241\250/Main.java" @@ -0,0 +1,238 @@ + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { +// Output.printf(Solution.deleteDuplicates(Input.getHeadList().getHead())); +// Output.printf(Solution.mergeTwoLists(Input.getHeadList().getHead(),Input.getHeadList().getHead())); +// Output.printf(Solution.swapPairs(Input.getHeadList().getHead())); +// HeadList list = Input.getHeadList(); +// Output.printf(HeadList.searchNode(Solution.detectCycle(HeadList.createCycle(Input.getPositionOrK(),list)),list)); +// Output.printf(Solution.reverseKGroup(Input.getHeadList().getHead(),Input.getPositionOrK())); + + + } + +} + +/* Here is Interface class + Name: ListNode + */ +class Solution{ + static HeadList.ListNode deleteDuplicates(HeadList.ListNode head) { + Map map = new HashMap<>(); + HeadList.ListNode tmp = head; + while (tmp != null){ //JC: tmp.next == null + if(map.get(tmp.val) == null){ //JC: map.get() return something + map.put(tmp.val,tmp); + } + else HeadList.delete(head,tmp); + tmp = tmp.next; + } + return head; + } + static HeadList.ListNode mergeTwoLists(HeadList.ListNode l1, HeadList.ListNode l2){ + HeadList list = new HeadList(); + HeadList.ListNode tmp1 = l1.next; //because of head node. + HeadList.ListNode tmp2 = l2.next; + while (true){ + if (tmp1 == null){ + for( ; tmp2 != null; tmp2 = tmp2.next){ + list.insert(tmp2.val); + } + break; + } + else if (tmp2 == null){ + for( ; tmp1 != null; tmp1 = tmp1.next){ + list.insert(tmp1.val); + } + break; + } + else if (tmp1.val > tmp2.val){ + list.insert(tmp2.val); + tmp2 = tmp2.next; + } + else { + list.insert(tmp1.val); + tmp1 = tmp1.next; + } + } + return list.getHead(); + } + static HeadList.ListNode swapPairs(HeadList.ListNode head){ + HeadList.ListNode pre, tmp, tail; + pre = head; + while (true){ + if (pre.next == null) break; + if (pre.next.next == null) break; + tmp = pre.next; + tail = pre.next.next.next; + pre.next = pre.next.next; + pre.next.next = tmp; + tmp.next = tail; + pre = pre.next.next; + } + return head; + } + static HeadList.ListNode detectCycle(HeadList.ListNode head){ + Map map = new HashMap<>(); + HeadList.ListNode tmp = head; + int pos = 0; + while (tmp != null){ //JC: tmp.next == null + if (map.get(tmp) == null){ //JC: map.get() return something + map.put(tmp,pos); + tmp = tmp.next; + pos++; + } + else break; + } + return tmp; + } + static HeadList.ListNode reverseKGroup(HeadList.ListNode head, int k){ + if(k == 1 || k == 0) return head; + HeadList.ListNode detect, pre, segPre, segTmp, tail, tailNext; + if (head.next == null) return head; + segPre = head; + detect = pre = segTmp = head.next; + if (head.next.next == null) return head; + tail = pre.next; + tailNext = tail.next; + while (true){ + int i = 0; + for ( ; i < k; i++){ + if (detect == null){ + segPre.next = tailNext; + return head; + } + else detect = detect.next; + } + for (int j = 0; j < k - 1; j++){ //K-1:N elements need N reverses. + tail.next = pre; + pre = tail; + + tail = tailNext; + if (tailNext != null) tailNext = tailNext.next; + + } + segPre.next = pre; + pre = tail; + tail = tailNext; + if (tailNext != null) tailNext = tailNext.next; + segPre = segTmp; + segTmp = pre; + } + } +} + + +/* Here is Supporting class + Name: HeadList + */ +class HeadList{ + static class ListNode{ + int val; + ListNode next; + ListNode(int x){ + val = x; + } + } + private ListNode head; + + HeadList() { + head = new ListNode(Integer.MIN_VALUE); + } + + ListNode getHead(){ + return this.head; + } + static boolean delete(ListNode head,ListNode node){ + if (head == null || node == null) return false; + ListNode tmp = head; + while (tmp.next != node && tmp.next != null){ //JC: tmp.next == node || tmp.next == null + tmp = tmp.next; + } + if (tmp.next == node){ + tmp.next = node.next; + return true; + } + else return false; + } + void insert(int x){ + ListNode tmp = new ListNode(x); + ListNode tail = head; + while (tail.next !=null){ + tail = tail.next; + } + tail.next = tmp; + } + static ListNode createCycle(int pos, HeadList list){ + ListNode tail = list.head; + while (tail.next !=null){ //get tail node. + tail = tail.next; + } + ListNode pre = list.head; + while (true){ + for (int i = 0; i < pos+1; i++){ //because of the head node. + pre = pre.next; + } + break; + } + tail.next = pre; + return list.head; + } + static int searchNode(ListNode node, HeadList list){ + ListNode tmp = list.head; + int index = 0; + while (node != tmp){ //JC: node == tmp + if (tmp != null){ + tmp = tmp.next; + index++; + } + else return -1; + } + return index - 1; + } + + +} + + +/* Here is Interface class + Name: Output Input + */ +class Output{ + static void printf(HeadList.ListNode head){ + HeadList.ListNode tmp = head; + while (tmp.next != null){ + System.out.print(tmp.next.val); + tmp = tmp.next; + + } + } + static void printf(int val){ + System.out.print(val); + } +} +class Input{ + static HeadList getHeadList(){ + Scanner sc = new Scanner(System.in); + int length = sc.nextInt(); + int[] array = new int[length]; + for (int i = 0; i < array.length; i++){ + array[i] = sc.nextInt(); + } + HeadList list = new HeadList(); + for (int i : array){ + list.insert(i); + } + return list; + } + static int getPositionOrK(){ + Scanner sc = new Scanner(System.in); + return sc.nextInt(); + } +} + diff --git "a/Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" "b/Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" new file mode 100644 index 00000000..053cc847 --- /dev/null +++ "b/Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" @@ -0,0 +1,3 @@ +以上是关于链表的五道问题的解。 +Main.java是以上方法实现的全部调用类,可以直接测试。 +但是没有测试模块,欢迎指正错误。 \ No newline at end of file From eac16f26dc1d18f08ea2acb65407974f4fc28c00 Mon Sep 17 00:00:00 2001 From: IMC666 Date: Thu, 18 Apr 2019 21:01:32 +0800 Subject: [PATCH 118/780] Update ReadMe.md --- "Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" "b/Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" index 053cc847..db46cbeb 100644 --- "a/Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" +++ "b/Week_01/id_82/\351\223\276\350\241\250/ReadMe.md" @@ -1,3 +1,3 @@ 以上是关于链表的五道问题的解。 -Main.java是以上方法实现的全部调用类,可以直接测试。 -但是没有测试模块,欢迎指正错误。 \ No newline at end of file +Main.java是以上方法实现的全部调用类。 +但是没有测试模块,欢迎指正错误。 From bede3ff8d394162451f496e0881c6f5376039116 Mon Sep 17 00:00:00 2001 From: IMC666 Date: Thu, 18 Apr 2019 21:07:48 +0800 Subject: [PATCH 119/780] Delete .DS_Store --- Week_01/id_82/.DS_Store | Bin 8196 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Week_01/id_82/.DS_Store diff --git a/Week_01/id_82/.DS_Store b/Week_01/id_82/.DS_Store deleted file mode 100644 index 4718dd1d9fce2f0f26ad7f94f889ec456c2dbb60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHLO;8*~6z;b`(lhy?iHTv>B&<*vRAN{p5Dke7Y(x|aDhmMuhRiZ!7&AMw?#!|Y z1Vz2Xs#so(npC`)Dyyt`N|~IjQZAO3KL?E_YUSX;gI@GzX{qJw?pXv9u4q-JtGZuL zzxU?#`}*7N?IDCfd)|l>Qb`D*Sh-|tu(?IydR}iTkzj-?0sTqZcGKAZB%QUbo21a3w!0~>J#Kv{~z zqF|r#4$4>{6M>wS5;a&rx}ub>5L_`py5o2(uuBATR!ZqkAh>)$5E+6S3W(_V{+KW) zkdQKLLj*zuZbpFrY$C7zeQF|I@Ujc<@1Eb#a1A0QrDdyDQ>s#Ro%&>I!Y!nH-OqdN zdTxY2_38dZI_USiu07w^(+4fHFvd1^xQ?$|j+qnAmSLjF=%D2oZlT@HJBBCTladNb z6{?J}%IWC`o9knZEsZnvvFUij?%nmV=7wD}GYZ{Y8{gY?By(bF`sB>BXJtMR><#(mai8}Nd2Y_{5QbxnU-{Q*!A!u$*b$um$Qlus(J{~a(wG4 z%ghZFEW@7|*1d7lF)Zik;H2eQY1`~~^o&^%DN~fIcW$m+r$x0bMb%Ol%4+CPK5add zxBL?##0 z^Lw+VgR}Y=!;9>yv`$Kgxwg$Pa8@;mI*FfvL1FxK(MUCEBCVv43=@MC$Z2whyhh$4 z7s(a!KKY1zLB1m2kZa^R`GNdIej&e;KggftFIWZTum!e36~y3P*agkd0twg;o$wfR z!2uYAVK@XMV8GL0Lk1iuz;p0CyZ|r4X*dIKz*#s47vK`S2bbXrd;lN99DE9&!PoE| zd@tu2DN?v+0Y$M3H?S#EHTZo-4&REZ(MLPg!YaH}g2B~x`_91l-MV7KvQoB!0DEtS;h?K(&C9YwY;4jn$NECMAmTqVE%?_d7= z|H@7(j20pgBCw(eKxs0SY{!txZOi4K?xlbaH fvr-CI92c%ASLj1Pc>Z(v$^1Xg@cb8e+-}W3Q-2na From 57174588f0ea7bcf90bc1c715fc8379825db3d9b Mon Sep 17 00:00:00 2001 From: yuanyunxu Date: Thu, 18 Apr 2019 22:12:37 +0800 Subject: [PATCH 120/780] Add LeetCode_687_122.php --- Week_01/id_122/LeetCode_687_122.php | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 Week_01/id_122/LeetCode_687_122.php diff --git a/Week_01/id_122/LeetCode_687_122.php b/Week_01/id_122/LeetCode_687_122.php new file mode 100644 index 00000000..e3896a41 --- /dev/null +++ b/Week_01/id_122/LeetCode_687_122.php @@ -0,0 +1,52 @@ +val = $value; } + * } + */ +class TreeNode { + public $val = null; + public $left = null; + public $right = null; + function __construct($value) { $this->val = $value; } +} + +class Solution { + private $maxP = 0; + + /** + * @param TreeNode $root + * @return Integer + */ + function longestUnivaluePath($root) { + if (!$root) { + return 0; + } + $this->maxP($root, $root->val); + return $this->maxP; + } + + function maxP($root, $val) { + if (!$root) { + return 0; + } + $left = $this->maxP($root->left, $root->left->val); + $right = $this->maxP($root->right, $root->right->val); + $this->maxP = max($this->maxP, $left + $right); + if ($root->val == $val) { + return max($left, $right) + 1; + } + return 0; + } +} \ No newline at end of file From efd25c6cf4f62502952088af4be96a7ba1720d67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=BE=E5=87=AF=E8=B6=85?= <> Date: Thu, 18 Apr 2019 22:29:28 +0800 Subject: [PATCH 121/780] format --- Week_01/id_61/leetcode_142_061.cpp | 32 ++ Week_01/id_61/leetcode_503_061.cpp | 25 ++ Week_01/id_61/week_1.h | 598 ----------------------------- 3 files changed, 57 insertions(+), 598 deletions(-) create mode 100644 Week_01/id_61/leetcode_142_061.cpp create mode 100644 Week_01/id_61/leetcode_503_061.cpp delete mode 100644 Week_01/id_61/week_1.h diff --git a/Week_01/id_61/leetcode_142_061.cpp b/Week_01/id_61/leetcode_142_061.cpp new file mode 100644 index 00000000..715b8d6c --- /dev/null +++ b/Week_01/id_61/leetcode_142_061.cpp @@ -0,0 +1,32 @@ +// +// Created by 贾凯超 on 2019/4/18. +// +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode(int x) : val(x), next(NULL) {} + * }; + */ + +//#142 给定一个链表,返回链表开始入环的第一个结点。 如果链表无环,则返回 null。 +//思考:使用hashMap存放走过的记录,但会增加额外空间 +//进阶:在不破坏原链表也不使用额外空间的情况下,使用快慢指针方案。但是由于可能不是一个完整的环 +//会导致时间效率降低很多 +class Solution { +public: + ListNode *detectCycle(ListNode *head) { + map temp; + ListNode *current = head; + while (current) { + //如果存在,说明曾经走过,第一次出现的即是第一个节点 + if (temp[current]) { + return current; + } + temp[current] = 1; + current = current->next ? current->next : NULL; + } + return NULL; + } +}; diff --git a/Week_01/id_61/leetcode_503_061.cpp b/Week_01/id_61/leetcode_503_061.cpp new file mode 100644 index 00000000..67f8fd10 --- /dev/null +++ b/Week_01/id_61/leetcode_503_061.cpp @@ -0,0 +1,25 @@ +// +// Created by 贾凯超 on 2019/4/18. +// +//#503 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素), +//输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序, +//这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。 +//思考:该算法时间复杂度为O(n^2),需要优化,另外没有用到stack,使用取模的方式控制循环 +class Solution { +public: + vector nextGreaterElements(vector& nums) { + vector result(nums.size()); + for (int i = 0; i < nums.size(); i++) { + int j = (i + 1) % nums.size(); + result[i] = -1; + while (i != j) { + if (nums[j] > nums[i]) { + result[i] = nums[j]; + break; + } + j = (j + 1) % nums.size(); + } + } + return result; + } +}; \ No newline at end of file diff --git a/Week_01/id_61/week_1.h b/Week_01/id_61/week_1.h deleted file mode 100644 index b5003348..00000000 --- a/Week_01/id_61/week_1.h +++ /dev/null @@ -1,598 +0,0 @@ -// -// Created by 贾凯超 on 2019/4/15. -// - -#ifndef TASKS_WEEK_1_H -#define TASKS_WEEK_1_H - -#endif //TASKS_WEEK_1_H - -using namespace std; - -#include -#include -#include -#include - -struct ListNode { - int val; - ListNode *next; - - ListNode(int x) : val(x), next(NULL) {} -}; - -struct TreeNode { - int val; - TreeNode *left; - TreeNode *right; - - TreeNode(int x) : val(x), left(NULL), right(NULL) {} -}; - -class WeekOneSolution { -public: - //链表部分 - ListNode *deleteDuplicates(ListNode *head); - - ListNode *mergeTwoLists(ListNode *l1, ListNode *l2); - - ListNode *swapPairs(ListNode *head); - - ListNode *detectCycle(ListNode *head); - - ListNode *reverseKGroup(ListNode *head, int k); - - //数组部分 - vector sortArrayByParity(vector &A); - - vector sortArrayByParityII(vector &A); - - bool search(vector &nums, int target); - - int findMin(vector &nums); - - int search1(vector &nums, int target); - - //栈部分 - bool isValid(string s); - - vector nextGreaterElements(vector &nums); - - //递归部分 - int longestUnivaluePath(TreeNode *root); - - int rTree(TreeNode *root, int val, int &result); - - bool canPartitionKSubsets(vector &nums, int k); - - bool rSubSum(vector &nums, vector &temp, int subSum); - - //排序 - bool isAnagram(string s, string t); - void wiggleSort(vector nums); - int maximumGap(vector& nums); - - //二分查找 - int arrangeCoins(int n); - double myPow(double x, int n); - int calculateMinimumHP(vector> dungeon); -}; - -//#83 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 -//链表题,边界问题 -//思考:利用hashMap记录,使用数组(如果只存储0/1状态,可以使用位存储) -//采坑:开始想使用一维数组存储,测试用例中有-1,所以只能使用map -ListNode *WeekOneSolution::deleteDuplicates(ListNode *head) { - map temp; - ListNode *current = head; - ListNode *pre = head; - while (current) { - //如果存在重复数据 - if (temp[current->val]) { - if (current->next) { - pre->next = current->next; - } else { - //边界问题处理 - pre->next = NULL; - } - } else { - temp[current->val] = 1; - pre = current; - } - if (!current->next) { - break; - } - current = current->next; - } - return head; -} - -//#21 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有结点组成的。 -//思考:合并两个有序链表,这里采用归并逻辑将两个链表按序写入新链表中。需要注意当一个链表为空时另一个链表的处理 -ListNode *WeekOneSolution::mergeTwoLists(ListNode *l1, ListNode *l2) { - ListNode *p = l1; - ListNode *q = l2; - ListNode *t = new ListNode(-1); - ListNode *head = t; - //合并 - while (p && q) { - if (p->val < q->val) { - t->next = p; - p = p->next ? p->next : NULL; - } else { - t->next = q; - q = q->next ? q->next : NULL; - } - t = t->next; - } - //如果有一个链表处理完,将剩下的链表直接链到最后 - if (q) { - t->next = q; - } - if (p) { - t->next = p; - } - return head->next; -} - -//#24 给定一个链表,两两交换其中相邻的结点,并返回交换后的链表。 -//思考:结点互相交换,可以使用两个指针分移动,然后交换。但是需要考虑奇数结点的问题 -ListNode *WeekOneSolution::swapPairs(ListNode *head) { - //如果是空链表或者单个链表直接返回 - if (!head || !head->next) return head; - ListNode *first = head; - ListNode *second = head->next; - ListNode *pre = NULL; - ListNode *result = second; - while (first && second) { - //交换结点,如果第二个结点后面无结点直接为NULL - first->next = second->next ? second->next : NULL; - second->next = first; - if (pre) { - pre->next = second; - } - //已经完成置换,或者还剩余一个结点不需要置换 - if (!first->next || !first->next->next) { - break; - } - //移动指针 - pre = first; - first = first->next; - second = first->next; - } - return result; -} - -//#142 给定一个链表,返回链表开始入环的第一个结点。 如果链表无环,则返回 null。 -//思考:使用hashMap存放走过的记录,但会增加额外空间 -//进阶:在不破坏原链表也不使用额外空间的情况下,使用快慢指针方案。但是由于可能不是一个完整的环 -//会导致时间效率降低很多 -ListNode *WeekOneSolution::detectCycle(ListNode *head) { - map < ListNode * , int > temp; - ListNode *current = head; - while (current) { - //如果存在,说明曾经走过,第一次出现的即是第一个结点 - if (temp[current]) { - return current; - } - temp[current] = 1; - current = current->next ? current->next : NULL; - } - return NULL; -} - -//#25 给出一个链表,每 k 个结点一组进行翻转,并返回翻转后的链表。 -//思考:分段反转采用双指针实现,本身思路并不复杂。但是不小心会被指针指晕 -ListNode *WeekOneSolution::reverseKGroup(ListNode *head, int k) { - int size = 1; - ListNode *first = NULL; - ListNode *last = NULL; - ListNode *pre = NULL; - ListNode *current = head; - //遍历链表,查找反转结点并反转 - while (current) { - if (size == 1) { - first = current; - } else if (size == k) { - last = current; - } - size++; - //用于current的后移,再反转过程中current->next会被修改 - ListNode *tCurrent = current->next ? current->next : NULL; - //链表反转,这里建议重写一个新方法增加可读性 - if (first && last) { - ListNode *t = first; - ListNode *p = first; - ListNode *tt; - ListNode *tp; - while (t) { - tt = t->next ? t->next : NULL; - tp = t == first ? first : t; - if (t != first) { - t->next = p; - } - if (t == last) { - if (pre) { - pre->next = t; - } else { - head = t; - } - break; - } - p = tp; - t = tt; - } - first->next = tCurrent; - //完成链表反转,重置状态 - pre = first; - first = last = NULL; - size = 1; - } - current = tCurrent; - } - return head; -} - -//#905 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 -//思考:使用双指针,分别从前后遍历,然后互相交换 -vector WeekOneSolution::sortArrayByParity(vector &A) { - int left = 0; - int right = A.size() - 1; - while (left != right) { - if (A[left] % 2 == 0) { - left++; - continue; - } - if (A[right] % 2 == 1) { - right--; - continue; - } - swap(A[left], A[right]); - } - return A; -} - -//#922 给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。 -//思考:简单思路新建一个数组存放即可 -vector WeekOneSolution::sortArrayByParityII(vector &A) { - vector result(A.size()); - int odd = 1; - int even = 0; - for (int i : A) { - if (i % 2 == 0) { - result[even] = i; - even += 2; - } - if (i % 2 == 1) { - result[odd] = i; - odd += 2; - } - } - return result; -} - -//#81 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 -//( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 -//编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 -//思考:有序数组查找,直接二分 -bool WeekOneSolution::search(vector &nums, int target) { - if (nums.size() == 0) { - return false; - } - vector l; - vector r; - if (nums[0] == target) { - return true; - } - for (int i = 1; i < nums.size(); i++) { - if (nums[i] > nums[0]) { - r.push_back(nums[i]); - } - if (nums[i] < nums[0]) { - l.push_back(nums[i]); - } - } - if (target > nums[0]) { - return search(r, target); - } - if (target < nums[0]) { - return search(l, target); - } - return false; -} - -//#153 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 -//( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 -//请找出其中最小的元素。 -//思考:找到旋转点,因为是升序数组旋转 最小的数一定在旋转点,或者数组最开始 -int WeekOneSolution::findMin(vector &nums) { - int rotatePoint = INT_MAX; - if (nums.size() == 1) { - return nums[0]; - } - if (nums.size() <= 0) { - return NULL; - } - for (int i = 1; i < nums.size(); i++) { - if ((nums[i] - nums[i - 1]) < 0) { - rotatePoint = nums[i]; - } - } - return min(rotatePoint, nums[0]); -} - -//#33 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 -//( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 -//搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 -//你可以假设数组中不存在重复的元素。 -//你的算法时间复杂度必须是 O(log n) 级别。 -//思考:这个题目跟#81很像,思路应该也差不多,所以偷个懒快速解决 -int WeekOneSolution::search1(vector &nums, int target) { - for (int i = 0; i < nums.size(); i++) { - if (target == nums[i]) { - return i; - } - } - return -1; -} - -//#20 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 -//有效字符串需满足: -//左括号必须用相同类型的右括号闭合。 -//左括号必须以正确的顺序闭合。 -//注意空字符串可被认为是有效字符串。 -//思考:栈的应用,要注意最后判断栈是否为空 -bool WeekOneSolution::isValid(string s) { - if (s.size() == 0) { - return true; - } - stack temp; - for (char c : s) { - if (c == ')' || c == ']' || c == '}') { - if (temp.empty()) return false; - char top = temp.top(); - switch (c) { - case '}': - if (top != '{') return false; - break; - case ']': - if (top != '[') return false; - break; - case ')': - if (top != '(') return false; - break; - } - temp.pop(); - } else if (c == '(' || c == '[' || c == '{') { - temp.push(c); - } - } - if (!temp.empty()) return false; - return true; -} - -//#503 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素), -//输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序, -//这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。 -//思考:该算法时间复杂度为O(n^2),需要优化,另外没有用到stack,使用取模的方式控制循环 -vector WeekOneSolution::nextGreaterElements(vector &nums) { - vector result(nums.size()); - for (int i = 0; i < nums.size(); i++) { - int j = (i + 1) % nums.size(); - result[i] = -1; - while (i != j) { - if (nums[j] > nums[i]) { - result[i] = nums[j]; - break; - } - j = (j + 1) % nums.size(); - } - } - return result; -} - -//[?]#687 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。 -//思考:父节点跟子节点相同时最大长度要+1 -int WeekOneSolution::longestUnivaluePath(TreeNode *root) { - if (!root) return 0; - int result = 0; - rTree(root, root->val, result); - return result; -} - -int WeekOneSolution::rTree(TreeNode *root, int val, int &result) { - if (!root) return 0; - //左子树最长路径 - int left = rTree(root->left, root->val, result); - //右子树最长路径 - int right = rTree(root->right, root->val, result); - result = max(result, left + right); - if (root->val == val) - return max(left, right) + 1; - return 0; -} - -//[?] #698 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 -//思考:解决方案有问题,后续再研究 -bool WeekOneSolution::canPartitionKSubsets(vector &nums, int k) { - int sum = 0; - for (int i : nums) { - sum += i; - } - if (sum % k != 0) return false; - int subSum = sum / k; - sort(nums.begin(), nums.end()); - if (nums.back() > subSum) return false; - while (nums.size() && (nums.back() == subSum)) { - nums.pop_back(); - k -= 1; - } - vector temp(k, 0); - return rSubSum(nums, temp, subSum); -} - -bool WeekOneSolution::rSubSum(vector &nums, vector &temp, int subSum) { - if (!nums.size()) return true; - int v = nums.back(); - nums.pop_back(); - - for (vector::iterator i = temp.begin(); i != temp.end(); i++) { - if (v + *i <= subSum) { - *i += v; - if (rSubSum(nums, temp, subSum)) return true; - *i -= v; - } - - if (*i == 0) break; - } - - return false; -} - -//#242 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 -//思考:异位词排序后应该完全相同 -bool WeekOneSolution::isAnagram(string s, string t) { - sort(s.begin(), s.end()); - sort(t.begin(), t.end()); - return s == t; -} - -//#324 给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。 -//思考:该题难点在于如何将数组调整到大小穿插排列。方案:先排序,然后分成两部分。将数据按顺序写入临时数组 -void WeekOneSolution::wiggleSort(vector nums) { - if (nums.size() <= 1) { - return; - } - vector temp(nums.size()); - sort(nums.begin(), nums.end()); - //数组分为两部分,第一部分是0到i; 第二部分是i 到j - 1 - int i = (nums.size() + 1) / 2; - int j = nums.size(); - for (int m = 0; m < temp.size(); m++) { - if (m % 2 == 1) { - temp[m] = nums[--j]; - } else { - temp[m] = nums[--i]; - } - } - nums = temp; -} - -//#164 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 -//如果数组元素个数小于 2,则返回 0。 -//思考:难点在于线性条件下的排序。可以考虑用空间换时间,桶排序? -int WeekOneSolution::maximumGap(vector &nums) { - if (nums.size() < 2) return 0; - sort(nums.begin(), nums.end()); - int value = 0; - for (int i = 1; i < nums.size(); i++) { - int temp = nums[i] - nums[i - 1]; - value = max(temp, value); - } - return value; -} - -//#441 你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 -//给定一个数字 n,找出可形成完整阶梯行的总行数。 -//n 是一个非负整数,并且在32位有符号整型的范围内。 -int WeekOneSolution::arrangeCoins(int n) { - int l = 1; - while (n > 0) { - n = n - l; - if (n >= 0) l++; - } - return l - 1; -} - -//#50 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 -//思考:解法一为简单相乘,但是会有重复计算,所以可以采用分治。 -//解法二:采用递归实现分治,但是时间效率还是低,所以改用循环二分,也就是解法三 -//采坑:一开始使用abs()求绝对值,但是用例中的范围超出了限制 -double WeekOneSolution::myPow(double x, int n) { -//解法一:直接乘 -// double result = 1; -// for (int i = 0; i < abs(n); i++) { -// result *= x; -// } -// return n >= 0 ? result : 1 / result; -//=========================================== -//解法二:二分递归 -// if (n == 1) return x; -// if (n == -1) return 1 / x; -// if (n == 0) return 1; -// double result = 0; -// if (abs(n) % 2 == 0) { -// result = myPow(x, abs(n / 2)) * myPow(x, abs(n / 2)); -// } else { -// result = myPow(x, abs(n / 2)) * myPow(x, abs(n / 2)) * x; -// } -// return n > 0 ? result : 1 /result; -//解法三:二分非递归 - double result = 1; - int i = n; - while (i != 0) { - if (i % 2 != 0) { - result *= x; - } - x *= x; - i /= 2; - } - return n > 0 ? result : 1 / result; -//解法四:直接使用库函数 -// return pow(x, n); -} - -//#174 编写一个函数来计算确保骑士能够拯救到公主所需的最低初始健康点数。 -//思考:可用DFS算法,计算出所有的解。 -//又相当于子区域的最低点数的子问题,使用动态规划解决 -//重要的事说三遍:先画递归树!先画递归树!先画递归树! -//该方案超出时间限制需要优化时间复杂度 -int WeekOneSolution::calculateMinimumHP(vector> dungeon) { - //条件判断 - int m = dungeon.size(); - int n = dungeon[0].size(); - if (dungeon.empty()) return 0; - if (m == 1 && n == 1) { - return max(1 - dungeon[0][0], 1); - } - //数组分片 - vector> down(m -1, vector(n, 0)); - vector> right(m, vector(n - 1, 0)); - int healthPoint = dungeon[0][0]; - if (m > 1) { - for (int i = 1; i < m; i++) { - for (int j = 0; j < n; j++) { - down[i - 1][j] = dungeon[i][j]; - } - } - } - if (n > 1) { - for (int i = 0; i < m; i++) { - for (int j = 1; j < n; j++) { - right[i][j - 1] = dungeon[i][j]; - } - } - } else { - right.clear(); - } - int health = 0; - //判断递归,解决子问题 - if (!right.empty() && down.empty()) { - health = calculateMinimumHP(right) - healthPoint; - healthPoint = health <= 0 ? 1 : health; - } - if (!down.empty() && right.empty()) { - health = calculateMinimumHP(down) - healthPoint; - healthPoint = health <= 0 ? 1 : health; - } - if (!right.empty() && !down.empty()) { - health = min(calculateMinimumHP(down), calculateMinimumHP(right)) - healthPoint; - healthPoint = health <= 0 ? 1 : health; - } - return healthPoint; -} - - - - - From 29a6b67f900e2d5d6257e5be93e60c5d79a547a5 Mon Sep 17 00:00:00 2001 From: liyanling Date: Thu, 18 Apr 2019 22:32:36 +0800 Subject: [PATCH 122/780] rename all file --- .../LinkedList_leetcode142-Solution1.java | 44 ------------------ ..._leetcode25-\345\233\276\347\244\272.jpeg" | Bin 300704 -> 0 bytes ..._leetcode25-\345\233\276\350\247\243.pptx" | Bin 58009 -> 0 bytes ...2-Solution2.java => leetcode_142_118.java} | 0 ...t_leetcode21.java => leetcode_21_118.java} | 0 ...t_leetcode24.java => leetcode_24_118.java} | 0 ...t_leetcode25.java => leetcode_25_118.java} | 0 ...t_leetcode83.java => leetcode_83_118.java} | 0 ...leetcode905.java => leetcode_905_118.java} | 0 ...leetcode922.java => leetcode_922_118.java} | 0 10 files changed, 44 deletions(-) delete mode 100644 Week_01/id_118/LinkedList_leetcode142-Solution1.java delete mode 100644 "Week_01/id_118/LinkedList_leetcode25-\345\233\276\347\244\272.jpeg" delete mode 100644 "Week_01/id_118/LinkedList_leetcode25-\345\233\276\350\247\243.pptx" rename Week_01/id_118/{LinkedList_leetcode142-Solution2.java => leetcode_142_118.java} (100%) rename Week_01/id_118/{LinkedList_leetcode21.java => leetcode_21_118.java} (100%) rename Week_01/id_118/{LinkedList_leetcode24.java => leetcode_24_118.java} (100%) rename Week_01/id_118/{LinkedList_leetcode25.java => leetcode_25_118.java} (100%) rename Week_01/id_118/{LinkedList_leetcode83.java => leetcode_83_118.java} (100%) rename Week_01/id_118/{Array_leetcode905.java => leetcode_905_118.java} (100%) rename Week_01/id_118/{Array_leetcode922.java => leetcode_922_118.java} (100%) diff --git a/Week_01/id_118/LinkedList_leetcode142-Solution1.java b/Week_01/id_118/LinkedList_leetcode142-Solution1.java deleted file mode 100644 index 592fe204..00000000 --- a/Week_01/id_118/LinkedList_leetcode142-Solution1.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * https://leetcode-cn.com/problems/linked-list-cycle-ii/ - * - * Definition for singly-linked list. - * class ListNode { - * int val; - * ListNode next; - * ListNode(int x) { - * val = x; - * next = null; - * } - * } - */ -public class Solution { - public ListNode detectCycle(ListNode head) { - // 不允许修改给定的链表。也就是不能在数据节点做标记,也不能修改链表节点指向。 - // 换个思路,用哈希表 - - // 1. 边界处理 - if(head == null || head.next == null){ - return null; - } - - // 2. 定义哈希表 - HashSet hashSet = new HashSet<>(); - - // 3. 加哨兵节点和临时节点 - ListNode guard = new ListNode(-1); - guard.next = head; - ListNode cur = guard; - - // 4. 访问过则直接返回,没有则加进去。 - while(null != cur.next){ - if(hashSet.contains(cur.next)){ - return cur.next; - } - cur = cur.next; - hashSet.add(cur); - } - - // 5. 到最后都没找到,则无环 - return null; - } -} diff --git "a/Week_01/id_118/LinkedList_leetcode25-\345\233\276\347\244\272.jpeg" "b/Week_01/id_118/LinkedList_leetcode25-\345\233\276\347\244\272.jpeg" deleted file mode 100644 index 9b69231ac5bed62375d08d9db29b4fa228365063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300704 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