【每日刷题】Day37

【每日刷题】Day37

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 2391. 收集垃圾的最少总时间 - 力扣(LeetCode)

2. 1614. 括号的最大嵌套深度 - 力扣(LeetCode)

3. 496. 下一个更大元素 I - 力扣(LeetCode)

1. 2391. 收集垃圾的最少总时间 - 力扣(LeetCode)

//思路:一次遍历。使用一个数组,记录每种车去往不同位置清理的总用时。

int garbageCollection(char** garbage, int garbageSize, int* travel, int travelSize)

{

    int hash[26] = {0};

    int ans = 0;

    int count = 0;

    for(int i = 0;i<garbageSize;i++)

    {

        ans+=strlen(garbage[i]);//因为每种垃圾清理所用时长都为1分钟,因此这里直接加上垃圾数量即可,这里是清理垃圾的耗时

        if(i>0)//当i>0后需要考虑行程耗时

        {

            count+=travel[i-1];//用于记录行程总耗时

            for(int j = 0;garbage[i][j]!='\0';j++)

            {

                hash[garbage[i][j]-'A'] = count;//用于记录每辆车的行程耗时

            }

        }

    }

    for(int i = 0;i<26;i++)//最后加上每辆车的行程耗时

    {

        ans+=hash[i];

    }

    return ans;

}

2. 1614. 括号的最大嵌套深度 - 力扣(LeetCode)

//思路:栈。遍历字符串,遇到左括号入栈,深度+1,遇到右括号出栈,深度-1,如果深度为0,记录最大深度

int maxDepth(char* s)

{

    int ans = 0;

    int count = 0;

    char* arr = (char*)malloc(sizeof(char)*strlen(s));

    int num = 0;

    while(*s)

    {

        if(*s=='(')//左括号入栈

        {

            arr[num++] = *s;

            count++;//深度+1

            ans = ans>count?ans:count;//记录最大深度

        }

        else if(*s==')')//右括号出栈

        {

            num--;

            count--;//深度-1

        }

        s++;

    }

    return ans;

}

3. 496. 下一个更大元素 I - 力扣(LeetCode)

//思路:遍历两个数组。在nums2中定位nums1的元素位置,随后向后遍历寻找遇到的更大的第一个元素,入栈;如果找到了数组尾也没找到更大的,则将-1入栈。

int* nextGreaterElement(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize)

{

    int* ans = (int*)malloc(sizeof(int)*nums1Size);

    int count = 0;

    for(int i = 0;i<nums1Size;i++)

    {

        int flag = 1;

        int j = 0;

        while(nums2[j]!=nums1[i])//在nums2中定位与nums1中当前元素相同的位置

        {

            j++;

        }

        j++;//定位到后向后挪动一位

        if(j>=nums2Size)//如果nums1中当前元素在nums2中的位置为数组尾,由于后面没有元素,因此不可能会有更大的,直接将-1入栈,并跳过后面。

        {

            ans[count++] = -1;

            continue;

        }

        for(;j<nums2Size;j++)//遍历nums2寻找下个更大元素

        {

            if(nums2[j]>nums1[i])

            {

                ans[count++] = nums2[j];//找到后直接入栈,跳出循环,并将标志置0

                flag = 0;

                break;

            }

        }

        if(flag)//如果标志没有置0,说明在nums2中没有找到更大的元素,将-1入栈

        {

            ans[count++] = -1;

        }

    }

    *returnSize = count;

    return ans;

}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费AI工具教学知识库

在数字化时代&#xff0c;AI技术正以前所未有的速度改变着世界。你是否也渴望踏入这个充满无限可能的领域&#xff1f;好消息&#xff01;现在有一个免费的AI知识库向你敞开大门&#xff0c;助你轻松掌握AI的奥秘。 这个知识库内容丰富&#xff0c;覆盖从AI入门必学到AI使用进阶…

vue3属性透传(透传 Attributes),支持多个根节点,且可以在JavaScript 中访问透传 Attributes

支持多个根节点&#xff0c;且可以在JavaScript 中访问透传 Attributes Index.vue: <script setup> import { ref, onMounted } from vue import Child from ./Child.vue import ./index.cssconst handleClick () > {console.log(1) }onMounted(() > {}) </s…

【3dmax笔记】036:FDD修改器

一、FDD修改器简介 FDD修改器是对模型进行变形处理的命令,FDD后面的数字越大,编辑节点越多,编辑越精细,但是FDD控制点多的同时,模型上的节点也要多才可以。 FFD修改器是一种非常灵活的修改器,可以让我们对模型进行自由的变形操作。通过在FFD修改器中设置变形点,我们可…

Celery Redis 集群版连接和PyCharm启动配置

目录 使用Redis cluster版作为broker原因 PyCharm配置 使用Redis cluster版作为broker 在celery5及其之前版本&#xff0c;需要配置如下才可行 celery_app.conf.update( broker_transport_options{“global_keyprefix”: “{celery}:”}, ) 原因 https://github.com/celery/…

uniapp音乐播放整理

一、前置知识点 1.1 音频组件控制-uni.createInnerAudioContext() 创建并返回内部 audio 上下文 innerAudioContext 对象。 主要用于当前音乐播放&#xff1b; 1.1.1 innerAudioContext属性 属性类型说明只读平台差异说明srcString音频的数据链接&#xff0c;用于直接播放…

【Python系列】Python中列表属性提取

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Java 查询树结构列表,递归删除子节点】

Java 获取列表树结构&#xff0c;递归删除子节点 数据库表结构ModelVO查询树结构列表递归删除子节点 数据库表结构 Model Data AllArgsConstructor NoArgsConstructor public class TBaseDept {/** ID */private String id;/** 单位名称 */private String fdName;/** 部门编码…

山东大学软件学院创新项目实训开发日志——第11周

山东大学软件学院创新项目实训开发日志——第11周 项目名称&#xff1a;ModuFusion Visionary&#xff1a;实现跨模态文本与视觉的相关推荐 -------项目目标&#xff1a; 本项目旨在开发一款跨模态交互式应用&#xff0c;用户可以上传图片或视频&#xff0c;并使用文本、点、…

Kafka效率篇-提升效率三板斧

kafka在效率上做了很多的努力。最初的一个使用场景是处理网页上活跃的数据&#xff0c;它往往有非常大的体量&#xff0c;每个页面都能产生数十条写入。而且我们假设每条消息都会被至少一个消费者消费&#xff08;通常是多个&#xff09;&#xff0c;因此&#xff0c;我们努力让…

2 GPIO控制

ESP32的GPIO的模式&#xff0c;一共有输入和输出模式两类。其中输入模式&#xff1a;上拉输入、下拉输入、浮空输入、模拟输入&#xff1b;输出模式&#xff1a;输出模式、开漏输出&#xff08;跟stm32八种输入输出模式有所不同&#xff09;。库函数中控制引脚的函数如下&#…

如何将Hyper-V转VMware?反之亦可

为何要在Hyper-V和VMware之间进行转换呢&#xff1f; 尽管VMware和Microsoft Hyper-V都是当前流行的一类虚拟机监控程序&#xff0c;但它们并不相互兼容。VMware产品使用VMDK格式创建虚拟磁盘&#xff0c;而Hyper-V则使用VHD或VHDX格式创建虚拟磁盘。 有时您可能需要进行这种转…

解读丰田生产方式的工作原理

丰田生产方式&#xff0c;被誉为现代制造业的瑰宝&#xff0c;以其独特的精益生产理念&#xff0c;引领了全球制造业的变革。本文将从丰田生产方式的核心理念、两大支柱、应用实践以及面临的挑战等方面&#xff0c;全面解读其工作原理。 丰田生产方式&#xff0c;又称精益生产&…