公司申请网站建设的工作方案/什么是关键词推广

公司申请网站建设的工作方案,什么是关键词推广,云南火电建设公司网站,苏州高端网站数据结构与算法分析课下实验练习,现记录一下解答过程,欢迎大家批评指正。 声明:本题目来源于西安交通大学电信学院原盛老师,任何单位或个人在使用、转载或引用本题目时,请务必标明出处为“西安交通大学电信学院原盛老…

数据结构与算法分析课下实验练习,现记录一下解答过程,欢迎大家批评指正。

声明:本题目来源于西安交通大学电信学院原盛老师,任何单位或个人在使用、转载或引用本题目时,请务必标明出处为“西安交通大学电信学院原盛老师”。

练习三:关于栈


众所周知,栈虽然是一个操作受限的线性表,但是其用途很广泛,栈的数据结构实现非常简单,因此我们只从应用层面熟悉栈。请完成下面二个子任务。
(1) 算数混合表达式计算 表达式不仅能处理整数,还需要处理小数。表达式中涉及的运算符包括+; -; ∗; ÷和 ^(指数)。表达式可以包含圆括号,且允许圆括号的嵌套,因此要处理括号匹配失败的情形。

(2) 寻找连续的股票最大走势区间 在股票市场中,需要识别股价走势中的连续时间段,这些时间段内股价表现出特定的行为模式,如连续上涨、连续下跌或是横盘整理等。这种分析对于技术分析尤为重要,它帮助交易者和投资者理解市场的动向,判断趋势的持续性或反转的可能性。给定一个记录股票价格的数组 prices,需要生成对应的 s 数组,s[i] 中记录的值为 i - j + 1,其中 i 和 j 必须要满足 prices[j::i - 1] 中的每一个值都符合 prices[j] ≤ prices[i]。s 数组中的最大值即为连续上涨的最大区间。如图 1 所示。

设计并实现一个算法完成对给定的 prices 数组上求最大连续上涨时间区间值。如果仅使用最朴实的设计思想,该算法的时间复杂和空间复杂度是多少?如果使用栈设计的算法,其时间复杂度和空间复杂度是多少?


随机生成 10 组数据完成测试。


第一问

第一小问可以这样实现:我们输入一个混合表达式(中缀),然后将其转化成后缀表达式,然后根据后缀表达式计算结果。这里要注意:避免触发计算机自带的计算机制,即我们现在假设计算机只会进行加减乘除和乘方的其中一种计算,并不会进行混合计算。 为了实现这个,我们可以以字符串的形式进行。字符串不会自己进行计算。除此之外,还有一个问题就在与小数和百位数的输入问题,如果是小数的输入那怎么才能让小数成为一个整体呢?举例而言,1.1+3*2.3 这个表达式的输入,因为我们是以字符串的形式输入的,那么如果是整数的形式输入一个索引所对应的就是一个数字。 而现在我们是小数输入,一个索引并不能表示一个小数。或者一个索引并不能表示一个两位数或更多。这里我觉得并不是此问题的关键,所以在输入时,我要求要以空格将数字和字符隔开,使用 split 方法即可以断开。这样就方便了我们的操作,让精力集中在表达式的转换和计算上。

注:输入代数式时要注意英文符号,其次每个数字和字符之间要用空格隔开

#这里先定义算术符的优先性大小,方便后续比较
f={'+':1,'-':1,'*':2,'/':2,'^':3,'(':4
}x=input('请输入表达式(请使用英文字符,且数字和字符之间用空格隔开,只允许输入小括号):')
x=x.split()
#先检测输入的字符是否合法
kk=[]
for i in range(len(x)):if x[i]=='(':kk.append(x[i])if x[i]==')':if kk[len(kk)-1]!='(' or len(kk)==0:print('输入括号不匹配!!')else: kk.pop()
if len(kk)!=0:print('输入括号不匹配!!')
else:a=[]#用于存放后缀表达式b=[]#用于存放字符for i in range(len(x)):if (x[i].isdigit())or ('.' in x[i]):a.append(x[i])elif x[i]!=')':if x[i]=='(':b.append(x[i])f[x[i]]=0continueif len(b)==0 or f[x[i]]>f[b[len(b)-1]] or x[i]=='^':b.append(x[i])continuewhile f[x[i]]<=f[b[len(b)-1]]:a.append(b.pop())if len(b)==0: breakb.append(x[i])else:while b[len(b)-1]!='(':a.append(b.pop())f[b[len(b)-1]]=4b.pop()if len(b)!=0:for i in range(len(b)):a.append(b.pop())print(a)#对a进行操作,计算后缀表达式c=[]for i in range(len(a)):if a[i]>='0' and a[i]<='9':c.append(a[i])else:m2=float(c.pop())m1=float(c.pop())if a[i]=='+':c.append(m1+m2)elif a[i]=='-':c.append(m1-m2)elif a[i]=='*':c.append(m1*m2)elif a[i]=='/':c.append(m1/m2)else: c.append(m1**m2)print(c[0])

结果输出:

正常情况下输出:

检验括号匹配情况:

第二问

首先明白 s[i]表示的含义: s[i]表示 prices 列表中第 i 个元素结尾且在它之前有多少个连续的元素比它小。
普通算法思想:从 prices[i]开始向前寻找,直到不满足条件结束,记录这个区间的长度。最后返回 s 列表以及列表中的最大值。

如果使用栈的思想:利用栈的话可以直接求得 s 数组的最大值。 其中最关键的一点在与如果从 prices[j]到 prices[i]的区间满足条件,那么不需要去查询这个区间中的任何一个元素为结尾有多大的区间长度满足条件,因为后者的区间长度必然不能大于前者的区间长度(我们要求的是最大长度)这正是优化的地方所在。(但感觉这个栈没有多大关系,不用栈也能写。)

import random
#普通
s=[]
x=[]
for i in range(10):x.append(random.randint(1,100))
print(x)
for i in range(len(x)):num=0k=iwhile x[i]>=x[k] and k>=0:num+=1k=k-1s.append(num)
print(max(s),sep='\n')
#栈的思想
stack=[]
maximum=0
i=len(x)-1
while i>=0:if len(stack)==0 or x[i]<=stack[0]:stack.append(x[i])else:if len(stack)>maximum:maximum=len(stack)stack.clear()stack.append(x[i])i-=1
if len(stack)>maximum:maximum=len(stack)print(maximum)

结果展示:第一行是随机生成的 prices 列表,第二行和第三行输出的是两种算法得出最大区间。

时间复杂度分析: 普通思想情况下,则其时间复杂度为: O(n^2),空间复杂度为 O(1)而对于利用栈来说:它只需要扫描一遍即可得到最大值,所以它的时间复杂度为 O(n),空间复杂度为 O(n)

写作时间匆忙,如有错误请不吝赐教。

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

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

相关文章

日志代码编写

&#x1f30e;日志代码编写 文章目录&#xff1a; 日志代码编写 了解日志 日志编写       日志等级       获取时间信息       获取文件名行号及处理可变参数列表       以宏的形式传参       日志加锁       日志消息输出方式 完整代码 …

HCIA笔记整合

第一部分&#xff1a; OSI七层模型 应用层&#xff1a;人机交互 抽象语言--------编码 表示层&#xff1a;编码------二进制 会话层&#xff1a;提供会话号 传输层&#xff1a;TCP/UDP 分段&#xff08;收到MTU值的限制&#xff09; MTU&#xff1a;最大传输单元&#xff…

Kafka集群数据迁移方案

概述 MirrorMaker2&#xff08;后文简称 MM2&#xff09;在 2019 年 12 月随 Kafka 2.4.0 一起推出。顾名思义&#xff0c;是为了解决 Kafka 集群之间数据复制和数据同步的问题而诞生的 Kafka 官方的数据复制工具。在实际生产中&#xff0c;经常被用来实现 Kafka 数据的备份&a…

Prometheus监控平台部署与应用

Prometheus特点 多维数据模型 PromSQL&#xff1a;一种灵活的查询语言&#xff0c;可以利用多维数据完成复杂的查询 不依赖分布式存储&#xff0c;单个服务器节点可直接工作 基于HTTP的pull方式采集时间序列数据 推送时间序列数据通过PushGateway组件支持 通过服务发现或静态配…

vue3 栅栏式拖拽布局组件

先看效果&#xff1a; 使用方法&#xff1a; 1、npm install fencelayout 2、引入使用 <template><Fencelayout><!-- 需要写的模块直接嵌套在这个下面就可以 --><div class"aaaa"><a-button>模块1</a-button></div><…

探索设计模式:命令模式

探索设计模式&#xff1a;命令模式 &#x1f9d0;1. 概念&#x1f3af;2. 作用&#x1f4e6;3. 实现3.1 定义命令接口3.2 实现具体命令3.3 实现接收者3.4 实现调用者3.5 使用 &#x1f4bb;4. 应用场景 命令模式&#xff08;Command Pattern&#xff09;就是一种行为型设计模式…

茅台最新任务脚本

茅台最新任务脚本 –小白教程— 这个脚本的作用是实现i茅台应用的自动预约功能&#xff0c;主要功能包括生成请求头、预约商品、计算距离和库存情况、发送微信推送消息等。 代码如下#!/usr/bin/python3cron: 0 0 9/21 * * * new Env(i茅台) import logging import sysimpor…

​CSS之三

CSS三大特性 CSS 有三个非常重要的三个特性:层圣性、继承性、优先级 层叠性 相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖(层曼)另一个冲突的样式。层曼性主要解决样式冲突的问题 层叠性原则: - 样式冲突&#xff0c;遵循的原则是就近原则&#xff0c;哪个…

C++设计模式创建型模式———简单工厂模式、工厂方法模式、抽象工厂模式

文章目录 一、引言二、简单工厂模式三、工厂方法模式三、抽象工厂模式四、总结 一、引言 创建一个类对象的传统方式是使用关键字new &#xff0c; 因为用 new 创建的类对象是一个堆对象&#xff0c;可以实现多态。工厂模式通过把创建对象的代码包装起来&#xff0c;实现创建对…

python爬虫抓取豆瓣数据教程

环境准备 在开始之前&#xff0c;你需要确保你的Python环境已经安装了以下库&#xff1a; requests&#xff1a;用于发送HTTP请求。BeautifulSoup&#xff1a;用于解析HTML文档。 如果你还没有安装这些库&#xff0c;可以通过以下命令安装&#xff1a; pip install requests…

代码-画图函数示例

热力图 import matplotlib.pyplot as plt import seaborn as sns import numpy as npdef create_heatmap(people, categories, dataNone, title热力图, xlabel类别, ylabel人员,value_range(0.6, 0.95), figsize(10, 6),cmapYlOrRd, decimal_places3):"""创建热…

2024最新Twitter养号全面指南,品牌起号必看!

X (Twitter)作为活跃用户数以亿计的社交媒体平台&#xff0c;用户数依然在不断增长&#xff0c;其中巨大的流量吸引着个人用户与品牌和卖家。 Twitter养号是有必要的&#xff0c;有大量案例表明养好号&#xff0c;可以大幅度降低账号被冻结的几率&#xff0c;并提升账号的稳定…

百度如何打造AI原生研发新范式?

&#x1f449;点击即可下载《百度AI原生研发新范式实践》资料 2024年10月23-25日&#xff0c;2024 NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。本届大会邀请了工业界和学术界的专家&#xff0c;优秀的工程师和产品经理&#xff0c;以及其它行…

基于大语言模型(LLM)自主Agent 智能体综述

近年来,LLM(Large Language Model)取得了显著成功,并显示出了达到人类智能的巨大潜力。基于这种能力,使用LLM作为中央控制器来构建自助Agent,以获得类人决策能力。 Autonomous agents 又被称为智能体、Agent。指能够通过感知周围环境、进行规划以及执行动作来完成既定任务。…

电脑怎么设置开机密码:保障个人信息安全的第一步

在数字化时代&#xff0c;个人信息的安全至关重要。电脑作为我们日常工作和生活中不可或缺的设备&#xff0c;存储了大量的私人数据和敏感信息。为了防止未经授权的访问&#xff0c;设置开机密码是保护个人隐私和信息安全的基本措施之一。本文将详细介绍如何在不同操作系统下为…

分析 std::optional 的使用与常见错误

文章目录 引言常见错误及解决方案1. 错误使用 std::optional 变量进行算术运算2. 错误检查 std::optional 是否有值3. 忽视 std::optional 的默认值 结论 引言 std::optional 是 C17 引入的一个模板类&#xff0c;用于表示可能有也可能没有值的情况。它特别适用于函数返回值&a…

DB-GPT系列(二):DB-GPT部署(镜像一键部署、源码部署)

一、简介 DB-GPT 是一个开源项目&#xff0c;其将大语言模型 LLM 与数据库紧密结合。该项目主要致力于探索如何让预训练的大规模语言模型&#xff08;例如 GPT&#xff09;能够直接与数据库进行交互&#xff0c;从而生成更为准确且信息丰富的回答。 DB-GPT部署后能否直接使用…

Web组件之 Listener (监听器)

文章目录 1.1 Listener概述1.2 Listener快速入门① xml版本② 注解版本 1.3 案例&#xff1a;模拟spring框架 1.1 Listener概述 ​ JavaWeb 中的监听器是监听 ServletContext HttpSession HttpServletRequest 三个数据域对象创建和销毁以及监听数据域对象中数据的变化&#xf…

【论文翻译】IJCAI 2019 | Graph WaveNet:用于深度时空图建模的Graph WaveNet

论文题目Graph WaveNet for Deep Spatial-Temporal Graph Modeling作者团队Zonghan Wu, Shirui Pan, Guodong Long, Jing Jiang, Chengqi Zhang机构澳大利亚悉尼科技大学人工智能中心 (UTS) 和 澳大利亚莫纳什大学发表会议IJCAI 2019论文链接https://www.ijcai.org/proceedings…

Java数组的定义与使用

今天来学习Java数组的定义与使用 目录 1 数组的基本概念1.1 数组的意义1.2 数组的定义1.3 数组的创建及初始化1.3.1 数组的创建1.3.2 数组的初始化 1.4 数组的使用1.4.1 数组中的元素访问1.4.2 遍历数组运行结果运行结果 2 数组是引用类型2.1 初始 JVM 的内存分布2.2 基本类型变…