摘要:中序遍历 给出一棵二叉树,返回这棵树的中序遍历 例如: 给出的二叉树为{1,#,2,3}, typedef TreeNode Node; class Solution { public: /** * * @param root TreeNode类 * @return int整型vector */ v
阅读全文
随笔分类 - 数据结构和算法【考察定理】
摘要:恢复BST 题目描述 二叉搜索树(BST)中的两个节点被错误地交换了, 请在不改变树的结构的情况下恢复这棵树。 备注; 用O(n)的空间解决这个问题的方法太暴力了,你能设计一个常数级空间复杂度的算法么? 示例 1: 输入: [1,3,null,null,2] 1 / 3 2 输出: [3,1,nul
阅读全文
摘要:单链表转二叉树 题目描述 给定一个单链表,其中的元素按升序排序,请将它转化成平衡二叉搜索树(BST) 示例1 输入 复制 {-1,0,1,2} 返回值 复制 {1,0,2,-1} 说明:本题目包含复杂数据结构TreeNode、ListNode,点此查看相关信息 typedef TreeNode No
阅读全文
摘要:题目描述 给定两个单词(初始单词和目标单词)和一个单词字典,请找出所有的从初始单词到目标单词的最短转换序列的长度: 每一次转换只能改变一个单词 每一个中间词都必须存在单词字典当中 例如: 给定的初始单词start="red", 目标单词end ="tax"。 单词字典dict =["ted","te
阅读全文
摘要:题目描述 现在有一个仅包含‘X’和‘O’的二维板,请捕获所有的被‘X’包围的区域 捕获一个被包围区域的方法是将被包围区域中的所有‘O’变成‘X’ 例如 X X X X X O O X X X O X O X X X 执行完你给出的函数以后,这个二维板应该变成: X X X X X X X X X X
阅读全文
摘要:链表重排 #define Node ListNode #define null NULL class Solution { public: void reorderList(ListNode *head) { if(head == null||head->next==null) return ; N
阅读全文
摘要:题目描述 使用插入排序对链表进行排序。 示例1 输入 复制 {30,20,40} 返回值 复制 {20,30,40} #define Node ListNode #define null NULL class Solution { public: /** * * @param head ListNo
阅读全文
摘要:题目描述 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。 示例1 输入 复制 {30,20,40} 返回值 复制 {20,30,40} 说明:本题目包含复杂数据结构ListNode,点此查看相关信息 #define null NULL #define Node ListNode
阅读全文
摘要:题目描述 判断给定的链表中是否有环。如果有环则返回true,否则返回false。 你能给出空间复杂度的解法么? 说明:本题目包含复杂数据结构ListNode,点此查看相关信 #define Node ListNode class Solution { public: bool hasCycle(Li
阅读全文
摘要:#define Node ListNode class Solution { public: /** * * @param head ListNode类 the head * @return bool布尔型 */ bool isPail(ListNode* head) { if(head==NULL
阅读全文
摘要:题目描述 给定一棵二叉树,已经其中没有重复值的节点,请判断该二叉树是否为搜索二叉树和完全二叉树。 示例1 输入 复制 {2,1,3} 返回值 复制 [true,true] 算法 判断中序是否是严格升序,如果是,说明是BST 满二叉树,最后一层 最左边,一定是非空节点,也就是 空节点不能在非空节点前面
阅读全文