当前位置: 首页 > news >正文

HOT100与剑指Offer

文章目录

  • 前言
  • 一、41. 缺失的第一个正数(HOT100)
  • 二、6. 从尾到头打印链表(剑指Offer)
  • 总结


前言

一个本硕双非的小菜鸡,备战24年秋招,计划刷完hot100和剑指Offer的刷题计划,加油!
根据要求,每一道题都要写出两种以上的解题技巧。

一、41. 缺失的第一个正数(HOT100)

41. 缺失的第一个正数
Note:原地哈希
首先将数组中所有小于等于 0 或大于size 的数修改为 size+1;
遍历数组,开始做标记。如果 ∣x∣∈[1,size],那么给数组中的第 ∣x∣−1 个位置的数添加一个负号。
在遍历完成之后,如果数组中的每一个数都是负数,那么答案是 size +1,否则答案是第一个正数的位置加 1

class Solution {
public:int firstMissingPositive(vector<int>& nums) {int size = nums.size();if (find(nums.begin(), nums.end(), 1) == nums.end())return 1;for (int i = 0; i < size; i++) {if (nums[i] <= 0 || nums[i] > size)nums[i] = 1;}for (int i = 0; i < size; i++) {int num = abs(nums[i]) - 1;nums[num] = -abs(nums[num]);}for (int i = 0; i < size; i++) {if (nums[i] > 0)return i + 1;}return size + 1;}
};

Note:置换解题
我们可以对数组进行一次遍历,对于遍历到的数 x=nums[i],如果 x∈[1,size],我们就知道 x 应当出现在数组中的 x−1 的位置,因此交换 nums[i] 和 nums[x−1],这样 x 就出现在了正确的位置。在完成交换后,新的 nums[i] 可能还在 [1,size]的范围内,我们需要继续进行交换操作,直到 x∉[1,size]。
注意到上面的方法可能会陷入死循环。如果 nums[i]恰好与 nums[x−1] 相等,那么就会无限交换下去。此时nums[i] = x = nums[x−1],说明 x 已经出现在了正确的位置。因此可以跳出循环,开始遍历下一个数。

class Solution {
public:int firstMissingPositive(vector<int>& nums) {int size = nums.size();for (int i = 0; i < size; ++i) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {swap(nums[nums[i] - 1], nums[i]);}}for (int i = 0; i < size; ++i) {if (nums[i] != i + 1) {return i + 1;}}return size + 1;}
};

二、6. 从尾到头打印链表(剑指Offer)

从尾到头打印链表

Note:使用栈作为辅助

class Solution {
public:vector<int> printListReversingly(ListNode* head) {stack<int> stk;ListNode* pNode = head;while (pNode != nullptr) {stk.push(pNode->val);pNode = pNode->next;}int sizes = stk.size();vector<int> res(sizes);for (int i = 0; i < sizes; i++) {res[i] = stk.top();stk.pop();}return res;}
};

Note:翻转数组

class Solution {
public:vector<int> printListReversingly(ListNode* head) {vector<int> res;while (head != nullptr) {res.push_back(head->val);head = head->next;}reverse(res.begin(), res.end());return res;}
};

总结

祝大家都能学有所成,找到一份好工作!

相关文章:

HOT100与剑指Offer

文章目录 前言一、41. 缺失的第一个正数&#xff08;HOT100&#xff09;二、6. 从尾到头打印链表&#xff08;剑指Offer&#xff09;总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划刷完hot100和剑指Offer的刷题计划&#xff0c;加油&#xff01; 根…...

【AI开发】CRAG、Self-RAG、Adaptive-RAG

先放一张基础RAG的流程图 https://blog.langchain.dev/agentic-rag-with-langgraph/ 再放一个CRAG和self-RAG的LangChain官方博客 Corrective RAG(CRAG) 首先需要知道的是CRAG的特色发生在retrieval阶段的最后开始&#xff0c;即当我们获得到了近似的document&#xff08;或者…...

FFmpeg中内存分配和释放相关的源码:av_malloc函数、av_mallocz函数、av_free函数和av_freep函数分析

一、av_malloc函数分析 &#xff08;一&#xff09;av_malloc函数的声明 av_malloc函数的声明放在在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为5.0.3&#xff0c;该ffmpeg在CentOS 7.5上通过10.2.1版本的gcc编译&#xff09;的头文件libavutil/mem.h中&#xff1a;…...

七天进阶elasticsearch[Four]

依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId>...

数据库-数据定义和操纵-DDL语言的使用

创建一个数据库&#xff1a; create database 数据库名; 选择数据库&#xff1a; use 数据库名; 创建表 create table 表名( ); 添加字段&#xff1b; ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER 已存在字段名] ; 删除字段&#xff1a; ALTER TABLE 表…...

黄金价格与美元的关系变了?

在一些传统的定价框架中&#xff0c;现货黄金的价格走势取&#xff0c;决于美元的实际利率水平——实际利率越高&#xff0c;黄金价格越低&#xff0c;反之亦然。在大多数的时候&#xff0c;美元的实际利率决定了美元指数的高低所以人们通常认为&#xff0c;现货金价与美元呈反…...

VB.net与C# 调用InitializeComponent的区别

VB.NET与C# 调用InitializeComponent的区别 在VB.NET和C#中&#xff0c;InitializeComponent 方法的调用方式有所不同。 C#: 在C#中&#xff0c;InitializeComponent 方法通常是在构造函数中显式调用的。它用于初始化窗体和控件的属性。代码示例如下&#xff1a; public pa…...

【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 方法一&#xff1a;数学公式推导法 方法…...

独立游戏之路:Tap篇 -- Unity 集成 TapTap 广告详细步骤

Unity 集成 TapADN 广告详细步骤 前言一、TapTap 广告介绍二、集成 TapTap 广告的步骤2.1 进入广告后台2.2 创建广告计划2.3 选择广告类型三、代码集成3.1 下载SDK3.2 工程配置3.3 源码分享四、常见问题4.1 有展现量没有预估收益 /eCPM 波动大?4.2 新建正式媒体找不到预约游戏…...

设计灵感源泉!7个令人赞叹的网页界面设计展示

网页的界面设计主要是指视觉设计和风格设计。高质量的界面更容易吸引用户的注意力&#xff0c;从而更准确地向用户传达信息。对于设计师来说&#xff0c;他们需要从高质量的作品中获得稳定的灵感&#xff0c;以帮助他们更高效地实现设计目标。在本文中&#xff0c;梳理了7个高质…...

vivado PIN

描述 引脚是基元或层次单元上的逻辑连接点。引脚允许 要抽象掉单元格的内容&#xff0c;并简化逻辑以便于使用。引脚可以 是标量的&#xff0c;包含单个连接&#xff0c;或者可以定义为对多个进行分组的总线引脚 信号在一起。 相关对象 引脚连接到一个单元&#xff0c;并且可以…...

docker部署mysql+nginx+redis

部署mysql 1、拉去镜像 docker search mysql docker pull mysql:5.7 2、运行镜像 docker run -p 3306:3306 --name mysql \ -v /home/mysql/log:/var/log/mysql \ -v /home/mysql/data:/var/lib/mysql \ -v /home/mysql/conf:/etc/mysql/conf.d \ -v /home/mysql/mysql-files…...

python文件操作、文件操作、读写文件、写模式

with读取文件数据内容 with open(filepath,mode,encoding) as file:#具体操作,例如&#xff1a;print(file.read())#查看文件所有的内容。 with&#xff1a;Python中的一个上下文管理器&#xff0c;用于简化资源的管理和释放。它可以用于任意需要进行资源分配和释放的情境…...

【亲测可用】docker进入正在运行的容器

微信公众号&#xff1a;leetcode_algos_life&#xff0c;代码随想随记 小红书&#xff1a;412408155 CSDN&#xff1a;https://blog.csdn.net/woai8339?typeblog &#xff0c;代码随想随记 GitHub: https://github.com/riverind 抖音【暂未开始&#xff0c;计划开始】&#xf…...

线程池吞掉异常的case:源码阅读与解决方法

1. 问题背景 有一天给同事CR&#xff0c;看到一段这样的代码 try {for (param : params) {//并发处理&#xff0c;func无返回值ThreadPool.submit(func(param));} } catch (Exception e) {log.info("func抛异常啦,参数是:{}", param) } 我&#xff1a;你这段代码是…...

基于mysqlbinlog恢复数据

1、把binlog转换为SQL mysqlbinlog --base64-outputdecode-rows -vv /usr/local/mysql/log-bin/mysql-bin.000003 >result.sql find / -name result.sql 2、查看events show binlog events in mysql-bin.000003; 3、回滚到3667那一行的数据 mysqlbinlog -v /usr/local/mys…...

Android_Android Studio 常用快捷键 for mac

功能快捷键运行ctrl R优化importctrl opt O格式化opt cmd L自动修正opt enter自动补齐cmd J自动生成代码cmd N搜索使用到的地方fn opt F7 ( cmd)搜索使用到的地方2shift cmd F搜索类cmd O当前文件搜索cmd F全局搜索按两下 shift搜索文件shift cmd O搜索符号opt…...

[EFI]NUC11电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 英特尔 NUC11DBBi9&#xff08;LPC Controller WM590芯片组&#xff09; 处理器 11th Gen Intel Core i9-11900KB 3.30GHz 八核 已驱动内存32 GB ( 三星 DDR4 3200MHz 16GB x 2 )已驱动硬盘三星 MZVL21T0HCLR-00B00 (1024 GB / 固态硬盘)已驱动显卡AMD R…...

在Ubuntu上配置和设置防火墙UFW

在本文我们学习如何在Ubuntu上配置和设置UFW&#xff08;防火墙&#xff09;&#xff0c;UFW代表“不复杂的防火墙”&#xff0c;它充当IPTABLES的接口&#xff0c;从而简化了防火墙的配置过程&#xff0c;对于防火墙来说&#xff0c;这是非常困难的。初学者学习和配置防火墙规…...

nginx安装环境部署(完整步骤)

在部署nginx前&#xff0c;我们需要进行环境的部署 1.编译工具gcc&#xff0c;g,autoconf&#xff0c;automake &#xff0c;make sudo apt-get install gcc g autoconf automake make 2.依赖库zlib&#xff0c;openssl&#xff0c;pcre 2.1 openssl下载地址 https://www.open…...

Cocos解耦移动和发射模块

目标&#xff1a;玩家受到摇杆A控制移动和方向&#xff0c;发射受到摇杆B负责方向和发射 //玩家模块 ccclass(Player) export class Player extends Component {//玩家速度Speed:number 500;//玩家方向property(Vec3)PlayerDir:Vec3;//虚拟摇杆property(Node)Joystick:Node n…...

从Solidworks到Simulink:避开ADAMS“雷区”的机电联合仿真实践

1. 为什么机电联合仿真总在ADAMS上栽跟头&#xff1f; 第一次用ADAMS做机电联合仿真时&#xff0c;我对着满屏的线框图发呆了半小时——这玩意儿怎么连个像样的实体显示都要手动切换&#xff1f;更崩溃的是&#xff0c;好不容易导入的Solidworks装配体&#xff0c;所有配合关系…...

【故障】解决ssh连接linux卡着不动的问题

1、原因使用xshell连接一台linux机器&#xff0c;发现连接不上&#xff0c;一直都开在连接这个界面&#xff0c;最后超时才停止。2、排查&#xff08;1&#xff09;首先&#xff0c;检查下防火墙或者selinuxsystem status firewalld #检查服务是否处于非Running的状态getenforc…...

Matlab粒子动画:3D爱心生成与动态模拟

1. 从零开始理解Matlab粒子动画 第一次看到3D爱心在屏幕上跳动时&#xff0c;那种震撼感至今难忘。作为理工科学生&#xff0c;我们常常用Matlab处理枯燥的数据&#xff0c;但很少有人知道它还能创作出如此浪漫的视觉效果。这就像用计算器弹钢琴——工具本身没有情感&#xff0…...

MCP 测试文章 1774508531523

这是一篇来自 MCP Server 的测试文章 测试正常工作&#xff01;...

Unity Enter Play Mode Settings 搭配手动Reload全攻略:既保速度又保数据安全

Unity开发效率革命&#xff1a;Enter Play Mode Settings与智能Reload的黄金组合 在Unity项目开发的中后期&#xff0c;随着代码量膨胀和资源规模增长&#xff0c;每次按下Play按钮后的等待时间逐渐成为效率杀手。传统工作流中&#xff0c;脚本修改后的自动Reload机制像一把双刃…...

Wan2.2-I2V-A14B高性能实践:10核CPU+120GB内存协同优化视频推理稳定性

Wan2.2-I2V-A14B高性能实践&#xff1a;10核CPU120GB内存协同优化视频推理稳定性 1. 镜像概述与核心优势 Wan2.2-I2V-A14B是一款专为高性能文生视频任务优化的私有部署镜像&#xff0c;针对RTX 4090D 24GB显存显卡和10核CPU120GB内存配置进行了深度优化。这个镜像解决了视频生…...

避坑指南:CentOS7部署LibreNMS常见错误及解决方案

CentOS7部署LibreNMS避坑实战&#xff1a;从SELinux到数据库权限的深度排错指南 对于网络监控系统的部署&#xff0c;LibreNMS以其开源特性和强大功能成为众多技术团队的首选。但在CentOS7环境下&#xff0c;从系统配置到服务调优的每个环节都可能成为阻碍顺利部署的暗礁。本文…...

桌面歌词工具:LyricsX让Mac音乐体验全面升级

桌面歌词工具&#xff1a;LyricsX让Mac音乐体验全面升级 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 在Mac上享受音乐时&#xff0c;你是否曾因无法显示桌面歌词而感到…...

3个关键技巧彻底解决Photoshop WebP格式兼容性问题

3个关键技巧彻底解决Photoshop WebP格式兼容性问题 【免费下载链接】WebPShop Photoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop 在当今Web开发与设计领域&#xff0c;WebP格式已成为图像优化的黄金标准&am…...