一:解题思路 这道题目有2种方法,第一种是递归法,第二种是迭代法。2种方法的时间和空间复杂度都为O(n)。 二:完整代码示例 (C++版和Java版) 递归C++: class Solution { public: void postorder(TreeNode* root, vector<int> ...
分类:
其他好文 时间:
2020-03-14 18:25:21
阅读次数:
53
解题思路: 1、区分是插入还是归并 1)插入:前段有序,后段与初始序列一致。找到第一个破坏序列有序的下标,再继续下一轮插入排序 2)归并:段内有序,需确定最后归并长度。从归并段为2,4,8...开始找起,看是否每段段内有序,如果其中某段不满足有序,则记下当前归并段长度,再将归并段*2即为下次归并长度 ...
分类:
编程语言 时间:
2020-03-14 17:00:54
阅读次数:
199
一:解题思路 这道题目2种做法。第一种做法就是递归法,第二种就是迭代法。这2种方法的时间复杂度和空间复杂度都为O(n)。 二:完整代码示例 (C++版和Java版) 递归C++: class Solution { public: void preorder(TreeNode* root, vecto ...
分类:
其他好文 时间:
2020-03-14 16:31:41
阅读次数:
46
题目链接:http://poj.org/problem?id=3735 题目意思:有n只猫,有三种操作得花生,吃花生,换花生。k种操作,进行m轮 解题思路:m很大,考虑矩阵变化,考虑每一个变化过程,由于有加一,将初始矩阵末尾增加一,方便进行操作,然后有如下网上借鉴(chaoxi)来的变换。 要注意的 ...
分类:
其他好文 时间:
2020-03-14 13:15:58
阅读次数:
67
解题思路: 1、插入排序的特点:从左往右扫描,前段数据非递减,当出现第一个递减的位置,再和原数据比较,此后若数据位置不变,则为插入排序。 2、堆排序的特点:从第2个位置起,一直找到第一个比首位数据大的数据止。 #include <stdio.h> #include <string.h> int Ju ...
分类:
编程语言 时间:
2020-03-13 23:32:22
阅读次数:
145
给定一个带头结点的单链表和一个整数K,要求你将链表中的每K个结点做一次逆转。例如给定单链表 1→2→3→4→5→6 和 K=3,你需要将链表改造成 3→2→1→6→5→4;如果 K=4,则应该得到 4→3→2→1→5→6。 函数接口定义: void K_Reverse( List L, int K ...
分类:
其他好文 时间:
2020-03-13 18:42:35
阅读次数:
68
独立岛屿数 题目来源 "LeetCode 200. Number of Islands" 解题思路 暴力:遍历+dfs/bsf 查并集 精简解题 ...
分类:
其他好文 时间:
2020-03-13 14:39:12
阅读次数:
57
动态规划 分析流程 递推(递归+记忆化) 状态定义 状态转移方程 最优子结构 爬楼梯 题目来源 "LeetCode 70. Climbing Stairs" 解题思路 方法一 定义状态 表示n阶台阶的总走法数,则状态方程为 精简解题 题目 给你一个数组,第i个元素代表某个股票第i天的价格,现在只允许 ...
分类:
其他好文 时间:
2020-03-13 14:35:18
阅读次数:
57
B: 问题简述:给你n个长度最多为10 的 数字字符串,问是否存在某个字符串是另一个字符串的前缀。 所需知识点:字典树 问题形式化描述:使用某个数据结构,统计所有字符串,并且支持快速查询统计的字符串当中是否存在字符串是当前查询串的前缀。 解题思路:对所欲给定的n个字符串建立一颗字典树,并且对 每个字 ...
分类:
其他好文 时间:
2020-03-13 12:53:59
阅读次数:
82
题意 给你无根一颗树,每个节点是黑色或白色。对于每一个节点,问包含该节点的权值最大的子树。 子树的权值等于子树中白点的个数减去黑点的个数。 注意,这里的子树指的是树的联通子图。 解题思路 这场就这题卡的比较久。 首先,如果是有根树的话,只需要dfs一遍就能得出根的答案。 设根为1,将无根树转为有根树 ...
分类:
其他好文 时间:
2020-03-13 01:05:27
阅读次数:
45