摘要: 双向链表和我们前面讲的单链表最大的区别就是多了一个前驱结点 我们第一步还是定义Sequence接口,它里面都是双向链表一些基本的操作,增删查改等 Sequence接口定义如下: 下面是双向链表类中实现Sequence接口的方法实现: 首先我们先定义DoubleLinkListImpl类, 该类中具体 阅读全文
posted @ 2019-03-19 14:17 码到成功hy 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 代码中有详细注释,直接看代码: 阅读全文
posted @ 2019-03-15 21:45 码到成功hy 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 思想:找到中间位置,中间位置以后逆序,然后从中间位置的下一个结点开始与头结点开始向后比较,如果不相等直接返回false,否则返回true,这个题的另一个考点就是如何计算中间节点,其实很简单,定义一个快慢指针,快指针变化幅度是慢指针的二倍,结束后慢指针的位置就是中间节点的位置。 代码如下: 阅读全文
posted @ 2019-03-14 23:21 码到成功hy 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 方法一: 用三指针法解决此题定义结点f和s分别指向第一个结点和第二个结点,定义虚拟结点dummyHead,让它的next指向第一个结点,具体步骤如下图: 代码实现如下: 方法二: 阅读全文
posted @ 2019-03-14 23:11 码到成功hy 阅读(574) 评论(0) 推荐(0) 编辑
摘要: 归并排序算法思想: 分而治之(divide - conquer);每个递归过程涉及两个步骤 第一, 分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括 n/2 个元素. 第二, 合并: 合并两个排好序的子序列,生成排序结果. 第一步: 第二步: main函数: 运行结果: [11 阅读全文
posted @ 2019-03-12 22:57 码到成功hy 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 链表我们可以看成一列火车,有车头,有结点,首先,我们先定义Sequence接口,它里面包含一些基本的增删查改等方法,然后我们定义SequenceLinkImpl类用来实现Sequnece接口 下面先写出Sequence接口的一些方法: 下面是接口方法具体实现,在SequenceLinkImpl类中先 阅读全文
posted @ 2019-03-12 22:52 码到成功hy 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 思路:首先对数组进行排序 Arrays.sort(arr); 将前三个数相加赋给closeNum,表示初始化 int closeNum 阅读全文
posted @ 2019-03-11 22:54 码到成功hy 阅读(3477) 评论(0) 推荐(0) 编辑
摘要: 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: [-1,-1] 思路:定义两个变量start和end,分别指向数组首元素和末尾元素,当start 阅读全文
posted @ 2019-03-11 22:43 码到成功hy 阅读(1986) 评论(0) 推荐(0) 编辑
摘要: 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。 例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。 示例 1: 输入:["bella","label","rolle 阅读全文
posted @ 2019-03-11 09:23 码到成功hy 阅读(1602) 评论(0) 推荐(0) 编辑
摘要: 前面我们已经给出过三数之和等于0的代码,不过改代码在LeetCode上面超出时间限制,所以说,不能完全说解出该题,今天我们给出优解, 直接上代码: 思路:先对数组进行排序,用for循环控制一个变量i,另外两个j和k分别指向结尾和当前i的下一个位置,进行查找。 阅读全文
posted @ 2019-03-10 22:36 码到成功hy 阅读(565) 评论(0) 推荐(0) 编辑
获取

hahah

name age option