【每日刷题】Day39

news2024/11/25 16:30:47

【每日刷题】Day39

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 622. 设计循环队列 - 力扣(LeetCode)

2. 387. 字符串中的第一个唯一字符 - 力扣(LeetCode)

3. 2073. 买票需要的时间 - 力扣(LeetCode)

1. 622. 设计循环队列 - 力扣(LeetCode)

//思路:顺序表。

typedef int QDataType;


 

typedef struct//循环队列结构体,包含有一数组,指向头和尾的变量head和tail,数组有效长度k

{

    QDataType* arr;

    int head;

    int tail;

    int k;

} MyCircularQueue;


 

MyCircularQueue* myCircularQueueCreate(int k)//创建循环队列并初始化

{

    MyCircularQueue* obj = (MyCircularQueue*)malloc(sizeof(MyCircularQueue));

    obj->arr = malloc(sizeof(QDataType)*(k+1));

    obj->head = obj->tail = 0;

    obj->k = k;

    return obj;

}

bool myCircularQueueEnQueue(MyCircularQueue* obj, int value)//入列

{

    if((obj->tail+1)%(obj->k+1)==obj->head)//循环队列判满

    {

        return false;

    }

    obj->arr[obj->tail++] = value;//入列

    obj->tail%=(obj->k+1);//设计为循环,当越界时可以回到0

    return true;

}

bool myCircularQueueDeQueue(MyCircularQueue* obj)//出列

{

    if(obj->head==obj->tail)//判空

    {

        return false;

    }

    obj->head++;

    obj->head%=(obj->k+1);//同样是设计为循环,越界时回到0

    return true;

}

int myCircularQueueFront(MyCircularQueue* obj)//获取队头元素

{

    if(obj->head==obj->tail)//判空

    {

        return -1;

    }

    return (obj->arr[obj->head]);

}

int myCircularQueueRear(MyCircularQueue* obj)//获取队尾元素

{

    if(obj->head==obj->tail)//判空

    {

        return -1;

    }

    return obj->arr[(obj->tail+obj->k)%(obj->k+1)];//这里比较难懂,可以原式是((obj->tail-1+k+1)%(k+1)),这里目的是为了处理tail为0时-1越界的情况

}

bool myCircularQueueIsEmpty(MyCircularQueue* obj)//判空

{

    return (obj->tail==obj->head);

}

bool myCircularQueueIsFull(MyCircularQueue* obj)//判满

{

    return (obj->tail+1)%(obj->k+1)==obj->head;

}

void myCircularQueueFree(MyCircularQueue* obj)//释放

{

    free(obj->arr);

    free(obj);

}

2. 387. 字符串中的第一个唯一字符 - 力扣(LeetCode)

//思路:二次遍历。第一次遍历用哈希表存储字符出现的次数,第二次遍历根据哈希表判断该字符出现的次数,来判断是否为答案

int firstUniqChar(char* s)

{

    int hash[26] = {0};

    int i = 0;

    for(i = 0;i<strlen(s);i++)//存储每个字符出现的个数

    {

        hash[s[i]-'a']+=1;

    }

    for(i = 0;i<strlen(s);i++)

    {

        if(hash[s[i]-'a']==1)//找到只出现一次的字符返回下标

        {

            return i;

        }

    }

    return -1;

}

3. 2073. 买票需要的时间 - 力扣(LeetCode)

//思路:循环遍历数组。

int timeRequiredToBuy(int* tickets, int ticketsSize, int k)

{

    int ans = 0;

    int i = 0;

    while(tickets[k]!=0)//第k个人没买完票循环继续

    {

        if(tickets[i]!=0)//每一个人买票,时间+1

        {

            ans++;

            tickets[i]--;

        }

        i++;

        i%=ticketsSize;//当遇到数组末尾时,回到头,模拟排队

    }

    return ans;

}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++类细节,反汇编,面试题02

文章目录 2. 虚函数vs纯虚函数3. 重写vs重载vs隐藏3.1. 为什么C可以重载&#xff1f; 4. struct vs union4.1. 为什么要内存对齐&#xff1f; 5. static作用6. 空类vs空结构体6.1. 八个默认函数&#xff1a;6.2. 为什么空类占用1字节 7. const作用7.1 指针常量vs常量指针vs常量…

k8s v1.20二进制部署

目录 一、环境准备 二、操作系统初始化配置 2.1.关闭防火墙 ​编辑 2.2.关闭selinux 2.3.关闭swap 2.4.根据规划设置主机名 2.5在master添加hosts 2.6.调整内核参数 2.7.时间同步 三、部署 docker引擎 3.1.所有 node 节点部署docker引擎 四、部署 etcd 集群 4.1.…

【云计算小知识】云管理的作用是什么?

云计算已经成为推动企业数字化转型&#xff0c;提升运营效率的重要力量。而在这个过程中&#xff0c;云管理作为确保云计算环境稳定、高效运行的关键环节&#xff0c;其作用愈发凸显。今天我们小编就给大家详细介绍一下云管理的作用是什么&#xff1f; 云管理的作用是什么&…

找不到mfc140.dll是什么意思?四种高效率方法修复mfc140.dll文件

软件运行过程中的错误和问题偶尔会发生&#xff0c;这可能导致不便和工作效率的降低。其中一个常见的问题是“找不到 mfc140.dll”错误消息&#xff0c;这会阻止某些基于 Microsoft Visual Studio 2015 编写的应用程序运行。mfc140.dll 是一个重要的系统文件&#xff0c;今天我…

Whistle Web Debugging Proxy介绍及使用

大家好&#xff0c;今天继续给大家分享一款抓包工具&#xff0c;这款抓包工具是网页的形式&#xff0c;方便多人访问同时维护。Whistle Web Debugging Proxy是一个用于HTTP、HTTPS、WebSocket等网络协议的跨平台调试工具。它可以帮助开发者对网络请求进行捕捉、分析、修改和重定…

Spring Boot项目怎么集成Gitee登录

一、背景 现在的越来越多的项目&#xff0c;需要集成第三方系统进行登录。今天我们以Spring Boot项目集成Gitee为例&#xff0c;演示一下怎么使用Oauth2协议&#xff0c;集成第三方系统登录。 不了解oauth2的&#xff0c;可以看我之前的文章。Ouath2是怎么实现在第三方应用认…

Java入门基础学习笔记21——Scanner

在程序中接收用户通过键盘输入的数据&#xff1a; 需求&#xff1a; 请在程序中&#xff0c;提示用户通过键盘输入自己的姓名、年龄、并能在程序中收到这些信息&#xff0c;怎么解决&#xff1f; Java已经写好了实现程序&#xff0c;我们调用即可。 API&#xff1a;Applicat…

Linux---vim编辑器(续写)

5. vim正常模式命令集 插入模式 按「i」切换进入插入模式「insert mode」&#xff0c; 按“i”进入插入模式后是从光标当前位置开始输入文件&#xff1b; 按「a」进入插入模式后&#xff0c;是从目前光标所在位置的下一个位置开始输入文字&#xff1b; 按「o」进入插入模式…

APP未上架应用市场,微信商户如何快速开通APP支付

在移动互联网时代&#xff0c;APP作为企业服务用户的重要窗口&#xff0c;其支付功能的完善性直接关系到用户体验和企业的营收。然而&#xff0c;对于许多未上架应用市场的APP来说&#xff0c;如何快速开通微信APP支付功能成为了一个亟待解决的问题。本文将为您详细介绍在APP未…

MetaRTC-push推流客户端代码分析

本demo渲染使用opengl&#xff0c;音频采集使用alsa&#xff0c;视频采集使用v4l2/dev/video。 在设计多个平台时&#xff0c;MetaRTC的源码和google的c webrtc源码都使用了工厂模式的方法&#xff0c;比如以下不同平台的视频采集为例子。YangVideoCaptureLinux是实现linux平台…

将macOS系统安装到外置硬盘上教程

常常因为Mac昂贵的价格&#xff0c;我们会选择低容量的硬盘版本&#xff0c;造成很多大型游戏都安装不了的尴尬境地。今天&#xff0c;我们要探讨一个非常实用的话题&#xff1a;如何给你的Mac电脑扩容&#xff0c;通过将macOS系统安装到外置硬盘上。这对于希望提升存储空间但又…

基于GD32的简易数字示波器(5)- 软件_控制LED

这期记录的是项目实战&#xff0c;做一个简易的数字示波器。 教程来源于嘉立创&#xff0c;帖子主要做学习记录&#xff0c;方便以后查看。 本期主要介绍GPIO口的输入输出模式&#xff0c;使用其中的输出模式驱动LED。详细教程可观看下方链接。 2.2 LED控制实验 语雀 1、LE…

表征和基于结构的蛋白质工程:黄芪特异性皂苷乙酰转移酶-文献精读14

Characterization and structure-based protein engineering of a regiospecific saponin acetyltransferase from Astragalus membranaceus 表征和基于结构的蛋白质工程&#xff1a;黄芪特异性皂苷乙酰转移酶&#xff0c;一篇乙酰基转移酶文章精读分享~ 摘要 乙酰化有助于许…

一文入门DNS

概述 DNS是一个缩写&#xff0c;可以代表Domain Name System&#xff0c;域名系统&#xff0c;是互联网的一项基础服务。也可以代表Domain Name Server&#xff0c;域名服务器&#xff0c;是进行域名和与之相对应的IP地址相互转换的服务器。DNS协议则是用来将域名转换为IP地址…

pgbackrest 备份工具使用 postgresql

为啥我会使用pgbackrest进行备份&#xff1f;因为postgresql没有自带的差异备份工具。。。而我们在生产环境上&#xff0c;一般都需要用到差异备份或者增量备份。我们的备份策略基本是&#xff0c;1天1次完整备份&#xff0c;1个小时1次差异备份。如果只需要完整备份&#xff0…

基于SSM的理发店会员管理系统的设计和实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的理发店会员管理系统的设计和实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0…

☀☀☀☀☀☀☀有关栈和队列应用的oj题讲解☼☼☼☼☼☼☼

准备好了么 目录&#xff1a; 一用两个队列实现栈&#xff1a; 1思路&#xff1a; 2画图理解&#xff1a; 3代码解答&#xff1a; 二用两个栈实现队列&#xff1a; 1思路&#xff1a; 2画图理解&#xff1a; 3代码解答&#xff1a; 三设计循环队列&#xff1a; 1思路…

使用Docker+Jar方式部署微服务工程(前后端分离)看着一篇就够了

本篇教程的使用到的技术有springboot、springcloud、Nacos、Docker、Nginx部署前后端分离访问的微服务。 部署一下Nacos 首先我们需要在服务器中&#xff08;或者本地部署启动一下Nacos&#xff09;&#xff0c;这里我采用服务器的方式进行部署&#xff0c;这里有一点不一样的…

vue3 第二十八节 (vue3 事件循环之JS事件循环)

1、什么是事件循环 事件循环就是消息队列&#xff0c;是浏览器渲染主线程的工作方式&#xff1b; 过去将消息队列&#xff0c;简单的分为宏任务 和微任务 两种队列&#xff0c;而对于现在复杂多变的浏览器环境&#xff0c;显然这种处理方式已经不能满足使用&#xff0c;取而代…

如何开通微软必应bing国内竞价广告账户?

微软必应Bing作为全球第二大搜索引擎&#xff0c;凭借其特有的用户群和市场定位&#xff0c;为中国广告主开辟了一片潜力无限的蓝海市场。云衔科技通过专业实力&#xff0c;为广告主提供全方位支持&#xff0c;从开户到代运营&#xff0c;助力企业扬帆起航。 一、微软必应bing…