左神视频笔记
喵了个咪的回忆丶
Java后台
展开
-
左神视频day01——时间复杂度,递归,归并排序,求小和问题
归并排序public class MergeTest { public static void MergeSort(int[] arr) { if (arr == null || arr.length < 2) { return; } mergeSort(arr, 0, arr.length - 1); ...原创 2019-06-23 20:48:02 · 202 阅读 · 1 评论 -
左神视频day02——插入排序、选择排序、随机快速排序、堆排序
1. 随机快速排序l + (int) (Math.random() * (r - l + 1)) 解析:假设 l = 4,r = 9目的:随机选择 4 ~ 9 之间的一个数,使它与末尾的数交换位置Math.random() * ( 9 - 4 )所得出的范围是 [ 0 , 4 ]Math.random() * ( 9 - 4 + 1 )所得出的范围是 [ 0 , 5 ] ,所以这里采...原创 2019-06-25 20:24:45 · 288 阅读 · 0 评论 -
左神视频day03——稳定性、综合排序、求最大差值(高频算法题)
1.稳定性排序过程中各个关键字相对位置不变,则表示该排序算法具有稳定性。冒泡、插入排序具有稳定性,选择排序不具有稳定性归并排序具有稳定性,快速排序和堆排序不具有稳定性。2.综合排序数据长度比较小时(60以内)综合排序会选择复杂度比较高的插入排序(O(n2)),因为插入排序的常数项低。在综合排序中基础类型数据的排序用快排:因为基本数据类型的数据相同值无差异,不用区分相同的值,所以会...原创 2019-06-28 21:24:24 · 178 阅读 · 0 评论 -
左神视频day03——题目一:用数组结构实现大小固定的栈和队列
用数组结构实现大小固定的栈和队列public class Array_To_Stack_Queue { public static class ArrayStack { private Integer[] arr; private Integer index; //构建一个指针index,数组中没有数时指向0,在数组的0位置添加一个数后index指向...原创 2019-06-28 22:41:28 · 176 阅读 · 0 评论 -
左神视频day03——题目二:实现返回栈中最小元素的操作
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作原创 2019-06-28 22:42:21 · 135 阅读 · 0 评论 -
左神视频day03——题目三:用队列实现栈结构,用栈实现队列结构
1. 用队列实现栈结构图的深度优先遍历需要用栈来实现。用队列实现图的深度优先遍历方法是:先用队列实现栈结构,再用栈结构实现图的深度优先遍历。代码思路:构建两个队列:Data队列和help队列;压入数据时数据都进Data队列,假设队列中按顺序进入了1,2,3,4,5,返回数据时,把1,2,3,4 放入help队列,然后拿出Data中的5返回;接着改引用,将Data队列和help队列的引用交换...原创 2019-06-30 20:23:54 · 196 阅读 · 0 评论 -
左神视频day04——题目四:狗猫队列
实现一种狗猫队列的结构,要求如下: 用户可以调用add方法将cat类或dog类的实例放入队列中; 用户可以调用pollAll方法,将队列中所有的实例按照进队列的先后顺序依次弹出;用户可以调用pollDog方法,将队列中dog类的实例按照进队列的先后顺序依次弹出; 用户可以调用pollCat方法,将队列中cat类的实 例按照进队列的先后顺序依次弹出; 用户可以调用isEmpty方法,检查队列中是否还...原创 2019-07-01 13:52:12 · 156 阅读 · 0 评论 -
左神视频day04——题目五:转圈打印矩阵
【题目】 给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如:1 2 3 45 6 7 89 10 11 1213 14 15 16打印结果为:1,2,3,4,8,12,16,15,14,13,9, 5,6,7,11, 10【要求】 额外空间复杂度为O(1)。public class Code_06_PrintMatrixSpiralOrder { public ...原创 2019-07-01 19:01:56 · 155 阅读 · 0 评论 -
左神视频day04——题目六:旋转正方形矩阵
【题目】 给定一个整型正方形矩阵matrix,请把该矩阵调整成 顺时针旋转90度的样子。 【要求】 额外空间复杂度为O(1)。public class Code_05_RotateMatrix { public static void rotate(int[][] matrix) { int tR = 0; int tC = 0; in...原创 2019-07-01 19:04:23 · 117 阅读 · 0 评论 -
左神视频day04——题目七:反转单向和双向链表
1.反转单向链表2.反转双向链表原创 2019-07-03 21:32:46 · 331 阅读 · 0 评论 -
左神视频day04——题目八:“之”字形打印矩阵
“之”字形打印矩阵,额外空间复杂度为O(1)public class Code_08_ZigZagPrintMatrix { public static void printMatrixZigZag(int[][] matrix) { int aR = 0; int aC = 0; int bR = 0; int bC...原创 2019-07-09 11:38:07 · 150 阅读 · 0 评论 -
左神视频day04——题目九:在行列都排好序的矩阵中找数
【要求】 时间复杂度为O(N+M),额外空间复杂度为O(1)。思路:从右上角开始找,如果比4大,就向左走,如果比4小,就向下走public class Code_09_FindNumInSortedMatrix { public static boolean isContains(int[][] matrix, int K) { int row = 0; ...原创 2019-07-09 11:50:32 · 116 阅读 · 0 评论 -
左神视频day04——题目十:打印两个有序链表的公共部分
给定两个有序链表的头指针 head1 和 head2 ,打印两个链表的公共部分。public class Code_10_PrintCommonPart { public static class Node { public int value; public Node next; public Node(int data) { ...原创 2019-07-09 11:54:42 · 178 阅读 · 0 评论 -
左神视频day04——题目十一:判断一个链表是否为回文结构
给定一个链表的头节点head,请判断该链表是否为回文结构。 例如: 1->2->1,返回true。 1->2->2->1,返回true。15->6->15,返回true。 1->2->3,返回false。通过栈解决public class Code_11_IsPalindromeList { public static cla...原创 2019-07-09 12:48:13 · 164 阅读 · 0 评论 -
左神视频day04——题目十二:将单向链表按某值划分成左边小、中间相等、右边大的形式
【题目】 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整数pivot。实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot的节点,中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。除这个要求外,对调整后的节点顺序没有更多的要求。 例如:链表9->0->4->5->1,pivot=3。 调整后链表可以是1->0-&g...原创 2019-07-09 13:43:06 · 246 阅读 · 0 评论 -
左神视频day04——题目十三:复制含有随机指针节点的链表
给定一个由Node节点类型组成的无环单链表的头节点head,请实现一个函数完成这个链表中所有结构的复制,并返回复制的新链表的头节点。 进阶:不使用额外的数据结构,只用有限几个变量,且在时间复杂度为 O(N) 内完成原问题要实现的函数。import java.util.HashMap;public class Code_13_CopyListWithRandom { public ...原创 2019-07-09 17:28:30 · 139 阅读 · 0 评论 -
左神视频day05——题目一:先中后序遍历,递归和非递归方式
实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式import java.util.Stack;public class Code_01_PreInPosTraversal { public static class Node { public int value; public Node left; public Node ...原创 2019-07-11 11:22:50 · 204 阅读 · 0 评论 -
左神视频day05——题目三:在二叉树中找到一个节点的后继节点
该结构比普通二叉树节点结构多了一个指向父节点的parent指针。假设有一棵Node类型的节点组成的二叉树,树中每个节点的parent指针都正确地指向 自己的父节点,头节点的parent指向null。只给一个在二叉树中的某个节点 node,请实现返回node的后继节点的函数。在二叉树的中序遍历的序列中, node的下一个节点叫作node的后继节点。public class Code_03_Succ...原创 2019-07-11 11:59:23 · 125 阅读 · 0 评论 -
左神视频day05——题目四:二叉树的序列化和反序列化
二叉树的序列化和反序列化队列中 add 和 offer 方法的区别:两者都是往队列尾部插入元素,不同的是,当超出队列界限的时候,add()方法是抛出异常让你处理,而 offer()方法是直接返回falseimport java.util.LinkedList;import java.util.Queue;public class Code_04_Serialize { pub...原创 2019-07-11 14:42:40 · 156 阅读 · 0 评论 -
左神视频day05——题目六:判断一棵二叉树是否是平衡二叉树
判断一棵二叉树是否是平衡二叉树public class Code_06_IsBalancedTree { public static class Node { public int value; public Node left; public Node right; public Node(int value) { ...原创 2019-07-12 09:56:32 · 127 阅读 · 0 评论 -
左神视频day05——题目六、七:判断平衡二叉树、二叉搜索树、完全二叉树
平衡二叉树:任何一个节点的左右子树高度只差 <=1二叉搜索树(BST,Binary Search Tree):对于一棵树上任何一个节点的子树,左子树 < 节点 < 右子树 。通常不出现重复节点,如果有重复节点,可以把它们的值压缩在一个节点的内部。完全二叉树(CBT,Complete Binary Tree):①某个节点有右孩子没有左孩子,则不是完全二叉树;②满足①的条件下,...原创 2019-07-12 13:30:05 · 175 阅读 · 0 评论 -
左神视频day05——题目八:求完全二叉树的节点个数
已知一棵完全二叉树,求其节点的个数。要求:时间复杂度低于O(N),N为这棵树的节点个数1 << h 等价于 2的h次方如果根节点右子树的左子树到达最后一层,则根节点的左子树是满二叉树,加上根节点,节点数为2的 h-level 次方如果根节点右子树的左子树没到最后一层,则根节点的右子树是满二叉树,加上根节点,节点数为2的 h-level-1 次方// 1 <<...原创 2019-07-12 18:36:08 · 191 阅读 · 0 评论 -
左神视频day06——岛问题
一个矩阵中只有0和1两种值,每个位置都可以和自己的上、下、左、右四个位置相连,如果有一片1连在一起,这个部分叫做一个岛,求一个矩阵中有多少个岛?public class Code_03_Islands { public static int countIslands(int[][] m) { if (m == null || m[0] == null) { ...原创 2019-07-13 14:52:48 · 297 阅读 · 0 评论