力扣题目训练(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,一经查实,立即删除!

相关文章

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第4章 朴素贝叶斯法

文章目录 第4章 朴素贝叶斯法4.1 朴素贝叶斯法的学习与分类4.1.1 基本方法4.1.2 后验概率最大化的含义4.2 朴素贝叶斯法的参数估计4.2.1 极大似然估计4.2.2 学习与 算法4.2.3 贝叶斯估计代码实践GaussianNB 高斯朴素贝叶斯scikit-learn实例scikit-learn:伯努利模型和多项式模型…

网安渗透攻击作业(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;智能施药机器…

【知识---Linux 有哪些版本】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Ubuntu&#xff1a;Debian&#xff1a;Fedora&#xff1a;CentOS&#xff1a;openSUSE&#xff1a;Arch Linux&#xff1a;Gentoo&#xff1a;Slackware&#x…

docker指令存档

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

LeetCode 刷题总结 【未完待续】

双指针 快慢指针 27. 移除元素 26. 删除有序数组中的重复项左右指针 排序 快速排序 位运算 2859. 计算 K 置位下标对应元素的和

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

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

【Vue3】状态管理工具——pinia的使用

目录 搭建pinia环境 存储数据 组件中使用数据 修改数据 storeToRefs $subscribe pinia相当于vue2中的vuex&#xff0c;pinia也是vue.js状态管理库。 搭建pinia环境 下载 npm install pinia 创建 src/main.js import { createApp } from vue import App from ./App.…

C++ 模拟实现mapset

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

go-zero 全局异常处理-全局中间件

1、在主入口新增 package mainimport ("flag""fmt""go/application/internal/config""go/application/internal/handler""go/application/internal/middleware""go/application/internal/svc"manage "go/pk…

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…

Libcurl的编译

什么是curl curl是常用来请求web服务器的工具&#xff0c;名字意思是客户端&#xff08;Client&#xff09;的URL工具。支持HTTP、HTTPS、rtsp等协议。 curl的作用 在我们的项目中curl主要用在两方面&#xff1a; 云升级&#xff0c;将云服务器上的软件包使用curl的API将软件…