刷题记录˃ʍ˂

news2024/11/23 22:04:54

一、1033. 移动石子直到连续b7e056b42ca24bfca73a1b2141a25ea0.png

 62860ae100a64ae6828c8e3eaa835154.png

 思路

这道题是一道数学题,它一共分为三种可能

第一种可能为三个石子本来就是连续的时候

第二种可能为最少步数为1的时候,相邻石子不能大于一格

第三种可能为最少步数为2的时候,这时相邻石子大于一格

那么第二种和第三种的最多步数都是   最远的石子 - 最近的石子 - 2

因为输入的数据是乱序的,所以还要先将他们排序了来

代码实现

int dis[3];

void sort()
{
    int i , j , s , t;
    for(i = 0 ;i < 3 ; i++)
    {
        s = i;
        for(j = i + 1 ; j < 3 ; j++)
            if(dis[s] > dis[j])s = j;
        if(s != i)
        {
            t = dis[i];
            dis[i] = dis[s];
            dis[s] = t;
        }
    }
}

int* numMovesStones(int a, int b, int c, int* returnSize){
    int *x=(int*)malloc(sizeof(int)*2);
    dis[0] = a;
    dis[1] = b;
    dis[2] = c;
    sort();
    a = dis[0];
    b = dis[1];
    c = dis[2];
    if(b - a == 1 && c - b == 1)
    {
        x[0] = 0;
        x[1] = 0;
    }
    else if(b - a <= 2)
    {
        x[0] = 1;
        x[1] = c - a - 2;
    }
    else if(c - b <= 2)
    {
        x[0] = 1;
        x[1] = c - a - 2;
    }
    else
    {
        x[0] = 2;
        x[1] = c - a - 2;
    }
    *returnSize = 2;
    return x;
}

二、1376. 通知所有员工所需的时间

 0066dd1149544623996a4cb9366d7ad2.png

cc1c8d06e9984643b217f06b9efcc1c5.png

思路

这个题可以联想到树的结构,我们可以从最底层的员工开始向不断的找他的上级,再找的过程中,把通知的时间都加上,然后与max(最长的时间)相比,将较大的时间赋给max,然后再去找下一个底层员工,那么最后的max就是要通知所有员工的话要用的时间

做这个题的时候,力扣的这个自动判断数组越界就很烦,但实际上,我这个也确实没越界,所以这时候就要设一个新的数组来代替infomTime

代码实现

int numOfMinutes(int n, int headID, int* manager, int managerSize, int* informTime, int informTimeSize)
{
    int ans[100001];
    for(int i=0;i<n;i++){
        ans[i]=informTime[i];
    }
    int i,max=0,a,t;
    for(i=0;i<n;i++)
    {
        if(ans[i]==0)
        {
            a=manager[i];
            if(a==-1)t=ans[headID];
            else 
            {
                t=ans[a];
                while(a!=-1)
                {
                    a=manager[a];
                    if (a == -1)continue;
                    t+=ans[a];
                }
            }
            if(max<t)max=t;
        }
    }
    return max;
}

三、有效的括号

fd33c316d23f4381a49e155208f66d10.png 

64ce824a2e8c408dafcd8323b72f8f61.png 

 思路

关于栈的最基础的问题,只要实现了入栈和出栈就行了,当我们遇见左括号的的时候就将它入栈,当我们遇见右括号的时候且符合右括号的时候,就将它出栈

要注意一点的是,当把字符串中的括号全都遍历完时,如果栈里面还有括号,那么也是不正确的

再次吐槽一点,力扣的这个编译器跟真的好伤人心

代码实现

typedef struct
{
	char date[10001];
	int top;
}zlink;

void enzlink(zlink *p,char x)
{
	p->top++;
	p->date[p->top] = x;
}

void dezlink(zlink *p)
{
	p->top--;
}

bool isValid(char* s) {
	zlink p;
	p.top = 0;
	p.date[0] = '0';
	for (int i = 0; i < strlen(s); i++)
	{
		if (s[i] == '(' || s[i] == '{' || s[i] == '[')enzlink(&p, s[i]);
		else
		{
			if (p.date[p.top] == '(' && s[i] == ')')dezlink(&p);
            else if (p.date[p.top] == '{' && s[i] == '}')dezlink(&p);
            else if (p.date[p.top] == '[' && s[i] == ']')dezlink(&p);
			else return false;
		}
	}
	if (p.top != 0)return false;
	return true;
}

四、387. 字符串中的第一个唯一字符

779607df65a048e7adec3ec4c06c6797.png

 思路

首先这个题,可以用哈希

我们可以设置一个记录次数的数组,当一个字母出现过,那么次数至少为1,用字母的位置在新数组中显示,后面遍历数组的时候,遇到第一个次数为1 的,直接返回它的位置;

代码实现

int firstUniqChar(char * s){
    int num[30]={0};
    for(int i=0;i<strlen(s);i++){
        num[s[i]-'a']++;
    }
    for(int i=0;i<strlen(s);i++){
        if(num[s[i]-'a']==1)return i;
    }
    return -1;
}

 

 

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

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

相关文章

华为MPLS跨域C1方式RR场景(数据经过RR)实验配置

目录 配置BGP邻居的建立 配置MPLS LDP 配置RR之间的MP-BGP邻居 根据图配置接口的IP地址和IGP协议 配置BGP邻居的建立 PE1和RR1建立IBGP邻居、RR1和ASBR1建立IBGP邻居&#xff08;RR1作为反射器&#xff09; PE1和RR1建立MP-IBGP邻居&#xff08;RR1传给PE1的Vpnv4路由要求更…

2023 hnust 大三下 人工智能导论课程 期中考试复习笔记

前言 ★大概率考✦个人推测考点※补充内容没有完全覆盖“人工智能导论复习2023.pdf”的重点致谢&#xff1a;hwl、lyf、lqx 题型 问答&#xff1a;5*10分综合&#xff1a;15分设计&#xff1a;25分开放题/论述题&#xff1a;10分 第1章 绪论 人工智能的定义 智能 思考与…

Android ADB安装apk失败:INSTALL_FAILED_TEST_ONLY

droid ADB安装apk失败:INSTALL_FAILED_TEST_ONLY 解决&#xff1a; 1、一种是在代码里面加&#xff0c; 在gradle.properties配置文件加入属性&#xff0c;把testOnly设置为false Android安装apk失败&#xff1a;The application could not be installed: INSTALL_FAILED_TES…

Java内存模型之JMM

计算机硬件存储系统 因为有这么多级的缓存&#xff08;cpu和物理主内存的速度不一致&#xff09; CPU的运行并不是直接操作内存而是把内存里边的数据读取到缓存&#xff0c;而内存的读和写操作的时候就会造成不一致的问题 JVM规范中试图定义一种Java的内存模型&#xff08;ja…

【算法与数据结构】递归函数设计技巧

数学归纳法 step1: 验证P(1)成立step2: 证明如果P(k)成立&#xff0c;那么P(k1)也成立step3: 联合step1和step2&#xff0c;证明由P(1)->P(n)成立 例1&#xff1a; 证明&#xff1a; 1 3 . . . ( 2 n − 1 ) n 2 13...(2n-1) n^2 13...(2n−1)n2 证明P(1)成立&#…

Midjourney之logo设计(建议收藏)

目录 宠物诊所的logo设计 常见的Logo类型 图形logo: 字母LOGO APP LOGO 进阶技巧 设置艺术家风格 去掉不需要的元素 ChatGPT Midjourney设计logo 聊天&#xff08;国产&#xff09;&#xff1a;文心一言通义千问 绘图&#xff08;国产&#xff09; UI设计 ChatGP…

LangChain入门(四)-构建本地知识库问答机器人

在这个例子中&#xff0c;我们会介绍如何从我们本地读取多个文档构建知识库&#xff0c;并且使用 Openai API 在知识库中进行搜索并给出答案。 目录 一、安装向量数据库chromadb和tiktoken 二、使用案例 三、embeddings持久化 四、在线的向量数据库Pinecone 一、安装向量数…

Maya云渲染怎么操作?看这一篇就够了

Autodesk Maya 是一款3D动画和视觉效果软件&#xff0c;拥有强大的角色建模、绑定、动画和模拟工具集&#xff0c;与Maya兼容的渲染器包括 Arnold&#xff08;默认渲染器&#xff09;、iRay、Maxwell、ProRender、Octane、Redshift、V-Ray、RenderMan 等。 与 Autodesk 的所有产…

异常排查 | 有关页面部署Tomcat造成的端口冲突问题

今日在写Servlet的时候&#xff0c;将网页部署到tomcat时&#xff0c;出现了如下错误&#x1f447; 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8080]]一开始其实还没有发现这个地方出了问题&…

安装适用于Linux的Windows11子系统(WSL2)

1. 主板BIOS开启虚拟化 开启虚拟化需要在BIOS中进行设置&#xff0c;进入主板BIOS→找到虚拟化设置→开启。 2. 检验是否开启虚拟化 打开Windows命令行&#xff0c;并运行 systeminfo固件中已启用虚拟化为是&#xff0c;代表主板BIOS已经开启虚拟化。 3. 启用Windows功能…

操作系统——内存管理

0.关注博主有更多知识 操作系统入门知识合集 目录 7.1内存管理功能 思考题&#xff1a; 7.2物理内存管理 7.2.1分区内存管理 思考题&#xff1a; 7.2.2分区放置策略 7.2.3内存覆盖技术 7.2.4内存交换技术 7.2.5内存碎片 7.3虚拟内存管理 7.3.1页式虚拟存储管理 思…

安全服务体系建设主体内容

安全服务体系建设总共10类工作内容,每类分若干咨询方案或技术实施方案,同时也是一个长期建设与服务的工作,这些工作都是依据《网络安全等级保护基本要求》、《网络安全等级保护安全设计技术要求》《网络安全等级保护定级指南》。关于如何定级在这篇 等保定级报告模版_luozho…

STM32F4_USMART调试组件

目录 1. USMART是什么&#xff1f; 2. USMART的特点 3. USMART实现流程 4. USMART组件 5. 在usmart_config.c中添加想要被USMART调用的函数 6. 实验程序 6.1 main.c 6.2 usmart.c 6.3 usmart.h 7. USMART调试的优越性说明 1. USMART是什么&#xff1f; USMART 是 AL…

压力测试工具Jmeter安装及使用

1.安装Jmeter Jmeter依赖于JDK&#xff0c;所以必须确保当前计算机上已经安装了JDK&#xff0c;并且配置了环境变量。 1.1.下载 可以Apache Jmeter官网下载&#xff0c;地址&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 1.2.解压 因为下载的是zip包&#xff…

三次样条曲线CubicSpline

本文参考老张在上海轨迹规划 之 三次样条曲线&#xff08;概念性质&#xff09; - 知乎 (zhihu.com) 什么是三次样条曲线 之 三次 样条是一种数据插值的方式&#xff0c;在多项式插值中&#xff0c;多项式是给出的单一公式来尽可能满足所有的数据点&#xff0c;而样条则使用多…

刷题刷题。

租用游艇 1.格式化输入二维数组&#xff1a;1-2&#xff0c;1-3&#xff0c;1-4&#xff0c;2-3&#xff0c;2-4&#xff0c;3-4... ... for(int i1; i<n-1; i) for(int ji1; j<n; j) 2.三重for循环枚举路径&#xff1a;第…

D. Unique Palindromes(回文串/构造)

题目 题意 给定字符串的长度&#xff0c;以及k个条件。 对于每个条件&#xff0c;给定x和c&#xff0c;表示原字符串的长度为x的前缀字符串&#xff0c;存在c个互不相同的回文子串。 原字符串由26个小写字母组成。 构造出长度为n&#xff0c;且满足上述k个条件的字符串。如果…

不黑艺术学社京藏行——参观五台山孙溟㠭为五台山红英师治印

不黑学社社长孙溟㠭先生与五台山菩萨顶主事红英师 不黑学社京藏行&#xff0c;路经五台把佛拜。 巍巍五台清凉境&#xff0c;参访伊始菩萨顶。 感恩“天珠”刘诗语&#xff0c;芬芳佛语满香华。 感恩慈悲红英师&#xff0c;带众参拜大白塔。 菩萨顶上如意宝&#xff0c;莲…

springboot+vue口腔管理平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的口腔管理平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

微服务---分布式多级缓存集群实现方案(Caffeine+redis+nginx本地缓存+Canal数据同步)

分布式多级缓存集群实现方案 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后&#xff0c;先查询Redis&#xff0c;如果未命中则查询数据库&#xff0c;如图&#xff1a; 存在下面的问题&#xff1a; •请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的…