【每日一题】 2024年2月汇编(下)

🔥博客主页: A_SHOWY
🎥系列专栏:力扣刷题总结录 数据结构  云计算  数字图像处理  力扣每日一题_ 

【2.16】103.二叉树的锯齿形层序遍历

103. 二叉树的锯齿形层序遍历icon-default.png?t=N7T8https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/

和前面的题目还是一样的,核心还是BFS,就是res结果对于偶数个数的元素,内部数组进行一个reverse交换。

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
    vector<vector<int>> res;
    if(!root){
        return res;
    }
    
    queue<TreeNode*> q;
    q.push(root);
    while(!q.empty()){
     int currentSize = q.size();
     res.push_back(vector<int> ());
     for(int i = 0; i < currentSize; ++i){
         auto node = q.front();
         q.pop();
         res.back().push_back(node -> val);
        if(node -> left) q.push(node -> left);
        if(node -> right) q.push(node -> right);
     }
    }
    for(int i = 0; i < res.size(); i++){
        if(i % 2){
            int start = 0;
            int end = res[i].size() - 1;
            while(start <= end){
                swap(res[i][start],res[i][end]);
                start++;
                end --;
            }
        }
    }
    return res;
    }
};

【2.17】429.N叉树的层序遍历

429. N 叉树的层序遍历icon-default.png?t=N7T8https://leetcode.cn/problems/n-ary-tree-level-order-traversal/

这个月和树干上了,每天都是DFS和BFS,这里的话继续用BFS思路可以说完全一样,N叉树的话其实就是多一个循环,以前的把左右节点加入q,现在是把所有子节点children加进去

参考上旬的二叉树的层序遍历

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
      vector<vector<int>> res;
      if(!root) {return res;}
      queue<TreeNode*>  q;
      q.push(root);
      while(!q.empty()){
          int currentsize = q.size();
          res.push_back(vector<int>());
          for(int i = 0; i < currentsize; i++){
              auto* node = q.front();
              q.pop();
              res.back().push_back(node -> val);  
              if(node -> left) q.push(node -> left);
              if(node -> right) q.push(node -> right);
          }
      }
      return res;
    }
};

【2.18】589.N叉树的前序遍历

589. N 叉树的前序遍历icon-default.png?t=N7T8https://leetcode.cn/problems/n-ary-tree-preorder-traversal/

同前些日子做的二叉树前序没区别,就是一个DFS的递归就能解决


class Solution {
public:
    void qianxu(Node* root,vector<int> &res){
          if(!root){
              return;
          }
           res.push_back(root -> val);
          for(auto &z : root -> children){
             qianxu(z,res);
          }
    }
    vector<int> preorder(Node* root) {
        vector<int> res;
        qianxu(root,res);
        return res;
    }
};

【2.19】590.N叉树的后序遍历

590. N 叉树的后序遍历icon-default.png?t=N7T8https://leetcode.cn/problems/n-ary-tree-postorder-traversal/

DFS递归的一个N叉后序遍历和前序一样

class Solution {
public:
    void qianxu(Node* root,vector<int> &res){
          if(!root){
              return;
          }
           res.push_back(root -> val);
          for(auto &z : root -> children){
             qianxu(z,res);
          }
    }
    vector<int> preorder(Node* root) {
        vector<int> res;
        qianxu(root,res);
        return res;
    }
};

【2.26】938.二叉搜索树的范围和

938. 二叉搜索树的范围和icon-default.png?t=N7T8https://leetcode.cn/problems/range-sum-of-bst/

二叉搜索树需要知道的性质是,对于每一个节点,其左子树一定比节点小,右子树的值一定比该节点大,其实就是一个中序遍历的DFS。

class Solution {
public:
    int rangeSumBST(TreeNode* root, int low, int high) {
               if(root == nullptr){
                   return 0;
               }
               int sum = 0;
               if(root -> val < low){
                return rangeSumBST(root -> right,low,high);
               }
               if(root -> val > high){
               return  rangeSumBST(root -> left,low,high);
               }

               sum += root -> val + rangeSumBST(root -> left,low,high) + rangeSumBST(root -> right,low,high);
               return sum;       
    }
};

【2.28】2673.使二叉树所有路径的值相等的最小代价

2673. 使二叉树所有路径值相等的最小代价icon-default.png?t=N7T8https://leetcode.cn/problems/make-costs-of-paths-equal-in-a-binary-tree/

逆序遍历,整体思路非常巧妙

class Solution {
public:
    int minIncrements(int n, vector<int>& cost) {
        int ans = 0;
        for(int i = n - 2; i > 0; i -= 2){
           ans += abs(cost[i] - cost[i + 1]);
           cost[i/2] += max(cost[i],cost[i + 1]);
        }
        return ans;
    }
};

对于任一叶结点,它的值为 x,它的兄弟节点的值为 y。可以发现,对于树上的其余节点,它们要么同时是这两个叶节点的祖先,要么同时不是这两个叶节点的祖先。对这些节点进行一次操作,要么同时增加了根到这两个叶节点的路径值 1,要么没有任何效果。因此,要想使得根到这两个叶节点的路径值相等,我们只能增加 x 和 y 本身。由于我们希望操作次数最少,那么应该进行∣x−y∣ 次操作,将较小的值增加至与较大的值相等。待考虑完所有叶节点之后,互为兄弟节点的叶节点的值两两相等(并且根到它们的路径值显然也相等)。如果我们还需要操作某个叶节点,那么为了使得路径值相等,它的兄弟节点同样也需要操作。此时就需要两次操作,但不如直接操作它们的双亲节点,可以省去一次操作。

因此,所有的叶节点都无需进行操作。我们就可以将它们全部移除。为了使得路径值保持不变,我们可以将叶节点的值增加至它们的双亲节点。这样一来,所有的双亲节点都变成了新的叶节点,我们重复进行上述操作即可。当只剩一个节点(根节点)时,就可以得到最终的答案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python课后习题一

题目&#xff1a; 1. 2. 解题过程&#xff1a; 1. """计算年数和天数""" minute int(input("请输入分钟数&#xff1a;")) hours minute // 60 days hours // 24 years days // 365 last_days days % 365 print(f"{minut…

Sora后时代文生视频的探索

一、写在前面 按常理&#xff0c;这里应该长篇大论地介绍一下Sora发布对各行业各方面产生的影响。不过&#xff0c;这类文章已经很多了&#xff0c;我们今天主要聊聊那些已经成熟的解决方案、那些已经可以“信手拈来”的成果&#xff0c;并以此为基础&#xff0c;看看Sora发布…

ArcGIS Pro与R:携手优化生态系统服务评估流程

生态系统服务是指生态系统所形成的用于维持人类赖以生存和发展的自然环境条件与效用&#xff0c;是人类直接或间接从生态系统中得到的各种惠益。联合国千年生态系统评估&#xff08;Millennium ecosystem assessment&#xff0c;MA&#xff09;提出生态系统服务包括供给、调节、…

【动态三维重建】Deformable 3D Gaussians 可变形3D GS用于单目动态场景重建(CVPR 2024)

主页&#xff1a;https://ingra14m.github.io/Deformable-Gaussians/ 代码&#xff1a;https://github.com/ingra14m/Deformable-3D-Gaussians 论文&#xff1a;https://arxiv.org/abs/2309.13101 文章目录 摘要一、前言二、相关工作2.1 动态场景的神经渲染2.2 神经渲染加速 三…

mac硬盘拷贝到另外硬盘 苹果电脑怎么拷贝到移动硬盘

在当今的信息时代&#xff0c;数据的存储和传输是我们日常生活和工作中不可或缺的一部分。我们经常需要使用各种硬盘来保存和备份我们的数据&#xff0c;比如内置硬盘、移动硬盘、U盘等。但是&#xff0c;不同的硬盘可能使用不同的文件系统&#xff0c;这给我们的数据拷贝带来了…

java 数据结构 排序算法

目录 排序 插入排序 直接插入排序 希尔排序( 缩小增量排序 )&#xff1a; 直接选择排序 堆排序 交换排序 冒泡排序 快速排序递归 Hoare法 挖坑法 前后指针法 快速排序优化 快速排序非递归 归并排序 归并排序非递归 排序算法复杂度及稳定性分析 计数排序 排序…

【论文阅读】Masked Autoencoders Are Scalable Vision Learners

Masked Autoencoders Are Scalable Vision Learners 引用&#xff1a; He K, Chen X, Xie S, et al. Masked autoencoders are scalable vision learners[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2022: 16000-16009. 论文链…

wireshark抓tcp包使用指南

本博文源于笔者不断探索加上去网络总结获得的经验&#xff0c;撰写wireshark如何抓tcp包 文章目录 1、打开wireshark2、选择网络源3、搜索ip地址与tcp条件4、看灰色的条纹 1、打开wireshark 2、选择网络源 选择自己当前的ip地址适用于的网络源&#xff0c;比如这里选择“以太…

ETH Gas 之 Base Fee Priority Fee

前情回顾 ETH网络 之 Gas EIP-1559 EIP-1559 EIP-1559是以太坊改进提案&#xff08;Ethereum Improvement Proposal&#xff09;&#xff0c;旨在改进以太坊的交易费用机制。该提案引入了一种新的交易费用模型&#xff0c;以提高交易费用的可预测性和网络的效率。我们本文各…

故障诊断 | 一文解决,GRNN广义回归神经网络的故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断 | 一文解决,GRNN广义回归神经网络的故障诊断(Matlab) 专栏介绍

拥抱DevOps,开启数字化转型的加速器

在数字化浪潮席卷全球的今天&#xff0c;企业面临着前所未有的挑战与机遇。为了保持竞争力并适应快速变化的市场需求&#xff0c;数字化转型已成为企业发展的必由之路。而在这一过程中&#xff0c;DevOps作为一种全新的开发与运维理念&#xff0c;正逐渐成为推动企业数字化转型…

数据库设计三大范式

第一范式 确保每列保持原子性 即数据库表中的所有字段值都是不可分解的原子值 如果地址这个字段频繁访问&#xff0c; 则将地址这个属性重新划分为 省份 城市&#xff0c;详细地址等部分进行存储&#xff0c;这样才算是满足数据库的第一范式 第二范式 确保表中的每列都和主…

Python基础入门 --- 6.数据容器

文章目录 Python基础入门第六章&#xff1a;6.数据容器6.1 列表6.1.1 列表下标索引6.1.2 列表常用操作查找指定某元素的下标修改指定位置的元素值插入元素追加元素方式1追加元素方式2删除元素删除某元素在列表中的第一个匹配项清空列表统计某元素在列表中的数量统计列表元素个数…

vue+elementUI实现树形穿梭框

1.实现效果 2.整体思路 将左侧选中的节点移动到右侧&#xff0c;还要保持树结构&#xff0c;意味着移动子节点&#xff0c;需要把该子节点对应的父节点甚至父节点的父节点一并移到右侧形成一个新的树结构&#xff0c;树结构的层级和原来的树保持一致&#xff0c;只是右侧展示…

全国媒体公关服务资源分析,媒体邀约资源包括哪些?-51媒体网

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 全国媒体公关服务资源分析是一个涵盖多方面的复杂议题&#xff0c;主要涉及到不同媒体类型、传播渠道、以及公关策略等多个维度。在当前媒体环境下&#xff0c;媒体公关服务资源主要包括…

机器人路径规划:基于斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO)的机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…

【论文阅读】通过组件对齐评估和改进 text-to-SQL 的组合泛化

Measuring and Improving Compositional Generalization in Text-to-SQL via Component Alignment NAACL 2022| CCF B Abstract 在 text-to-SQL 任务中&#xff0c;正如在许多 NLP 中一样&#xff0c;组合泛化是一个重大挑战&#xff1a;神经网络在训练和测试分布不同的情况…

Python 深度学习第二版(GPT 重译)(二)

四、入门神经网络&#xff1a;分类和回归 本章涵盖 您的第一个真实世界机器学习工作流示例 处理矢量数据上的分类问题 处理矢量数据上的连续回归问题 本章旨在帮助您开始使用神经网络解决实际问题。您将巩固从第二章和第三章中获得的知识&#xff0c;并将所学应用于三个新…

数据之王国:解析Facebook的大数据应用

引言 作为全球最大的社交媒体平台之一&#xff0c;Facebook拥有庞大的用户群体和海量的数据资源。这些数据不仅包括用户的个人信息和社交行为&#xff0c;还涵盖了广告点击、浏览记录等多方面内容。Facebook通过巧妙地利用这些数据&#xff0c;构建了强大的大数据应用系统&…

T470 双电池机制

ThinkPad系列电脑牛黑科技双电池管理体系技术,你知道吗&#xff1f; - 北京正方康特联想电脑代理商 上文的地址 在放电情况下&#xff1a;优先让外置电池放电&#xff0c;当放到一定电量后开始让内置电池放电。 在充电情况下&#xff1a;优先给内置电池充电&#xff0c;当充…