首页 > 其他分享 >2024年2月21号题解

2024年2月21号题解

时间:2024-02-21 22:57:20浏览次数:30  
标签:map 21 int 题解 2024 include inorder 节点 define

106.从中序与后序遍历序列构造二叉树

力扣题目链接

解题思路

  1. 找到根节点在中序序列的位置
  2. 计算左子树的节点个数
  3. 开辟一个节点,并把根节点的值赋值给这个节点
  4. 根节点的左孩子和右孩子重复上面几个步骤

代码实现

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
//返回以中序[l1, r1]和后序[l2, r2]的根节点
struct TreeNode* f(int* inorder, int l1, int r1, int* postorder, int l2, int r2, int map[]) {
    if (r1 - l1 + 1 <= 0) {//如果树中的节点个数少于等于0,返回NULL
        return NULL;
    }

    int n = map[postorder[r2] + 3000];//取出根节点在中序序列的位置
    int k = n - l1;//计算左子树的节点个数
    struct TreeNode* head = (struct TreeNode*)malloc(sizeof(struct TreeNode));//开辟一个节点

    head -> val = postorder[r2];//给节点赋值
    head -> left = f(inorder, l1, n - 1, postorder, l2, l2 + k - 1, map);//递归调用左子树
    head -> right = f(inorder, n + 1, r1, postorder, l2 + k, r2 - 1, map);//递归调用左子树

    return head;
}

struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize) {
    int map[6001] = {0};//用来记录在中序遍历的位置

    for (int i = 0; i < inorderSize; i ++) {
        map[inorder[i] + 3000] = i;//加3000是因为不能有负数,并且节点的值最小是-3000
    }

    return f(inorder, 0, inorderSize - 1, postorder, 0, postorderSize - 1, map);
}

P5534 【XR-3】等差数列

解题思路

  1. 先计算公差
  2. 利用等差数列求和公式算
#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <stdbool.h>
#define u unsigned
#define ll long long
#define sc scanf
#define pr printf 
#define fr(i, j, n) for (int i = j; i < n; i++)
#define N 10

ll a, b, n, d;

int main(int argc, char* argv[])
{
	sc("%lld%lld%lld", &a, &b, &n);
	
	d = b - a;
	
	pr("%lld", n * a + (n - 1) * n / 2 * d);
	
	return 0;
}

标签:map,21,int,题解,2024,include,inorder,节点,define
From: https://www.cnblogs.com/lwj1239/p/18025686

相关文章

  • 24_02_21
    24_02_21梦熊临沂集训Day-7雪非常大,跟手指头差不多深,很软。下的时候像撒沙子一样沙沙沙的,声音挺大关于模拟赛给我整不会了......,暴力不会打,正解想不出来......赛后发现T2接近正解,差一个光速幂(写在题解里了)其他暴力有不少是DP,还要多练……奇怪的经验string比......
  • 24/02/21 染色问题
    题目描述给定一棵\(n\)个节点的树,你想把编号为\(i\)的叶子节点染成\(a_i\)的颜色。你本来可以一个节点一个节点的涂,但你觉得这样太慢了,你决定这样染色:选择一个节点\(x\)和一种颜色\(c\),然后把这个颜色的颜料桶直接倒在节点\(x\)上,使\(x\)的所有子树都染成\(c\)......
  • Day-7 模拟赛题解
    Day-7模拟赛题解S+N---【玄英计划】---2月21日---模拟测#3【补题】-比赛-梦熊联盟T1数据点3-5枚举每一个问号对应的字母Kmp,把s当作模式串匹配T\(O(26^k|T|)\),k是?的个数代码(我也不知道为啥T了,鸽着)正解有种被诈骗了的感觉根据期望的可加性,答案等于......
  • 2.21闲话 & solution『 有没有/谁/能够代替我』
    上午有唐氏模拟赛,100/0/0/20,rk7/15,鉴定为最唐的一次T1签到题,思路很简单题面ame是一个可爱的女孩子,她想要你帮她排序。给定\(4\timesn\)个数,要求将其分为\(n\)组,使得对于每组四个数,所有组中的\(|a\timesb-c\timesd|\)和最大,求最大和。排序,对于前\(2n\)大的,尽量把大......
  • [SWPUCTF 2021 新生赛]ez_unserialize
    概括这是一道PHP反序列化的CTF赛题,本意是想用这道题对PHP反序列化进行一定的学习。过程我们打开赛题,看看内容 没有发现什么东西,看看他的页面代码  根据他的提示,感觉是存在一个robots.txt文件的,尝试访问一下。 进去看看。 果然如此我们来分析一下这段代码<......
  • 2024初三集训模拟测试3
    T1排序读完题就切了。T2牛吃草点击查看题目很明显的单调队列优化DP。T3树上的宝藏先不考虑对边进行修改,树形DP处理出每个节点的相关信息。转移感觉有些像前几天的CF1929D。设\(f_{i,0/1}\)表示以\(i\)为根节点的子树内是否选\(i\)的方案数,\(f_{i,2}\)表示以......
  • P10064 [SNOI2024] 公交线路 题解
    非常好题目。思路可以发现限制最严的一定是两个叶子的联通性。我们不妨把一个叶子向外起到联通性作用的路径称为有用的路径。也就是这个叶子走这条路径一定可以两步以内到达任意点。这个路径集合有什么作用呢。有一个性质:整个集合的路径的交最终会形成一个连通块。那么我们......
  • Solution Set【2024.2.21】
    [ARC162C]MexGameonTree可以发现若Bob在某个节点填了值\(K\),那么会直接导致其根链上的所有节点均不可能满足要求。因此若某个节点的子树内有不小于两个空位,那么Alice一定无法使该子树满足要求。若某节点子树内有一个空位且可以通过填上这一空位使其合法,那么Alice可......
  • Atm/抢掠计划——题解
    题目描述样例671223352441266510128161514435647解析题目明显是最长路,可以用spfa求最长路,但数据范围5e5明显不允许,所以我们可以用tarjan优化一下,然后这就变成了一道tarjan板子题,先用tarjan缩点,点权为几个点之和,把所有点再存到一个数组中,再按......
  • 2024年2月21日——霜雪落满头,也算共白首
    今天上午寒霜又镀遍了世界大地上遍布着一层浅金色的冰壳,清晨的天色昏暗无光,一夜的风雨,早已在低温的作用下凝固,碧绿的春叶,枯寒的枝干,全部裹上了透明的镀层,连汽车都被冰封。深呼出一口气,在阳光下又变成了洁白的辰龙吐雾。中午回家的路上,抬头看向天空,一粒粒白色水晶,肆无忌惮......