01 2023 档案
摘要:1、leetcode110 平衡二叉树 平衡二叉树:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 递归法 明确递归函数的参数和返回值 参数:当前传入节点。 返回值:以当前传入节点为根节点的树的高度,返回-1 来标记已经不符合平衡树的规则。 终止条件 遇到空节点了为终止,返回0,表示当前
阅读全文
摘要:1、104.二叉树的最大深度 递归法 二叉树的最大深度 ==》根节点的高度 通过后序(左右中)求得根节点高度来求得二叉树最大深度。 递归三要素 确定递归函数的参数和返回值:参数就是传入树的根节点,返回就返回这棵树的深度,所以返回值为int类型。 确定终止条件:如果为空节点的话,就返回0,表示高度为0
阅读全文
摘要:1、层序遍历 102.二叉树的层序遍历 class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> resList = new ArrayList<List<Integer>>
阅读全文
摘要:1、二叉树理论基础篇 二叉树的种类 满二叉树:二叉树的所有叶子节点都在最后一层,并且节点总数为2^n-1,n为层数【从1 开始】 完全二叉树:二叉树的所有叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,则该二叉树为完全二叉树。 二叉搜索树(二叉排序
阅读全文
摘要:1、leetcode239 滑动窗口最大值 思路: 使用一个队列,将窗口里的元素放入队列,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最大值是什么。 队列所需操作:pop、push、getMaxValue 这个队列没有必要维护窗口里的所有元素,只需要维护有可能成为窗口里最大值
阅读全文
摘要:1、leetcode20 有效的括号 思路 不匹配的情况 括号个数不匹配 若字符串长度为奇数,则直接返回flase 左括号多余 遍历完字符串,但栈不为空,说明存在有左括号无右括号进行匹配的情况,return false 右括号多余 遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没
阅读全文
摘要:1、栈与队列 队列: 队列是一个有序列表,可以用数组(顺序存储)或是链表(链式存储)来实现 遵循先入先出的原则。即:先存入队列的数据先取出,后存入队列的数据后取出。 从队尾加数据,从队首取数据 栈 栈是一个先入后出的有序列表 栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。
阅读全文
摘要:1、KMP算法 KMP的作用:KMP用于字符串匹配 KMP的主要思想:当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。 前缀表 什么是前缀表? 记录下标i之前(包括i)的字符串中,有多大长度的相同前缀后缀。 前缀表的作用? 前缀表是用来回退的,它记录
阅读全文
摘要:1、leetcode344 反转字符串 代码实现【双指针法,原地修改数组】 class Solution { public void reverseString(char[] s) { int left = 0; int right = s.length-1; while(right>=left){
阅读全文
摘要:1、leetcode454 四数相加 代码实现 class Solution { public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) { HashMap<Integer,Integer> sumOfN
阅读全文
摘要:1、哈希表理论基础 哈希法的应用场景: 当需要快速判断一个元素是否出现在集合里的时候,就要考虑哈希法。 判断一个元素是否出现过 哈希表的概念: 哈希表是根据关键码的值而直接进行访问的数据结构。 常见的三种哈希结构 数组 set(集合) map(映射) 数组 VS set VS map 数组的大小是受
阅读全文
摘要:1、leetcode24 两两交换链表中的节点 思路图解 代码 class Solution { public ListNode swapPairs(ListNode head) { ListNode dummyHead = new ListNode(0); dummyHead.next = hea
阅读全文
摘要:1、链表理论基础 链表是以节点的方式来存储的【链式存储】 每个节点包括data域(存放数据)、指针域(next域、prev域) next域:指向下一个节点 最后一个节点的next域为null prev域:指向上一个节点 第一个节点的prev域为null 链表 VS 数组 链表的各个节点在内存中不一定
阅读全文
摘要:1、leetcode977 有序数组的平方 题目: 给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,1
阅读全文
摘要:1、数组理论基础 数组的概念: 数组是存放在连续内存空间上相同类型数据的集合。【顺序存储结构】 数组特点: 数组下标从0开始 数组内存空间的地址连续 数组的查、改操作很方便 数组的增、删操作比较麻烦 增:需要开辟新的内存空间,并移动其他元素的内存空间地址。 删:需要移动后面元素的内存空间地址 2、二
阅读全文

浙公网安备 33010602011771号