From dc31857458b831f2987ca8e2cb9fecc74ee5a890 Mon Sep 17 00:00:00 2001 From: liu13 <1099976891@qq.com> Date: Thu, 14 Mar 2019 14:54:32 +0800 Subject: [PATCH] 0314 --- code/lc100.java | 25 +++++++++++++++++++++++++ code/lc119.java | 26 ++++++++++++++++++++++++++ code/lc14.java | 4 ---- code/lc17.java | 1 + code/lc19.java | 2 +- code/lc2.java | 3 --- code/lc26.java | 1 + code/lc27.java | 2 +- code/lc28.java | 1 + code/lc29.java | 2 +- code/lc83.java | 29 +++++++++++++++++++++++++++++ readme.md | 3 +++ 12 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 code/lc100.java create mode 100644 code/lc119.java create mode 100644 code/lc83.java diff --git a/code/lc100.java b/code/lc100.java new file mode 100644 index 0000000..0337088 --- /dev/null +++ b/code/lc100.java @@ -0,0 +1,25 @@ +package code; +/* + * 100. Same Tree + * 题意:判断两棵树是否一样 + * 难度:Easy + * 分类: + * 思路: + * Tips: + */ +public class lc100 { + public class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode(int x) { + val = x; + } + } + public boolean isSameTree(TreeNode p, TreeNode q) { + if(p==null&&q==null) return true; + if( (p==null&&q!=null)||(q==null&&p!=null) ) return false; + if(p.val!=q.val) return false; + return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); + } +} diff --git a/code/lc119.java b/code/lc119.java new file mode 100644 index 0000000..fa9b04c --- /dev/null +++ b/code/lc119.java @@ -0,0 +1,26 @@ +package code; + +import java.util.ArrayList; +import java.util.List; + +/* + * 119. Pascal's Triangle II + * 题意:和118一样,就是输出不一样 + * 难度:Easy + * 分类:Array + * 思路:记一下 ArrayList.set 方法,不用重新 new ArrayList + * Tips: + */ +public class lc119 { + public List getRow(int rowIndex) { + ArrayList res = new ArrayList<>(); + res.add(0,1); + while(rowIndex-->0){ + res.add(0,1); + for (int i = 1; i < res.size()-1 ; i++) { + res.set(i, res.get(i)+res.get(i+1)); + } + } + return res; + } +} diff --git a/code/lc14.java b/code/lc14.java index d0300fc..45333be 100644 --- a/code/lc14.java +++ b/code/lc14.java @@ -9,10 +9,6 @@ package code; import java.util.Arrays; public class lc14 { - public static void main(String[] args) { - - } - public static String longestCommonPrefix(String[] strs) { //不是最优的方法,多做了比较 if(strs.length==0) return ""; diff --git a/code/lc17.java b/code/lc17.java index a90d5ba..30aa041 100644 --- a/code/lc17.java +++ b/code/lc17.java @@ -5,6 +5,7 @@ import java.util.Vector; * 17. Letter Combinations of a Phone Number * 题意:手机键盘字母输入 * 难度:Medium + * 思路:思路记一下,每次放到vector中,遍历vector,加上所有的可能 * 分类:String, Backtracking */ public class lc17 { diff --git a/code/lc19.java b/code/lc19.java index e1eb423..5dc7865 100644 --- a/code/lc19.java +++ b/code/lc19.java @@ -4,7 +4,7 @@ package code; * 题意:删除链表中倒数第n个节点 * 难度:Medium * 分类:Linked List, Two Pointers - * 思路:快慢指针,快指针达到链表尾部时,满指针所在位置即为操作的节点 + * 思路:快慢指针,快指针达到链表尾部时,慢指针所在位置即为操作的节点 * 注意:看清题意,是倒数第n个,且复杂度为n */ public class lc19 { diff --git a/code/lc2.java b/code/lc2.java index 42ac9d7..7daa6a6 100644 --- a/code/lc2.java +++ b/code/lc2.java @@ -9,9 +9,6 @@ package code; * 注意考虑两个链表长度不一致的问题 */ public class lc2 { - public static void main(String[] args) { - - } public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int sum = 0; diff --git a/code/lc26.java b/code/lc26.java index 0bba29d..491f0cc 100644 --- a/code/lc26.java +++ b/code/lc26.java @@ -4,6 +4,7 @@ package code; * 题意:移除数组中重复元素 * 难度:Easy * 分类:Array, Two Pointers + * lc27 */ public class lc26 { public static void main(String[] args) { diff --git a/code/lc27.java b/code/lc27.java index c80cf43..da6786e 100644 --- a/code/lc27.java +++ b/code/lc27.java @@ -6,7 +6,7 @@ package code; * 分类:Array, Two Pointers * 思路:两个指针,分别O(n),指向要交换的位置和和他交换的数 * 答案中直接遍历一遍数组,放到位置上就行了,i++ - * Tips: + * Tips:lc26 */ public class lc27 { public int removeElement(int[] nums, int val) { diff --git a/code/lc28.java b/code/lc28.java index 9c964da..68336f2 100644 --- a/code/lc28.java +++ b/code/lc28.java @@ -5,6 +5,7 @@ package code; * 难度:Easy * 分类:Two Pointers, String * Tips:注意判断子串为空的方法为needle.length()==0,不要用needle=="" + * 最优的解法应该是O(N)的,类似KMP的思路,不过面试不会让写KMP的 */ public class lc28 { public static void main(String[] args) { diff --git a/code/lc29.java b/code/lc29.java index 0805da5..296e7fe 100644 --- a/code/lc29.java +++ b/code/lc29.java @@ -5,7 +5,7 @@ package code; * 难度:Medium * 分类:Math, Binary Search * 思路:被除数减去除数,除数每次左移一位,也就是*2 来实现类似二分的思想 - * Tips:注意下用long类型,以及溢出的情况 + * Tips:注意下用long类型,以及溢出的情况,注意符号 */ public class lc29 { public static void main(String[] args) { diff --git a/code/lc83.java b/code/lc83.java new file mode 100644 index 0000000..c85e343 --- /dev/null +++ b/code/lc83.java @@ -0,0 +1,29 @@ +package code; +/* + * 83. Remove Duplicates from Sorted List + * 题意:移除重复值的节点,链表已排序 + * 难度:Easy + * 分类: + * 思路: + * Tips: + */ +public class lc83 { + public class ListNode { + int val; + ListNode next; + ListNode(int x) { + val = x; + } + } + public ListNode deleteDuplicates(ListNode head) { + if(head==null) return head; + ListNode curr = head; + ListNode res = head; + while(curr!=null){ + while( head!=null && head.val==curr.val) head = head.next; + curr.next = head; + curr = head; + } + return res; + } +} diff --git a/readme.md b/readme.md index f01c460..54dd6ba 100644 --- a/readme.md +++ b/readme.md @@ -101,6 +101,7 @@ LeetCode 指南 | 120 [Java](./code/lc120.java) | 121 [Java](./code/lc121.java) | 122 [Java](./code/lc122.java) +| 123 [Java](./code/lc123.java) | 124 [Java](./code/lc124.java) | 125 [Java](./code/lc125.java) | 127 [Java](./code/lc127.java) @@ -129,6 +130,7 @@ LeetCode 指南 | 171 [Java](./code/lc171.java) | 172 [Java](./code/lc172.java) | 179 [Java](./code/lc179.java) +| 188 [Java](./code/lc188.java) | 189 [Java](./code/lc189.java) | 190 [Java](./code/lc190.java) | 191 [Java](./code/lc191.java) @@ -206,6 +208,7 @@ LeetCode 指南 | 617 [Java](./code/lc617.java) | 621 [Java](./code/lc621.java) | 647 [Java](./code/lc647.java) +| 714 [Java](./code/lc714.java) | 746 [Java](./code/lc746.java) | 771 [Java](./code/lc771.java) | 877 [Java](./code/lc877.java) -- GitLab