随笔分类 -  数据结构与算法

摘要:二叉树的层序遍历 【思路】 层序遍历一个二叉树,就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。需要借用一个辅助数据结构队列来实现,队列先进先出,符合一层一层遍历的逻辑,而用栈先进后厨后出适合模拟深度优先遍历也就是递归的逻辑。而这种层序遍历方式就是图论中的广度优先遍历, 阅读全文
posted @ 2023-11-10 14:54 鲍宪立 阅读(57) 评论(0) 推荐(0)
摘要:二叉树的迭代遍历 // 前序遍历顺序:中-左-右,入栈顺序:中-右-左 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); 阅读全文
posted @ 2023-11-10 09:26 鲍宪立 阅读(24) 评论(0) 推荐(0)
摘要:二叉树理论基础 二叉树的种类 满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树 二叉树的存储方式 顺序存储、链式存储 二叉树的遍历方式 二叉树主要有两种遍历方式: 深度优先遍历:先往深走,遇到叶子节点再往回走。 广度优先遍历:一层一层的去遍历。 那么从深度优先遍历和广度优先遍历进一步拓展,才有如下遍 阅读全文
posted @ 2023-11-06 10:47 鲍宪立 阅读(36) 评论(0) 推荐(0)
摘要:二叉树的递归遍历 递归算法的三要素 确定递归函数的参数和返回值:确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数,并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。 确定终止条件:写完了递归算法,运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对 阅读全文
posted @ 2023-11-06 10:47 鲍宪立 阅读(55) 评论(0) 推荐(0)
摘要:环形链表 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如 阅读全文
posted @ 2023-11-04 09:18 鲍宪立 阅读(32) 评论(0) 推荐(0)
摘要:链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 输入:in 阅读全文
posted @ 2023-10-31 14:42 鲍宪立 阅读(48) 评论(0) 推荐(0)
摘要:删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], 阅读全文
posted @ 2023-10-27 21:32 鲍宪立 阅读(20) 评论(0) 推荐(0)
摘要:两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 【思路】 /** * Definition for singly-linked list. * public class ListNode { * int 阅读全文
posted @ 2023-10-26 22:10 鲍宪立 阅读(24) 评论(0) 推荐(0)
摘要:反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。力扣题目链接 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表 阅读全文
posted @ 2023-10-25 21:59 鲍宪立 阅读(21) 评论(0) 推荐(0)
摘要:设计链表 题意: 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。 addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。 addAtTail(val):将值为 val 阅读全文
posted @ 2023-10-24 22:10 鲍宪立 阅读(33) 评论(0) 推荐(0)
摘要:链表理论部分 什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针)、最后一个节点的指针域指向null(空指针的意思)。 链表的入口节点称为链表的头结点也就是head。 如图所示: 链表的类型 接下来说一下链表的几种类型: 单 阅读全文
posted @ 2023-10-23 22:23 鲍宪立 阅读(245) 评论(0) 推荐(0)
摘要:移除链表元素 题意:删除链表中等于给定值 val 的所有节点。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:head = [], val = 1 输出:[] 示例 3: 输入:head = [7,7,7,7], v 阅读全文
posted @ 2023-10-23 22:23 鲍宪立 阅读(22) 评论(0) 推荐(0)
摘要:前K个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。347.力扣题目链接 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 阅读全文
posted @ 2023-10-18 11:02 鲍宪立 阅读(32) 评论(0) 推荐(0)
摘要:滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3 阅读全文
posted @ 2023-10-17 09:51 鲍宪立 阅读(59) 评论(0) 推荐(0)
摘要:逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 对应于leetcode 150 注意: 有效的算符为 '+'、'-'、'*' 和 '/' 。 每个操作数(运算对象)都可以是一个整数或者另一个表达式。 阅读全文
posted @ 2023-10-16 09:33 鲍宪立 阅读(61) 评论(0) 推荐(0)
摘要:删除字符串中的所有相邻重复项 【题目】给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。本题对应于leetcode 1047 示例: 输入:"abba 阅读全文
posted @ 2023-10-13 09:48 鲍宪立 阅读(72) 评论(0) 推荐(0)
摘要:有效的括号 【题目】 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 【思路分析】 第一种情况:已经遍历完了字符串, 阅读全文
posted @ 2023-10-11 09:16 鲍宪立 阅读(30) 评论(0) 推荐(0)
摘要:用队列实现栈 【题目】请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。对应于leetcode 225题 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶 阅读全文
posted @ 2023-10-09 21:54 鲍宪立 阅读(32) 评论(0) 推荐(0)
摘要:汉诺塔问题 【题目】 在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制: (1) 每次只能移动一个盘子; (2) 盘子只能从柱子顶端滑出移到下一根 阅读全文
posted @ 2023-10-08 09:26 鲍宪立 阅读(45) 评论(0) 推荐(0)
摘要:用一个栈实现另一个栈的排序 【题目】 一个栈中的元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序? 【解答】 将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记 阅读全文
posted @ 2023-10-06 22:01 鲍宪立 阅读(47) 评论(0) 推荐(0)