- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 跳台阶
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解题思路:典型的动态规划题,我们可以将求跳到n级台阶的问题转换为求跳到(n-1)级台阶跳法数和跳到(n-2)级台阶的跳法数dp方程:dp[n] = dp[n-1] + dp[n-2]实现代码:public class Solution { //非递归解法 ...
2019-09-07 20:20:11
332
原创 二叉树的镜像
题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。解题思路:所谓的镜像二叉树,也就是将左右子树翻转实现代码:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...
2019-09-07 19:49:26
146
原创 树的子结构
题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路:挨个递归比较root2的节点和root1的节点是否相等实现代码:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; publi...
2019-09-04 22:43:11
157
原创 调整数组顺序使奇数位于偶数前面
题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路:实现代码:public class Solution { public void reOrderArray(int [] array) { if(array == null){ ...
2019-09-04 22:25:45
137
原创 合并两个排序的链表
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路:可以利用归并排序的思想,比较两个链表的节点,小的先出实现代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val ...
2019-09-04 22:12:14
169
1
原创 翻转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。解题思路:第一种解题思路就是使用栈,先遍历一次链表,存储所有的链表节点,再重新构造一个链表,显然这种解法不是最好的。于是就有了第二种,用一个指针记录当前节点的前一个节点,并且将当前节点的next指针指向前一个节点,实现链表翻转的目的实现代码:/*public class ListNode { int val; Li...
2019-09-02 22:30:28
132
原创 链表中倒数第K个节点
题目描述:输入一个链表,输出该链表中倒数第k个结点。解题思路:快慢指针法,让快指针先行k步,当快的指针到达链表尾时,慢的指针正好指向链表倒数第k个节点实现代码:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;...
2019-09-02 22:01:48
130
原创 重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:二叉树的前序遍历,第一个元素始终为树的更节点;根据前序遍历得到的根节点,在二叉树的中序遍历中,将中序遍历序列分为左子树和右子树的中序遍历...
2019-09-02 21:46:07
174
原创 从尾到头打印链表
题目描述:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解题思路:方法一:使用栈,从头遍历链表,存储每个节点的值,然后再输出栈方法二:使用递归实现代码:public class Solution { /** * public class ListNode { * int val; * ListNode next = null;...
2019-09-02 20:53:58
109
原创 替换空格
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。题目分析:从后往前开始替换原字符串代码实现:public class Solution { public String replaceSpace(StringBuffer str) { if(str ==...
2019-09-01 21:40:28
145
原创 二维数组中的查找
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题目分析:根据矩阵的特性从矩阵左下角或右上角可是查找,如果从矩阵左下角开始查找,则要查找的数始终是在当前数,如果当前的数小于目标数,则向右边移动,往递增的方向移动;如果当前的数大于目标,则向上...
2019-09-01 20:37:53
146
原创 HashMap源码分析笔记(JDK1.8)
HashMap源码分析(JDK1.8)查看以往的文章空易缘的博客本文是java集合源码分析第三篇,上一篇LinkedList源码分析笔记自己学习总结的笔记,不保证完全正确,HashMap这篇相对于前面的源码分析,难度提高了很多,有写的不对的地方,还望大佬们多多指教,我会及时修正概述继承自AbstractMap抽象类,实现了Map、Cloneable、Serializable接口...
2019-07-23 21:42:57
199
原创 LinkedList源码分析(JDK1.8)
LinkedList源码分析笔记概述继承自AbstractSequentialList抽象类,实现了List、Deque、Cloneable、Serializable接口基于双向链表实现的集合,可以做为双向队列的实现类不支持随机访问,没有实现RandomAccess接口,查找元素效率较低插入和删除操作效率较高,没有扩容操作,也不需要预留空间源码分析字段信息public clas...
2019-07-21 16:02:17
175
原创 源码分析笔记Vector(JDK1.8)
Vector源码分析(JDK1.8)概述继承抽象类AbStractList,实现接口List、RandomAccess、Cloneable以及序列化接口默认容量大小为10,扩容增量为0,扩容为原容量的2倍如设置的增量大于0,则扩容为(原容量+增量)支持随机访问,添加删除元素较慢线程安全的动态数组,方法加上了synchronized同步锁,故性能较低源码字段信息public c...
2019-07-20 15:41:48
446
原创 源码分析笔记ArrayList(JDK1.8)
终于开始写博客了,前面想了很多次写博客,但是都没有动笔,苦于不知如何表述,最近开始复习集合,想通过写博客加深自己的印象,记录自己的理解,该篇文章从构造方法入手,然后到常用的一些方法,摘取JDK中源码,在上面加上自己的理解,有不对的不严谨的地方还望大佬们多多指正概述继承AbstractList抽象类,实现List接口底层用数组存放数据,默认容量大小为10扩容倍数为1.5倍线程不安全的支...
2019-07-18 18:11:07
207
飞机大战客户端服务端.zip
2020-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅