diff --git a/code/lc100.java b/code/lc100.java new file mode 100644 index 0000000000000000000000000000000000000000..03370888d84f3eea2290522f24fbfd0034b76a56 --- /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 0000000000000000000000000000000000000000..fa9b04cb6615bce75af05b5728e59ea454139686 --- /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 d0300fceca0226a8c854f02a4259d4260fbfc2a0..45333beb180d542da4e33b03067298e11d614efa 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 a90d5baaadc26c9f5aea19acf3dc9eab65bed96c..30aa041874aa72e01a40f3fd97866bad3e5fe842 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 e1eb4237e1b5460abe1975aa18711c34d99d7f76..5dc786589c0009f7bc6d98fba6d345b7cb8f5252 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 42ac9d7e4711738938e5da636d2bb6828ec65170..7daa6a6c33d66b1f63bac297f5985dc2c39417fe 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 0bba29d0600e9d4d79dfe650f910859156303dc6..491f0ccd0e47351d55f588d2699982dc9d335780 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 c80cf43832a2e74e25042b90265d5e3e53385d7b..da6786ed7ccc717841915bf291c895384594f5b2 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 9c964da096610b7a455a0e5ba6bbde2bdc38dfc7..68336f27fe772f272342aea9fc84b0f67cacd89f 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 0805da52f47d6dfa7b93337da0b8cffe1cc8d859..296e7fe8f58babd70df7edb1cc747d737bd8b18c 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 0000000000000000000000000000000000000000..c85e343883b8361d27c4001d90c6c7f7b4429eb7 --- /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 f01c46024136b7132696fa9e1b3be6f775c2828a..54dd6ba0c30f17cc45d14a8311a9915038c82fd2 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)