- 博客(7)
- 收藏
- 关注
原创 剑指OFFER——二叉搜索树与双向链表
注意:返回的结果不是树的根节点,而是链表的头节点算法一:暴力破解法(脑子短路想不出好方法时当备用)算法思路:中序遍历二叉树,将二叉树的遍历节点顺序保存在数组链表中,然后在遍历数组修改各个节点的左右指针指向//中序遍历保存顺序节点到数组链表public void inorder(List<TreeNode> list,TreeNode root){ if(r...
2020-02-23 21:35:41 116
原创 剑指OFFER——包含min函数的栈
算法思路:1、采用两个栈:s1存储正常入栈顺序,s2存储最小值栈2、当添加数入栈时,先正常入栈s1,然后再根据添加数判断选择值入栈s2:如果添加的数比最小栈栈顶的数小,则将添加数入最小栈, 如果添加的数比最小栈栈顶的数大,则添加最小数入最小栈(即最小栈栈顶元素再入栈)。整个过程中确保s1和s2栈中的个数相同```javapublic class Solution { //...
2020-02-23 13:24:16 108
原创 剑指OFFER——顺时针打印矩阵
算法思路把矩阵看成好几个长方形嵌套在一起的,从外面的矩阵顺时针遍历,遍历完在遍历内在的矩阵,设立left、right、top、bottom分别为矩阵的边界,顺时针访问完一个外层的矩阵后,只需修改边界值,left+1,right-1,top+1,bottom-1public ArrayList<Integer> printMatrix(int [][] matrix) { ...
2020-02-23 01:22:52 160
原创 图——遍历算法、最小生成树
public class Edge { Integer value; Integer weight; Edge next;}/** * 最小生成树的边 */public class MST_Edge implements Comparable<MST_Edge>{ Integer begin; //begin end存放边的两个顶点 ...
2020-02-22 18:02:12 181
原创 剑指OOFFER——二进制中1的个数
算法一:时间复杂度O(n)预备知识:十进制的二进制形式与1进行与运算,若结果为1,则二进制的最后一位是1,若结果为0,则二进制的最后一位是0.原因:1的二进制前面全为0,只有最后一位为1,所以任何数跟1进行与运算,除了最后一位不一定为0,其他高位全部为0.例如:7(111) 跟 1(001)进行与运算结果为1(001);6(110)跟1进行与运算结果0(000);算法思路:将数的二进制...
2020-02-22 15:34:48 508
原创 图——拓扑排序和关键路径算法实现
/** * 拓扑排序(有向图) */public class TopologicalSort { int numEdge; //边的个数 int numVertex; //顶点个数 VertexNode[] vertexNodes; //顶点数组 /** * AOV网(Active on Vertex NetWork):无权有向图(无环...
2020-02-21 16:05:12 440
原创 图——Dijkstra算法实现
package graph;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Vector;public class Dijkstra { int max = 65535; int numVertex = 6; char V...
2020-02-20 18:08:09 193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人