03 2021 档案

构造二叉树——105. 从前序与中序遍历序列构造二叉树
摘要:对于左右子树对应的inorder数组的起始索引和终止索引比较容易确定: 即: root.left = build(preorder, ?, ?, inorder, inStart, index - 1);root.right = build(preorder, ?, ?, inorder, inde 阅读全文

posted @ 2021-03-17 21:33 平ping 阅读(92) 评论(0) 推荐(0)

构造二叉树
摘要:class Solution { public: //--入口函数 TreeNode* constructMaximumBinaryTree(vector<int>& nums){ return buildEachNode(nums,0,nums.size()-1); } //--主功能函数 /* 阅读全文

posted @ 2021-03-17 14:12 平ping 阅读(69) 评论(0) 推荐(0)

二叉树——leetcode 114. 二叉树展开为链表
摘要:void flatten(TreeNode root) { // base case,即最小 if (root == null) return; flatten(root.left); flatten(root.right); /**** 后序遍历 ****/ // 1、保存原来的左右节点,避免变换 阅读全文

posted @ 2021-03-14 11:26 平ping 阅读(71) 评论(0) 推荐(0)

二叉树——主辅函数——跨层匹配:Leetcode116. 填充每个节点的下一个右侧节点指针
摘要:1 // 主函数 2 Node connect(Node root) { 3 //--主函数可以解决: 4 //--用递归函数遍历左右节点时, 5 //--root节点必定是完全没有兄弟节点的特殊情况, 6 //--将root节点独立处理 7 if (root == null) return nul 阅读全文

posted @ 2021-03-14 09:56 平ping 阅读(61) 评论(0) 推荐(0)

链表:从尾到头打印链表——剑指offer(牛客网 JZ3)
摘要:class Solution { /*思路:从尾到头打印链表,即逆序反转链表。 使用三个指针, 中间的pCur->next指向前面的pPre后, 用赋值移动pPre、pCur和pNext,避免了链表断链导致的不能移动到下一步*/ public: vector<int> printListFromTa 阅读全文

posted @ 2021-03-10 17:44 平ping 阅读(25) 评论(0) 推荐(0)

链表环类交点问题:双指针变体——快慢指针——142. 环形链表 II
摘要:链表找环路的通用解法:快慢指针 使用方法: 给定两个指针,分别命名为 slow 和 fast,起始位置在链表的开头。每次 fast 前进两步, slow 前进一步。如果 fast可以走到尽头,那么说明没有环路;如果 fast 可以无限走下去,那么说明一定有环路,且一定存在一个时刻 slow 和 fa 阅读全文

posted @ 2021-03-07 18:22 平ping 阅读(69) 评论(0) 推荐(0)

贪心算法简单示例:leetcode——455. 分发饼干
摘要:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得 阅读全文

posted @ 2021-03-07 11:57 平ping 阅读(109) 评论(0) 推荐(0)

Leetcode746. 使用最小花费爬楼梯
摘要:/*Leetcode746. 使用最小花费爬楼梯*/ #define MIN(a,b) ((a)<(b)?(a):(b)) int minCostClimbingStairs(int* cost, int costSize) { int *minCost = (int *)calloc(costSi 阅读全文

posted @ 2021-03-06 21:47 平ping 阅读(82) 评论(0) 推荐(0)