摘要:对于左右子树对应的inorder数组的起始索引和终止索引比较容易确定: 即: root.left = build(preorder, ?, ?, inorder, inStart, index - 1);root.right = build(preorder, ?, ?, inorder, inde
阅读全文
摘要:class Solution { public: //--入口函数 TreeNode* constructMaximumBinaryTree(vector<int>& nums){ return buildEachNode(nums,0,nums.size()-1); } //--主功能函数 /*
阅读全文
摘要:void flatten(TreeNode root) { // base case,即最小 if (root == null) return; flatten(root.left); flatten(root.right); /**** 后序遍历 ****/ // 1、保存原来的左右节点,避免变换
阅读全文
摘要:1 // 主函数 2 Node connect(Node root) { 3 //--主函数可以解决: 4 //--用递归函数遍历左右节点时, 5 //--root节点必定是完全没有兄弟节点的特殊情况, 6 //--将root节点独立处理 7 if (root == null) return nul
阅读全文
摘要:class Solution { /*思路:从尾到头打印链表,即逆序反转链表。 使用三个指针, 中间的pCur->next指向前面的pPre后, 用赋值移动pPre、pCur和pNext,避免了链表断链导致的不能移动到下一步*/ public: vector<int> printListFromTa
阅读全文
摘要:链表找环路的通用解法:快慢指针 使用方法: 给定两个指针,分别命名为 slow 和 fast,起始位置在链表的开头。每次 fast 前进两步, slow 前进一步。如果 fast可以走到尽头,那么说明没有环路;如果 fast 可以无限走下去,那么说明一定有环路,且一定存在一个时刻 slow 和 fa
阅读全文
摘要:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得
阅读全文
摘要:/*Leetcode746. 使用最小花费爬楼梯*/ #define MIN(a,b) ((a)<(b)?(a):(b)) int minCostClimbingStairs(int* cost, int costSize) { int *minCost = (int *)calloc(costSi
阅读全文