【每日刷题】Day39

【每日刷题】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.hqwc.cn/news/697018.html

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

相关文章

实训七:实现用户管理功能

1.题目 实现用户管理功能。 2.目的 (1)理解Node.js程序的基本原理。 (2)掌握利用Node.js建立服务器程序的基本方法。 (3)理解Ajax的工作原理。 (4)掌握编写Ajax程序的基本方法。 (5)会利用所学知识设计简单的应用程序。 3.内容 设计程序能够对用户进行管理&#xff0c;实现查询…

出租车计价器设计与实现(论文 + 源码)

关于java出租车计价器设计与实现.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89304164 出租车计价器设计与实现 摘 要 在我国&#xff0c;出租车行业是八十年代初兴起的一项新兴行业&#xff0c;随着出租车的产生&#xff0c;计价器也就应运而生。但当时在全…

【ARM Cortex-M 系列 2.1 -- Cortex-M7 Debug system registers】

请阅读【嵌入式开发学习必备专栏】 文章目录 Debug system registers中断控制状态寄存器&#xff08;ICSR&#xff09;Debug Halting Control and Status Register, DHCSR Debug 寄存器DCRSR与DCRDRCPU 寄存器读操作CPU 寄存器写操作CPU 寄存器选择CPU 寄存器读写示例 调试故障…

图片加载框架Glide

目录 一、Glide基础1.1 加载图片1.2 核心代码1.3 占位图1.4 指定图片格式1.5 指定图片大小 二、Glide缓存机制2.1 内存缓存2.2 硬盘缓存2.3 重写getCacheKey() 三、Glide的回调与监听3.1 回调源码追溯3.2 into3.3 preload()方法3.4 downloadOnly()方法3.5 listener()方法 四、图…

一个基于servlet的MVC项目-登录验证

一、MVC的概念 MVC是Model、View、Controller的缩写&#xff0c;分别代表 Web 应用程序中的3种职责1 模型:用于存储数据以及处理用户请求的业务逻辑。 2视图:向控制器提交数据&#xff0c;显示模型中的数据。 3控制器:根据视图提出的请求&#xff0c;判断将请求和数据交给哪个…

2024中国(重庆)航空航天暨无人机低空经济展览会

2024中国&#xff08;重庆&#xff09;航空航天暨无人机低空经济展览会 邀请函 组织机构 主办单位: 中国航空学会 重庆市南岸区人民政府 招商执行单位&#xff1a; 重庆港华展览有限公司 展会概括∶ 2024中国航空航天暨无人机低空经济展览会将于2024年8月23-25日在重庆…

【Java EE】多线程(三)线程状态

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

AI2024(64bit) Adobe Illustrator 软件安装包下载

AI2024(64bit) Adobe Illustrator 软件安装包下载地址&#xff1a; 百度网盘下载https://pan.baidu.com/s/1C10-2JVN1rxFF5VFRuV2Yw?pwdSIMS 在创意设计的浩瀚宇宙中&#xff0c;Adobe Illustrator 2024如同一颗璀璨新星&#xff0c;以其无与伦比的创新功能和优化体验&#x…

IO的阻塞和非阻塞浅析

在操作系统和网络编程中&#xff0c;IO&#xff08;输入/输出&#xff09;操作是一个非常重要的概念。 在处理IO的时候&#xff0c;阻塞和非阻塞都是同步IO。只有使用了特殊的API才是异步IO。 ——陈硕大神 网络IO层面 典型的一次IO的两个阶段是什么&#xff1f; 数据准备 和…

Today At Apple 2024.04.20 ipad 绘画 图片管理

文章目录 recreate 软件 绘画图片管理 官网&#xff1a; https://www.apple.com/today/Apple 亚洲第一大商店&#xff1a;Apple 静安零售店现已在上海开幕如下预约课程&#xff1a;下载 Apple Store&#xff08;不是app store&#xff09;&#xff0c;点击课程预约笔记&#xf…

Operations Research课程之非线性规划(梯度下降|牛顿法|Gurobi+Python)

目录 1.非线性规划介绍 2.梯度下降法(Gradient descent) 2.1 梯度和Hessians矩阵 2.2 梯度下降算法 2.3 算法举例 3. 牛顿法(Newton’s method) 3.1 适合单变量的牛顿法 3.2 适合多变量的牛顿法 3. 实例(GurobiPython) 3.1 Agricultural Pricing问题描述 3.2 Gurobi…

第五百零三回

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容&#xff0c;本章回中将介绍使用get进行路由管理.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…