From d3e07b15a67c3a6fdd1c0a8b958e0c0bd7b6d0e9 Mon Sep 17 00:00:00 2001 From: liu13 <1099976891@qq.com> Date: Wed, 6 Mar 2019 09:54:58 +0800 Subject: [PATCH] 20190306 --- code/lc138.java | 2 +- readme.md | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/code/lc138.java b/code/lc138.java index 46801df..5b01d3a 100644 --- a/code/lc138.java +++ b/code/lc138.java @@ -6,7 +6,7 @@ package code; * 分类:Hash Table, LinkedList * 思路:一种用HashTable,把源节点和复制的节点对应起来,空间复杂度为O(n) * 把要复制的节点直接连接在该节点之后,操作完以后再分开 - * Tips:和139做对比,因为需要每步骤返回值,所以递归的方法在这题更合适 + * Tips:因为需要每步骤返回值,所以递归的方法在这题更合适 */ public class lc138 { class RandomListNode { diff --git a/readme.md b/readme.md index 3631c66..56ef6cd 100644 --- a/readme.md +++ b/readme.md @@ -2,16 +2,18 @@ LeetCode 指南 === - 语言: Java -- 说明: 每道题在代码头部都添加了我的解题思路和想法,Eg: +- 说明: 每道题在代码头部都添加了我的解题思路和批注,Eg: /* - * 160. Intersection of Two Linked Lists - * 题意:求两个链表的交叉点 - * 难度:Easy - * 分类:LinkedList - * 思路:两种方法:1.找出两个链表的长度差x,长的先走x步; 2.走完一个链表,走另一个链表,两个cur都走了两个链表长度的和步 - * Tips:两种方法的本质是一样的其实,都是找到了步数差,都遍历了两遍 + * 287. Find the Duplicate Number + * 题意:n+1个数属于[1~n],找出重复的那个数 + * 难度:Medium + * 分类:Array, Two Pointers, Binary Search + * 思路:如果nums[i]不在对应位置,则和对应位置交换。如果对应位置上也为该数,说明这个数就是重复的数字。这个方法改变了数组。是错误的。 + * 另一种方法,把问题转换成有环链表,找环的起始节点。O(n) O(1) lc142 + * 二分查找,每次看一边数字的个数, O(nlog(n)) O(1) + * Tips:剑指offer原题 */ --- -- GitLab