力扣题目训练(1)

2024年1月25日力扣题目训练

  • 2024年1月25日力扣题目训练
    • 225. 用队列实现栈
    • 257. 二叉树的所有路径
    • 258. 各位相加
    • 81. 搜索旋转排序数组 II
    • 82. 删除排序链表中的重复元素 II
    • 30. 串联所有单词的子串

2024年1月25日力扣题目训练

2024年1月25日开始进行编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。

225. 用队列实现栈

链接: 队列实现栈
难度: 简单
题目:
题目描述
运行示例:
运行示例
思路:
栈:先进后出
队列:先进先出
利用两个队列实现栈queue1,queue2,queue1用于存放先存入的数字,queue1与queue2实现栈,queque2先保存新进入的数字,然后再将queue1的数字存入到queue2中,再将queque2与queue1交换即可。
出栈直接从queue1中出栈。
代码:

class MyStack {
public:queue<int> queue1;queue<int> queue2;MyStack() {}void push(int x) {queue2.push(x);while(!queue1.empty()){queue2.push(queue1.front());queue1.pop();}swap(queue1,queue2);}int pop() {int r  = queue1.front();queue1.pop();return r;}int top() {int r  = queue1.front();return r;}bool empty() {return queue1.empty();}
};

257. 二叉树的所有路径

链接: 二叉树
难度: 简单
题目:
题目描述
运行示例:
运行示例
思路:
本质就是二叉树的遍历,用DFS算法即可解决。
代码:

class Solution {
public:void dfs(TreeNode* root, string path, vector<string>& paths){if(root != NULL){path +=to_string(root->val);if(root->left == NULL && root->right == NULL){paths.push_back(path);}else{path += "->";dfs(root->left,path,paths);dfs(root->right,path,paths);}}else{return;}}vector<string> binaryTreePaths(TreeNode* root) {vector<string> paths;dfs(root, "", paths);return paths;}
};

258. 各位相加

链接: 各位相加
难度: 简单
题目:
题目描述
运行示例:
运行示例
思路:
我主要是利用暴力法解决的,官方是数学方法。
在这里插入图片描述
在这里插入图片描述

代码:
暴力法

class Solution {
public:int addDigits(int num) {if(num >= 0 && num <= 9){return num;}long sum = 0;while(num){sum+=num%10;num /= 10;}return addDigits(sum);}
};

数学法

class Solution:def addDigits(self, num: int) -> int:if num==0:return 0if num%9==0:return 9return num%9

81. 搜索旋转排序数组 II

链接: 旋转排序数组
难度: 中等
题目:
题目描述

运行示例:
运行示例
思路:
排序题一般是利用二分法,虽然这个数组是被旋转的但是基本上排序没有变,所以二分法还可以用,这个题中有重复元素,所以应该跳过。
代码:

class Solution {
public:bool search(vector<int>& nums, int target) {int n = nums.size();if (n == 0) {return false;}if (n == 1) {return nums[0] == target;}int begin = 0,end = n - 1;while(begin <= end){int mid = (begin+end)/2;if(nums[mid] == target) return true;if(nums[begin] == nums[mid] && nums[mid] == nums[end]){begin++;end--;}else if(nums[begin] <= nums[mid]){if (nums[begin] <= target && target < nums[mid]) {end = mid - 1;}else{begin = mid + 1;}}else{if(nums[mid] < target && target <= nums[n-1]){begin = mid + 1;}else{end = mid - 1;}  }}return false;}
};

82. 删除排序链表中的重复元素 II

链接: 排序链表
难度: 中等
题目:
题目描述

运行示例:
运行示例
思路:
因为链表已经排序,所以重复的数字是连续的,故一次遍历即可。
代码:

class Solution {
public:ListNode* deleteDuplicates(ListNode* head) {if(!head){return head;}ListNode* p= new ListNode(0, head);ListNode*curr = p;while(curr->next && curr->next->next){if(curr->next->val == curr->next->next->val){int x = curr->next->val;while(curr->next && curr->next->val == x){curr->next = curr->next->next;}}else{curr = curr->next;}}return p->next;}
};

30. 串联所有单词的子串

链接: 单词的子串
难度: 困难
题目:
题目描述
运行示例:

运行示例
思路:
哈希表+滑动窗口

代码:

class Solution {
public:vector<int> findSubstring(string s, vector<string>& words) {int slen = s.size();int wlen = words[0].size();int wnum = words.size();vector<int> ans;//建立哈希表unordered_map<string ,int> hh;for(int i=0;i<wnum; i++){hh[words[i]] = i+1;}//初始化答案数组vector<int> tt(wnum);for(int i=0;i<wnum;i++){tt[hh[words[i]]-1]++;}//分不同截取方式for(int i=0;i<wlen;i++){//记录不同单词数量vector<int> nn(wnum);//开头位置计算for(int j=i; j<wlen*wnum+i; j+=wlen){string st = s.substr(j,wlen);if(hh[st]){nn[hh[st]-1]++;}}if(nn==tt) ans.push_back(i);//滑动窗口 for(int j=i; j<slen-wlen*wnum; j+=wlen){string sm = s.substr(j,wlen);string sp = s.substr(j+wlen*wnum, wlen);if(hh[sm]) nn[hh[sm]-1]--;if(hh[sp]) nn[hh[sp]-1]++;if(nn==tt) ans.push_back(j+wlen);}}return ans;}
};

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

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

相关文章

网安渗透攻击作业(1)

实现负载均衡 第一步&#xff1a;安装依赖 sudo apt insta11 libgd-dev 第二步&#xff1a;下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 第三步&#xff1a;对nginx进行解压 tar -zvxf nginx-1.22.1.tar.g2 第四步&#xff1a;编译安装nginx cd ngi…

通达信动量振荡指标公式(AO),反映市场驱动力的变化

动量振荡指标AO(Awesome Oscillator)衡量的是最近5根K线的动量与过去34根K线的动量对比&#xff0c;反映市场驱动力的变化。 一、动量振荡指标公式&#xff08;副图&#xff09; 动量振荡指标AO计算公式&#xff1a; 1、计算中间价&#xff0c;将最高价和最低价的和除以2&…

浅析HTTP协议

首先&#xff0c;前端请求后端数据&#xff0c;后端响应数据给前端&#xff0c;这是我们大家都知道的&#xff0c;那其中所涉及到的数据传输协议又是什么呢&#xff1f;这个传输规范就是我们大名鼎鼎的HTTP协议&#xff01; 什么是HTTP协议&#xff1f; HTTP&#xff08;超文本…

SqlAlchemy使用教程(六) -- ORM 表间关系的定义与CRUD操作

SqlAlchemy使用教程(一) 原理与环境搭建SqlAlchemy使用教程(二) 入门示例及编程步骤SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用SqlAlchemy使用教程(五) ORM API 编程入门 本章内容&#xff0c;稍微有…

Java链表(1)

&#x1f435;本篇文章将对单链表进行讲解&#xff0c;模拟实现单链表中常见的方法 一、什么是链表 链表是一种逻辑结构上连续而物理结构上不一定连续的线性表&#xff0c;链表由一个一个节点组成&#xff1a; 每一个节点中都由数据域&#xff08;val&#xff09;和指针域&…

实战EDA电子设计自动化经典入门模型VHDL代码编写(含代码解释)上篇--状态机,逻辑设计:Y=AB+C

前言 电子设计自动化&#xff08;EDA&#xff09;&#xff1a; 定义&#xff1a;EDA是用于设计和开发复杂的电子系统&#xff08;如集成电路&#xff09;和印刷电路板的软件工具集合。这些工具通常用于设计电路、进行仿真测试、分析电路行为以及协助制造过程。应用&#xff1a;…

机器人学论文——智能施药机器人调研报告

目录 摘 要 Abstract 第一章&#xff1a;引言 1.1研究背景 1.2 研究意义 1.3文章架构 第二章&#xff1a;智能施药机器人发展现状 2.1引言 2.2 大田智能施药机器人发展现状 2.3 果园智能施药机器人发展现状 2.4 设施农业智能施药机器人发展现状 第三章&#xff1a;智能施药机器…

docker指令存档

目录 Docker 1、概念 2、架构图 3、安装 4、Docker怎么工作的&#xff1f; 5、Docker常用命令 帮助命令 镜像命令 1、查看镜像 2、帮助命令 3、搜索镜像 4、拉取镜像 5、删除镜像 容器命令 1、启动 2、查看运行的容器 3、删除容器 4、启动&停止 其他命令…

大数据数据流分析和处理的工具pig,从入门到精通!

介绍&#xff1a;Pig是一种数据流语言和运行环境&#xff0c;用于处理和分析大数据。 Pig由两个主要部分构成&#xff1a; Pig Latin语言&#xff1a;这是一种用于描述数据流的高级语言&#xff0c;它允许用户以较为简洁的方式编写数据处理和转换任务。 Pig执行环境&#xff1a…

C++ 模拟实现mapset

目录 一、改造红黑树 1、模板T改造节点 2、提取节点中的key 3、迭代器类 operator operator-- 4、改造insert 5、红黑树迭代器 6、 普通迭代器构造const迭代器 二、set 三、map 在stl中map和set的结构中&#xff0c;他们都使用一个红黑树进行封装。 由上图可知&a…

Java 枚举和注解

一、枚举类 把具体的对象一个一个例举出来的类就称为枚举类 枚举对应英文(enumeration, 简写 enum)枚举是一组常量的集合。可以这里理解&#xff1a;枚举属于一种特殊的类&#xff0c;里面只包含一组有限的特定的对象。 1.实现方式1——自定义类实现枚举 public class Enume…

Oracal学习

Oracle是什么 是甲骨文公司的一款支持事务且吞吐量高的数据库特点&#xff1a; &#xff08;1&#xff09;支持多用户、大事务量的事务处理 &#xff08;2&#xff09;数据安全性和完整性控制 &#xff08;3&#xff09;支持分布式数据处理 &#xff08;4&#xff09;可移植性…

【C++】C++入门基础讲解(一)

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 导读 经过一段时间的C语言学习&#xff0c;我们以及基本掌握了C语言的知识&#xff0c;今天&#xff0c;我们就开始学习C&#xff0c;…

2024最新幻兽帕鲁服务器多少钱一个?

幻兽帕鲁服务器多少钱&#xff1f;价格便宜&#xff0c;阿里云4核16G幻兽帕鲁专属服务器32元1个月、66元3个月&#xff0c;4核32G配置113元1个月、339元3个月&#xff1b;腾讯云4核16G14M服务器66元1个月、277元3个月、1584元一年。阿腾云atengyun.com分享阿里云和腾讯云palwor…

SpringBoot的自动装配原理

一、SpringBootConfiguration注解的作用 SpringBootApplication注解是SpringBoot项目的核心注解,加在启动引导类上。点击进去可以发现SpringBootApplication注解是一个组合注解。其中SpringBootConfiguration和EnableAutoConfiguration是由Spring提供的,剩下的注解是由JDK提供的…

简单计算与模拟1:鸡兔同笼(POJ 3237)

1 问题描述 图1 问题描述 2 解题思路 鸡有两只脚&#xff0c;兔子有四只脚&#xff0c;且输入数据可能为奇数&#xff0c;使用公式计算即可。 3 设计代码 #include <cstdio> int main() {int nCases, nFeets;while (scanf("%d", &nCases) ! EOF){for (in…

负载均衡-Ribbon-自定义负载均衡算法

1.Ribbon 是什么 SpringCloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具主要功能是提供客户端的软件负载均衡算法&#xff0c;将 Netflix 的中间服务处连接在一起Ribbon的客户端组件提供一系列完整的配置项&#xff0c;如&#xff1a;连接超时、重试等。简…

echarts 绘制垂直滚动热力图

问题1&#xff1a;提示功能无效 问题2&#xff1a;值筛选无效 效果 在线浏览 下载echarts官网例子(heatmap Examples - Apache ECharts) 稍作改动&#xff1a; generateData 入参改为长度和宽度noise.perlin2(i / 40, j / 20) Math.random() * 5y轴倒置指定zlevel为2 通过定…

蓝桥杯备战——7.DS18B20温度传感器

1.分析原理图 通过上图我们可以看到DS18B20通过单总线接到了单片机的P14上。 2.查阅DS18B20使用手册 比赛的时候是会提供DS18B20单总线通讯协议的代码&#xff0c;但是没有提供读取温度数据的代码&#xff0c;所以还是需要我们去查看手册&#xff0c;我只把重要部分截下来了 …

python-自动篇-运维-根据计算机硬盘、主板、CPU生成注册信息

文章目录 准备代码效果 准备 本实例需要使用WMI模块&#xff0c;所以需要安装WMI模块。在安装WMI模块之前&#xff0c;先要安装pywin32模块&#xff0c;WMI模块需要win32api的支持。使用pip安装pywin32模块和WMI模块的代码如下&#xff1a; pip install win32com pip install …