leetcode每日一题——美团笔试题【3】

news2024/9/21 19:08:27

在这里插入图片描述

第一题

股票的最大利润

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

 

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
 

限制:

0 <= 数组长度 <= 10^5

解法

  1. 先判断边界情况,只有一个价格或者列表为空的时候,无法收益,返回0;
  2. 然后先指定序列中第一个为最小值,然后从他后面依次循环每个值,如果遇到更小的则更新为当前值,如果遇到比他大的则用当前值减去最小值与之前的结果对比,取两者中的最大值。

代码

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
    	if len(prices) == 0 or len(prices) == 1:
    		return 0
    	res = 0
    	buy = prices[0]
    	for i in range(1,len(prices) - 1):
    		if prices[i] <= buy:
    			buy = prices[i]
    		else:
    			res = max(res,prices[i] - buy)	
    	return res

第二题

有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
 

示例 1:

输入:s = "()"
输出:true
示例 2:

输入:s = "()[]{}"
输出:true
示例 3:

输入:s = "(]"
输出:false
 

提示:

1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成

解法

第一种解法:

可采用字符串的replace方法,将s中的() {} []均替换为空字符串,最后替换完成如果s == ‘’ 则证明字符串为有效的括号

代码

class Solution:
    def isValid(self, s: str) -> bool:
		while '{}' in s or '[]' in s or '()' in s:
			s = s.replace('{}','')
			s = s.replace('[]','')
			s = s.replace('()','')
		return s == ''

第二种解法:

  1. 将三种左右括号分别作为key和value存储到字典中;
  2. 创建一个列表作为存储右括号的栈
  3. 循环字符串s,若当前循环到的字符属于字典中的key,则将其对应的value追加到第二步创建的栈中;
  4. 若当前循环到的字符不属于字典中的key(也就意味着当前的字符为右括号),判断栈是否非空的情况且栈顶元素是否能够匹配当前字符的情况:
  • 当栈为空时,则not stack为True,也就说明循环到当前的字符都没有出现左括号,不然栈一定不为空,那么不满足条件,则返回False,说明s不是有效的括号;
  • 当栈不为空时,里面存的肯定是右括号,那么直接拿栈顶元素与当前字符进行对比,如果相等则弹栈,不等则返回False;
  1. 将整个字符串中的字符循环完毕,返回栈是否为空的布尔值。

代码

class Solution:
    def isValid(self, s: str) -> bool:
        mapping_dict = {
            '(':')',
            '[':']',
            '{':'}'
        }

        stack = []
        for char in s:
            if char in mapping_dict.keys():
                stack.append(mapping_dict[char])
            else:
                # 栈为空则not stack为True反之则为False,
                # char != stack[-1]则表示当前右括号字符和栈顶元素匹配不上
                if not stack or char != stack[-1]:
                    return False
                stack.pop()
        return len(stack) == 0

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

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

相关文章

UWB隧道人员定位技术应用,施工作业安全精准保障

隧道施工的安全不仅关系到工程项目的质量和施工效率&#xff0c;也关系到我国的资金安全、施工人员和人民的生命财产安全。如何有效加强隧道施工的安全管理能力&#xff0c;成为隧道施工企业管理者最关心的问题。国家铁道局在《关于加强铁路隧道工程安全工作的若干意见》中指出…

人力资源软件的六个功能,你知道吗?

企业组织越来越多地转向通过人力资源软件来简化他们的人力资源运作。在疫情开始后&#xff0c;人力资源软件的采用尤其迅猛&#xff0c;因为组织希望无缝地管理他们的远程和混合员工。根据SkyQuest的调查人力资源技术市场预计到2028年将达到356.8亿美元。 如果您正在考虑采用人…

面试题思路分享以及延伸问题探讨三

面试题思路分享以及延伸问题探讨 1.前言2. 环形链表初阶2.1 审题2.2 代码实现以及紧急情况的处理方法2.3 延伸问题2.3.1 为什么slow和fast一定会遇上?2.3.2 走n步会是什么样的情况? 3. 环形链表进阶3.1 审题3.2 代码实现3.3 方法二:相交链表法 4. 复制带随机指针的链表4.1审题…

vue3组件二次封装Ui处理

vue 组件二次封装Ui处理 vue 组件二次封装Ui处理 在Vue开发中&#xff0c;我们常常需要使用UI框架提供的组件。但是UI框架的组件可能并不符合我们的需求&#xff0c;这时候就需要进行二次封装。下面是一些关于Vue组件二次封装Ui处理的技巧&#xff1a; 常规时候咱们使用组件…

深元AI盒子在矿山安全生产中实现皮带跑偏、异物、煤流量、大块煤等识别

摘要&#xff1a;随着技术的发展&#xff0c;矿山安全生产已经从传统的人工监测逐步转向现代化智能化。本文旨在探讨矿山安全生产AI盒子在皮带跑偏、异物、煤流量和大块煤之外的功能&#xff0c;以期进一步提高矿山生产的安全性和效率。 正文&#xff1a; 一、引言 矿山安全生…

【获奖案例巡展】信创先锋之星——中信证券基于国产图数据库构建企业图谱的应用实践

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目&#xff0c;星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动&#xff0c;旨在为各行业提供更多的优秀产品案例&#xff0c;彰显技术改变世界的力量&#xff0…

vue2、vue3实现暗黑模式

1、序言 elementPlus、naive UI这些UI组件里面封装好了暗黑模式&#xff0c;直接使用相关api即可实现暗黑模式切换功能&#xff0c;而elementUI没有封装好&#xff0c;我们可以看看elementPlus、naive UI如何实现暗黑模式&#xff0c;然后在elementUI中模仿&#xff0c;从而实现…

【C++】模板初识

C模板初识 1.泛型编程2.函数模板2.1.函数模板概念2.2.函数模板格式2.3.函数模板使用的原理2.4.函数模板的实例化2.5.模板参数的匹配原则 3.类模板3.1.类模板格式3.2.类模板的实例化 1.泛型编程 在实际编程中&#xff0c;经常会用到交换函数。比如有整型值的交换&#xff0c;浮…

Nacos 鉴权系统源码讲解

目录 1. 介绍 2. Nacos SPI 鉴权机制 3. 后台管理 / HTTP 接口鉴权 4. 客户端 / GRPC 接口鉴权 1. 介绍 鉴权功能默认没有开启&#xff0c;开启后的效果就是 Nacos 的接口需要用户登录并且具有权限才能调用该接口。例如注册实例、发布配置等。 鉴权也就是 我是谁、我能干…

探讨接口测试颗粒度

偶然间在论坛上看到一个帖子&#xff0c;帖子内容如下&#xff1a; 假设现在有一个新增商品的接口&#xff0c;返回的参数中有新增商品的 id&#xff08;每次返回的 id 都不一样&#xff09;、success&#xff08;判断是否成功&#xff0c;0 失败 1 成功&#xff09; 1. 接口…

代码随想录之对称二叉树

本内容来自代码随想录 使用后序遍历。 class Solution { public:bool traversal(TreeNode* left,TreeNode* right){//处理空节点情况if (left nullptr && right ! nullptr) return false;else if (left ! nullptr && right nullptr) return false;else if …

Python人工智能之混合高斯模型运动目标检测详解分析

搬运工项目&#xff0c;换个平台纪录&#xff0c;之前的广告太多 运动目标检测是计算机视觉领域中的一个重要内容&#xff0c;其检测效果将会对目标跟踪与识别造成一定的影响&#xff0c;本文将介绍用Python来进行混合高斯模型运动目标检测&#xff0c;感兴趣的朋友快来看看吧 …

4.2寸黑白红TFT电子标签【基站版】

ESL_TFT_4.2_V4 产品参数 产品型号 ESL_TFT_4.2_V4 尺寸(mm) 101.7*84.4*6.5mm 显示技术 TFT反射式 显示区域(mm) 84.8(H) * 63.6(V) 分辨率(像素) 400*300 像素尺寸(mm) 0.212x0.212 显示颜色 黑/白/红 视觉角度 45/45/60/60 工作温度 -20-70℃ 产品重量…

Spring6从入门到精通 第一章 带你玩转Spring

这里写目录标题 一 Spring框架产生的原因二 Spring6配置的关键环节 一 Spring框架产生的原因 传统的JavaWeb存在着耦合度较高的问题&#xff0c;而且实现完整的的MVC三层架构&#xff0c;开发成本过大&#xff0c;因此出现了Spring这个轻量级的开发框架&#xff0c;相当于建筑里…

C++初阶之命名空间的使用

目录 前言 命名空间的介绍 1.1 命名空间的定义 1.2 命名空间的使用 C输入&输出 总结&#xff1a; 前言 今天小编就给大家带来C的相关内容了&#xff0c;相对于C语言而言C的语法会比较复杂一点点&#xff0c;但是我相信大家通过自己的努力&#xff0c;也会很快的上手…

使用AIDEGen进行AOSP开发

什么是AIDEGen AIDEGen&#xff0c;大概是“Android IDE (helper) Generator”的简写&#xff0c;是 AOSP 源代码树中的一个工具&#xff0c;它允许从 Android Studio 等通常仅为非平台应用程序开发配置的 IDE 中处理系统应用程序。 AIDEGen 旨在自动化项目设置过程&#xff…

计算机视觉 | 八斗人工智能 (上)

目录 数字图像像素和分辨率灰度、通道和对比度其他概念 插值算法上采样和下采样的概念1. 最邻近插值2.双线性插值&#xff08;最常用&#xff09;3.双三次插值 直方图均衡化1. 灰度图直方图均衡化2. 彩色图直方图均衡化 数字图像 像素和分辨率 像素&#xff1a; 像素是分辨率…

智能营销服务性能提升2倍关键秘诀?就是亚马逊云科技

随着数字化进程加快和B2B商业市场竞争的白热化&#xff0c;通过挖掘数据“黄金”提升投资回报比与市场竞争力的智能营销&#xff0c;正成为B2B营销的热门风口。 但企业在获得更精准、更智能营销服务的同时&#xff0c;也不得不面临来自海量数据的搜寻以及数据实时更新等方面的…

Golang gorm

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 一 对多入门 比如要开发cmdb的系统&#xff0c;无论是硬件还是软件。硬件对应的就是对应的哪个开发在用。或者服务对应的是哪个业务模块在使用&#xff0c;或者应用谁在使用。那么这…

【CXL】在gem5中跑一个实际的应用程序——Viper KV存储

有了CXL扩展内存&#xff0c;自然是要在DRAMCXL扩展内存上跑跑实际的应用程序&#xff0c;看看和DRAM传统磁盘有什么区别。 实际的应用程序其实就是一些工业界部署使用的&#xff0c;比如数据库、深度学习训练项目等等。本文主要找到一个KV存储Viper&#xff0c;搭建并进行简单…