LCCUP‘22 力扣杯 秋季编程大赛 - 战队赛

LCCUP’22 力扣杯 秋季编程大赛 - 战队赛

我是菜鸡,都大二了,才写出来一题。


一、最小展台数量

力扣嘉年华将举办一系列展览活动,后勤部将负责为每场展览提供所需要的展台。
已知后勤部得到了一份需求清单,记录了近期展览所需要的展台类型,demand[i][j] 表示第 i 天展览时第 j 个展台的类型。
在满足每一天展台需求的基础上,请返回后勤部需要准备的最小展台数量。

同一展台在不同天中可以重复使用。

需要你求一个展台数组,满足所有天的需要,可以多,但是绝对不能不够用。

class Solution {
public:
    int minNumBooths(vector<string>& demand) {
        vector<int>v(26),v1(26);
        int res=0;
        for(auto &i:demand){
            v1=v;
            for(auto &j:i){
                if(!v1[j-'a']){
                    v[j-'a']++;    
                    res++;
                }else{
                    v1[j-'a']--;
                }
            }
        }
        return res;
    }
};

二、装饰树

不写文字了,直接看图
![图一](https://img-blog.csdnimg.cn/img_convert/5550a7ba9b0e080d29dc05d702bcff88.png#pic_center px=400x200)

![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/fbe3cf710e7171a777d56b8c6b315241.png#pic_center px=400x200)

能看懂吧,就是在二叉树每一条线上,插入一个-1节点。

class Solution {
public:
    void test(TreeNode* root){
        if(root->left){
            test(root->left);     
            TreeNode* temp=new TreeNode(-1,root->left,NULL);
            root->left=temp;
        }
        if(root->right){
              test(root->right);              
            TreeNode* temp=new TreeNode(-1,NULL,root->right);
            root->right=temp;
        }
    }
    TreeNode* expandBinaryTree(TreeNode* root) {
        test(root);
        return root;
    }
};

由下向上开始插入,需要用new申请内存,不能用malloc,我也不知道为什么

三、美观的花束

力扣嘉年华的花店中从左至右摆放了一排鲜花,记录于整型一维矩阵 flowers 中每个数字表示该位置所种鲜花的品种编号。你可以选择一段区间的鲜花做成插花,且不能丢弃。
在你选择的插花中,如果每一品种的鲜花数量都不超过 cnt 朵,那么我们认为这束插花是 「美观的」。

例如:[5,5,5,6,6] 中品种为 5 的花有 3 朵, 品种为 6 的花有 2 朵,每一品种 的数量均不超过 3
请返回在这一排鲜花中,共有多少种可选择的区间,使得插花是「美观的」。

答案需要以 1e9 + 7 (1000000007) 为底取模,如:计算初始结果为:1000000008,请返回 1

class Solution {
public:
    int beautifulBouquet(vector<int>& f, int cnt) {
     int mod=1e9+7;
      int ans=0;
      unordered_map<int,int>m;
      for(int l=0,r=0;r<f.size();r++){
          m[f[r]]++;
          while(m[f[r]]>cnt){
                m[f[l]]--;//这里不能反
                l++;           
          }
          ans+=(r-l+1);
          ans%=mod;
      }
      return ans;
    }
};

滑动窗口

总结

链接: 原题链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
是一个在线的编程题库,在其中有各种算法和数据结构的题目,供程序员进行练习。题库支持多种编程语言,包括Python。 Python格式是指在平台上使用Python语言解答问题时需要注意的一些细节和规范。以下是一些Python格式的要点: 1. 导入模块:根据题目需要,导入相应的Python模块。常见的模块如:math、collections等。 2. 主函数:在解题时,将代码写在一个主函数中。通常命名为def main()。 3. 输入输出:遵循的输入输出格式。使用input函数获取输入数据,使用print函数输出结果。 4. 命名规范:遵循Python的命名规范。变量和函数名采用小写字母与下划线的组合,以便于代码的可读性。 5. 注释:在关键代码处添加注释,描述代码功能和思路。这不仅方便自己理解和维护代码,也方便他人阅读。 6. 缩进:使用统一的缩进风格,通常为4个空格或者1个制表符。 7. 算法实现:根据题目要求,选择合适的算法进行实现。可以使用循环、条件判断、递归等常见的编程结构。 8. 异常处理:对于可能出现异常的地方,使用try-except语句进行异常处理。 9. 提交代码:在完成代码编写后,将代码复制到平台的代码编辑器中,然后点击提交按钮进行代码评测。 总之,Python格式主要是指在平台上使用Python语言解题时需要遵守的编码规范和格式要求。遵循这些规范可以提高代码的可读性和可维护性,从而更好地解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码有点萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值