面试算法题

1

使用栈实现队列

#include <iostream>
#include <stack>
class MyQueue
{
public:MyQueue() {}void push(int x){in.push(x); // 直接将元素push入in栈}int pop(){int data = peek(); // 先查一遍,就是更新一遍out栈out.pop();return data;}// 查找队列头的元素int peek(){// 首先检查out栈是否为空,如果为空,则将in栈的元素出栈然后入栈outif (out.empty())// 这里刚开始写成当in为空时执行循环了,就会出错while (!in.empty()) // 必须全部将in栈的数据搬到out栈,不然会导致数据混乱{out.push(in.top());in.pop();}return out.top();}bool empty(){return in.empty() && out.empty();}private:std::stack<int> in;std::stack<int> out;
};int main()
{MyQueue que;que.push(1);que.push(2);que.push(3);que.push(4);que.push(2);std::cout << que.pop() << std::endl;std::cout << que.pop() << std::endl;std::cout << que.pop() << std::endl;std::cout << que.pop() << std::endl;std::cout << que.pop() << std::endl;return 0;
}

2

输入一个数组,找到任意一个峰值元素返回其位置,时间复杂度为O(logN)。

#include <iostream>
#include <vector>
/* 输入一个数组,找到任意一个峰值元素(大于其最近左边和右边的元素),返回其位置,时间复杂度是O(logN) */int peak_Index(std::vector<int> &data)
{int left = 0;int right = data.size() - 1;while (left < right){int mid = left + (right - left) / 2;if (data[mid] > data[mid + 1]) // 比右边的数大,那就在mid左边right = mid;               // mid有可能是峰值元素else                           // 比右边数小,那就在mid右边left = mid + 1;            // mid不可能是峰值元素}return left;
}int main()
{std::vector<int> data = {1, 2, 3, 1};std::cout << peak_Index(data) << std::endl;return 0;
}

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

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

相关文章

吴恩达ChatGPT《LangChain Chat with Your Data》笔记

文章目录 1. Introduction2. Document Loading2.1 Retrieval Augmented Generation&#xff08;RAG&#xff09;2.2 Load PDFs2.3 Load YouTube2.4 Load URLs2.5 Load Notion 3. Document Splitting3.1 Splitter Flow3.2 Character Splitter3.3 Token Splitter3.4 Markdown Spl…

数据库技术的基本概念、原理、方法和技术

一、基本概念 1. DB&#xff1a;数据库&#xff0c;保存一组有组织的数据的容器&#xff1b; 2. DBMS: 数据库管理系统&#xff0c;又称为数据库软件&#xff08;数据库产品)&#xff0c;用于管理DB中的数据&#xff1b; 3. SQL: 结构化查询语言&#xff0c;用于和DBMS通信的…

Ubuntu-解决包依赖关系

Ubuntu-解决包依赖关系的办法 安装软件包的时候&#xff0c;有时会遇到类似下图的依赖问题&#xff0c;无法正常安装&#xff0c;下面提供三种方法解决依赖问题。 1.可以尝试用下面方法处理依赖问题&#xff0c;紧跟前一条安装命令后面输入下面命令&#xff0c;然后再执行安装…

数据结构:计数排序(详解)

思路详解&#xff1a; 1 找到数组中的最大值、最小值 2 开辟一个统计每个数据出现次数的数组&#xff08;总个数是最大值-最小值1&#xff0c;因为下标范围是0~最大值-最小值&#xff0c;闭区间统计个数要1&#xff09; 3 遇到一个元素&#xff0c;在此元素-最小值作为下标的…

TSN -促进IT/OT 融合的网络技术

时间敏感网络&#xff08;tsn&#xff09;技术是IT/OT 融合的一项关键的基础网络技术&#xff0c;它实现了在一个异构网络中&#xff0c;实现OT的实时数据和IT系统的交互数据的带宽共享。 TSN允许将经典的高确定性现场总线系统和IT应用&#xff08;如大数据传输&#xff09;的功…

java 页面html常用写法总结

​(注意&#xff1a;本文章默认base html中已经引入bootstrap.min.css、style.css等css样式) input &#xff1a;输入标签 <#input required"必填" id"cycle" name"周期" underline"true" style"width:75%" itype&quo…

找第三大的数

给你一个非空数组&#xff0c;返回此数组中 第三大的数 。如果不存在&#xff0c;则返回数组中最大的数。 示例 1&#xff1a; 输入&#xff1a;[3, 2, 1] 输出&#xff1a;1 解释&#xff1a;第三大的数是 1 。 示例 2&#xff1a; 输入&#xff1a;[1, 2] 输出&#xff1…

了解 3DS MAX 3D摄像机跟踪设置:第 2 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 转到合成>新合成以创建新合成。 将“宽度”和“高度”值分别设置为 1280 和 720。将帧速率设置为 25&#xff0c;将持续时间设置为 12 秒。单…

windows系统安装指定的vue/cli、node和npm;vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题

文章目录 前言一、安装vue/cli脚手架1.安装指定版本脚手架&#xff0c;我是用的3.12.0版本2.查看版本是否安装成功&#xff0c;成功有版本号2.1问题&#xff1a;安装失败2.2解决方案2.3 安装成功 二、安装指定node和npm1.为什么需要安装指定node和npm版本&#xff0c;同时匹配v…

脑电信号处理与特征提取——2.脑电的神经起源与测量(夏晓磊)

目录 二、脑电的神经起源与测量 2.1 脑电的神经起源 2.2 脑电的测量 二、脑电的神经起源与测量 2.1 脑电的神经起源 脑电起源于大脑皮层大量神经元的同步突触活动&#xff0c;主要贡献来自锥体细胞。 静息电位&#xff1a;内负外正&#xff0c;K内流。 动作电位&…

elementui plus 图标循环加载

今天在学习vue3时&#xff0c;在用Element Plus布局页面时&#xff0c;遇到了一个图标循环加载的问题。开始不知道如何渲染图标&#xff0c;以为像ElementUI 一样可以通过class进行渲染图标&#xff0c;发现无法使用&#xff0c;让后我发现引用的图标是组件&#xff0c;组件的话…

V1.4基站仓储三代标签操作指导

一、管理系统使用 1、启动v1.4基站 插上电源&#xff0c;用网线连接基站和电脑。基站默认ip为192.168.1.200&#xff0c;所以需要修改电脑的IP地址为192.168.1.x&#xff0c;例如&#xff1a;192.168.1.100 ​ 注&#xff1a;当基站第二个灯&#xff08;绿色&#xff09;闪烁…

Leetcode 111. 二叉树的最小深度

题目描述 题目链接&#xff1a;https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 思路 DFS 代码实现 class Solution {public int minDepth(TreeNode root) {return Depth(root);}public int Depth(TreeNode root){if(rootnull){return 0;}int lef…

云安全攻防(一)之 云原生

前言 随着公有云和私有云的广泛部署&#xff0c;云计算基础设施成为企业部署新业务的首选。可以说&#xff0c;云计算已进入下半场&#xff0c;各大云计算服务商的厮杀日益激烈&#xff0c;新的概念也不断的层出不穷。近年来&#xff0c;云原生安全&#xff08;Cloud Native C…

数据结构之Queue的实现

Queue支持的方法 方法名参数功能返回Sizevoid返回链表规模(该方法由List< T>派生而来)emptyvoid返回链表是否为空(该方法由List< T>派生而来)frontvoid返回队首数据域的引用enqueueT const & e入队voiddequeuevoid出队出队的对象 code // Queue.h # pragma …

赛多利斯Sartorius天平java后端对接

业务场景 要将赛多利斯天平的数据读出来解析并且显示到对应的数字框,支持一台设备连接多种精度的天平 后端实现 通过协议解析数据,然后将数据存储 详细代码就不贴了,感兴趣的可以私聊我

oracle报错:ORA-10997,ORA-09967解决

报错信息&#xff1a; ORA-10997: another startup/shutdown operation of this instance inprogress ORA-09967: unable to create or open lock file Linux-x86_64 Error: 13: Permission denied 权限问题&#xff0c;修改Oracle目录权限 chown -R oracle:dba /home/tmn/sof…

Jupyter 安装、简单操作及工作路径更换

一、Jupyter下载安装 pip install jupyterAnaconda是Python另一个非常流行的发行版&#xff0c;它之后有着自己的叫做“conda”的安装工具。用户可以使用它来安装很多第三方包。然而&#xff0c;Anaconda会预装很多包&#xff0c;包括了Jupyter Notebook,所以若已经安装了Anac…

创建Electron项目

一、使用vite 构建 electron项目 npm init vitelatest Need to install the following packages:create-vitelatest Ok to proceed? (y) y √ Project name: ... CertificateDownload √ Package name: ... certificatedownload √ Select a framework: Vue √ Select a var…

C# 用于模拟web表单提交,解析返回的json数据

以下是一个示例的实现代码&#xff0c;用于模拟web表单提交&#xff0c;解析返回的json数据&#xff0c;并在DataGridView中展示数据&#xff1a; csharp using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Windows.Fo…