- 博客(41)
- 收藏
- 关注
原创 05-面试题9--用两个栈实现队列
package com.my.offer;import java.util.Stack;/*** * 用两个栈实现队列add(),poll(),peek() * 定义两个栈结构stackPush(只做压入栈),stackPop(只做弹出栈) * 注意两个原则: * 1>如果要将stackPush中的数据压入stackPop,必须将stackPush中的数据全部压入stackP...
2019-05-08 16:32:27
176
原创 04-面试题7--重建二叉树
package com.my.util;/** * 二叉树的节点 * */public class TreeNode { public int value; public TreeNode left; public TreeNode right; public TreeNode(int data) { this.value = data; }}已知先序和中序序列,重建...
2019-05-08 16:31:31
140
原创 03-面试题6--从尾到头打印链表
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.offer;import j...
2019-05-07 20:16:52
162
原创 02-面试题5--替换空格
package com.my.offer;/** * 替换空格 * @author asus * */public class Solution02 { public String replaceSpace(StringBuffer str) { //拷贝str1,不改变参数内容 String str1 = str.toString(); if(str1.equals("...
2019-05-07 20:16:12
127
原创 01-面试题4--二维数组中的查找
package com.my.offer;/** * 二维数组的查找 * @author asus * */public class Solution01 { /** * 二维数组的查找: * 从右上角开始查找,因为二维数组每行从左到右递增,每列从上 * 到下递增,因此: * 1.当目标元素小与当前元素,则将小与当前列的所有元素,当前 * 列可以排除 * 2....
2019-05-07 20:15:23
119
原创 十大经典排序算法总结(Java)
排序算法的分类:内部排序:整个排序过程在内存储器中进行.外部排序:由于待排序元素数量太大,以至于内存储器无法容纳全部数据,排序需要借助外部存储设备才能完成实现接口:package com.my.sort;public interface IArraySort { int[] sort(int[] sourceArray) throws Exception;}1.冒泡排序...
2019-05-06 11:00:24
304
原创 020-按照左右半区的方式重新组合单链表
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:07:40
139
原创 019-合并两个有序的单链表
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:06:57
138
原创 018-向有序的环形单链表中插入新节点
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:06:16
166
原创 017-一种怪异的节点删除方式
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:05:32
112
原创 016-单链表的选择排序
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:04:46
305
原创 015-将搜索二叉树转换成双向链表
package com.my.util;/** * 二叉树的节点 * */public class TreeNode { public int value; public TreeNode left; public TreeNode right; public TreeNode(int data) { this.value = data; }}package com....
2019-04-28 15:04:02
239
原创 014-在单链表中删除指定值的节点
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:03:18
292
原创 013-删除无序单链表中值重复出现的的节点
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:02:22
428
原创 012-将单链表的每K个节点之间逆序
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:01:32
351
原创 011-两个单链表相交的一系列问题
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-28 15:00:18
151
原创 010-两个单链表生成相加链表
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-25 13:24:14
206
原创 009-复制含有随机指针节点的链表
package com.my.util;/** * 该节点带有一个rand指针,该指针可以指向链表中任意节点 * */public class RandNode { public int value; public RandNode next; public RandNode rand; public RandNode(int data) { this.value = data...
2019-04-25 13:23:31
120
原创 008-将单向链表按某值划分成左边小,中间相等,右边大的形式
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-25 13:22:37
293
原创 007-判断一个链表是否为回文结构
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-25 13:21:34
160
原创 006-环形单链表的约瑟夫问题
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-25 13:20:49
125
原创 005-反转部分单向链表
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.suanfa;import ...
2019-04-25 13:19:46
273
原创 004-反转单向和双向链表
package com.my.util;/** * 单向链表节点 * */public class SingleNode { public int value; public SingleNode next; public SingleNode(int data){ this.value = data; }}package com.my.util;/** * 双向链...
2019-04-25 13:18:52
115
原创 003-删除链表的中间节点和b分之a处的结点
package com.my.util;/** * 单链表结点 * */public class LinkNode { public int value; public LinkNode next; public LinkNode(int value) { this.value = value; }}package com.my.suanfa;import com.m...
2019-04-25 13:18:01
100
原创 002-在单链表和双链表中删除倒数第k个结点
package com.my.util;/** * 链表结点 * */public class LinkNode { public int value; public LinkNode next; public LinkNode(int value) { this.value = value; }}package com.my.util;/** * 双链表结点 * ...
2019-04-25 13:16:49
92
原创 001-打印两个有序链表的公共部分
package com.my.util;/** * 链表结点 * */public class LinkNode { public int value; public LinkNode next; public LinkNode(int value) { this.value = value; }}package com.my.suanfa;import com.m...
2019-04-25 13:15:54
91
原创 010-最大值减去最小值小于或等于num的子数组数量
package com.my.suanfa;import java.util.LinkedList;/** * 最大值减去最小值小于或等于num的子数组数量 * 使用两个双端队列来统计每个子数组中的最大值和最小值* 时间复杂度为O(N),额外空间复杂度为O(N) * */public class Solution06 { public int getNum(int[] arr,...
2019-04-24 11:41:53
336
原创 009-求最大子矩阵的大小
package com.my.suanfa;import java.util.Stack;/** *如果矩阵大小为O(N * M),那么时间复杂度为O(N * M) * 求最大子矩阵的大小 * 关键有两个步骤: * 步骤1:以每一行做切割,使用高度数组height,来记录以当前行为底,每个位置往上的连续1的个数 * 步骤2:每切割一行,统计以该行切割所获得的最大子矩阵中1的个数...
2019-04-24 11:41:12
161
原创 008-构造数组的Max Tree
package com.my.util;public class Node { public int value; public Node left; public Node right; public Node(int value) { this.value = value; }}package com.my.suanfa;import java.util.Hash...
2019-04-24 11:40:29
111
原创 007-生成窗口最大值的数组
package com.my.suanfa;import java.util.LinkedList;/* * 生成窗口最大值数组 * */public class Solution03 { public int[] getMaxWindow(int[] arr, int w) { //边界条件判断 if(arr == null ||w < 1 || arr.lengt...
2019-04-24 11:39:48
148
原创 006-递归实现汉诺塔问题
package com.my.suanfa;/* * 用栈来求解汉诺塔问题的两种方法 * 方法一:递归实现 * 方法二:非递归实现,用栈来模拟递归,因为递归的本质上也是栈 * 前提条件:不能直接从左移动到右,也不能从右直接移动到左,而是必须经过中间 * */public class Solution02 { /* * 方法一:递归实现n层汉诺塔 * 递归的结束条件:只剩一层...
2019-04-24 11:38:56
104
原创 005-用一个栈实现另一个栈的排序
package com.my.suanfa;import java.util.Stack;/* * 用一个栈实现另一个栈的排序 * 实现栈中元素从栈顶到栈底依次递减 * */public class SortStack { public static void sortStackByStack(Stack<Integer> stack) { //申请一个辅助栈 ...
2019-04-24 11:38:11
345
原创 004-猫狗队列
package com.my.util;public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; }}package com.my.util;public c...
2019-04-24 11:37:13
149
原创 003-如何仅用递归函数和栈操作逆序一个栈
package com.my.suanfa;import java.util.Stack;/* * 如何仅用递归函数和栈操作逆序一个栈 * 本题分两个步骤 * 第一步:利用递归拿到并移除栈中的最后一个元素 * 第二步:实现栈的逆序 * */public class Solution01 { //声明变量 private Stack<Integer> stack;...
2019-04-24 11:35:15
275
原创 002-由两个栈组成的队列
package com.my.suanfa;import java.util.Stack;/* * 由两个栈组成的队列 * 向stackPop中压入数据的时机有很多。在这里选择出队和查看队头元素时压入 * 但是压入数据要满足两条: * 1.只能在stackPop为空时才能压入数据 * 2.如果需要压入数据,则必须将stackPush中的数据全部压入 * */public cl...
2019-04-24 11:34:22
194
原创 001-设计一个有getMin功能的栈
package com.my.suanfa;import java.util.Stack;/* * 设计一个有getMin功能的栈 * 方法一: * */public class MyStack1 { //声明变量 private Stack<Integer> stackData; private Stack<Integer> stackMin; /...
2019-04-24 11:33:16
138
原创 排序算法之:冒泡排序和快速排序(java)
排序算法的分类:内部排序:整个排序过程在内存储器中进行。 外部排序:由于待排序元素数量太大,以至于内存储器无法容纳全部数据,排序需要借助外部存储设备才能完成。冒泡排序与快速排序效率:类别 排序方法 时间复杂度 空间复杂度 排序方式 稳定性 平均时间复杂度 最好情况 最坏情况 交换排序 冒泡排序 ...
2019-02-01 16:24:24
271
原创 排序算法之:直接插入排序和希尔排序(java)
排序算法的分类:内部排序:整个排序过程在内存储器中进行。 外部排序:由于待排序元素数量太大,以至于内存储器无法容纳全部数据,排序需要借助外部存储设备才能完成。直接插入排序与希尔排序效率:类别 排序方法 时间复杂度 空间复杂度 排序方式 稳定性 平均时间复杂度 最好情况 最坏情况 插入排序 直接插入排序 ...
2019-02-01 16:05:55
197
原创 Leetcode:155.最小栈(java)
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...
2019-01-30 10:00:24
528
原创 Leetcode:232.用栈实现队列(java)
使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1qu...
2019-01-29 01:02:52
724
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人