自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 滑动窗口,438找出字符串中所有字母的异位词

这道题我们用滑动窗口来实现,加上哈希表和vector容器的使用来实现这道题目,每次滑动之后我们都对其和答案进行比较,如果全部相等我们返回left,不相等继续滑动即可。本质就是我们把p中相同数量的字母框起来,然后依次向s中向右滑动,每滑动一次我们都保证了滑动窗口中字母的数量和p中的相等,每次滑动之后我们都对窗口中的字母和p中存储在哈希表中的进行对比。相等返回left,不相等继续向右滑动,知道right出窗口结束滑动。

2025-06-26 18:02:08 339

原创 347. 前 K 个高频元素

题目让我们找到出现频率最高的前k个数字我们用2个map来实现,第一个map存每个元素和元素出现的次数,这个map按元素大小排序,我们想让它按元素个数排序,我们再来个map,将第一个mapkey-value倒着插入即可。细节问题:为了防止有些元素出现次数相同,我们需要使用umultimap。

2025-06-26 18:01:42 207

原创 692. 前K个高频单词(map的练习)

这道题锻炼我们对于map的接口使用,熟练的使用map的接口使我们解题的关键。

2025-06-26 10:42:50 358

原创 169. 多数元素

题目让我们找出出现次数大于n/2次数的元素个数,只需要遍历一遍数组统计每个数字出现的次数即可。

2025-06-26 10:42:35 321

原创 滑动窗口209. 长度最小的子数组

给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组[4,3]是该条件下的长度最小的子数组。10。

2025-06-21 22:01:38 222

原创 75. 颜色分类

我们用map,来计算每个颜色出现的次数,然后再开一个数组进行一次插入即可。对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。必须在不使用库内置的 sort 函数的情况下解决这个问题。这道题让我们来进行红白蓝的颜色归类。给定一个包含红色、白色和蓝色、共。分别表示红色、白色和蓝色。

2025-06-21 22:01:16 381

原创 238除自身以外数组的乘积

所以我们开始优化,前缀和可以试一下,创建arr1数组先求前缀之积,第一位特殊处理为1,直接遍历一遍数组,求该数组的除该数之外的乘积,但是超时时间复杂度为n方。创建arr2数组求后缀之积,最后一位特殊处理。有了前缀之积和后缀之积,进行遍历。

2025-06-20 13:00:04 400

原创 利用栈实现逆波兰表达式

摘要:本文介绍了一种使用栈结构实现逆波兰表达式计算的方法。算法遍历输入字符串,遇到数字则转换为整数入栈,遇到运算符则弹出栈顶两个元素进行相应运算并将结果入栈。通过stoi函数实现字符串到整数的转换,最终栈中剩余的唯一数字即为运算结果。该方法有效地解决了逆波兰表达式的求值问题,时间复杂度为O(n)。

2025-06-20 12:59:47 359

原创 论写博客的重要性

在这个信息过载的时代,写博客是一种难得的“深度学习”。它强迫我们停下匆忙的脚步,把输入转化为输出,把知识沉淀为智慧。不妨从今天开始,用文字雕刻你的成长轨迹——因为真正的学习,永远发生在“输入”与“输出”的闭环之中。

2025-06-19 21:48:32 471

原创 215. 数组中的第K个最大元素

摘要:本文介绍了寻找数组中第k个最大元素的算法。通过先对数组进行排序,再直接返回倒数第k个元素即可实现。代码示例展示了使用C++标准库sort函数排序后获取目标值的简洁实现方式,时间复杂度取决于排序算法。该方法直观高效,适用于解决类似问题。

2025-06-19 21:26:18 372

原创 20. 有效的括号

摘要: LeetCode题目"有效的括号"要求判断括号是否匹配。使用栈结构处理,左括号入栈,右括号与栈顶匹配。需注意空栈情况(如"}{")和最终栈是否清空。代码实现中,遍历字符串时检查括号匹配,若发现不匹配或栈空时立即返回false;最终栈空则返回true。时间复杂度O(n),空间复杂度O(n)。 (字数:100)

2025-06-19 21:25:30 341

原创 位图入门算法191. 位1的个数

这道题让我们找出一个数字中二进制中1的个数,这个题目我们就用1的&来解决,最后一位有0为0,都是1才是1,我们只需要判断32次即可。

2025-06-18 18:18:35 457

原创 338比特位技术

这个题也是让我们找到每个1的个数,也是和上一题找到二进制位1的个数思路大体类似,让n和1去&,每次&之后判断是否为1,然后让n>>1,就这样我们判断32次,每次判断后的结果存入vecotr即可。

2025-06-18 18:18:18 282

原创 136只出现一次的数字

这道题我们要知道^是不进位的相加,如果都为1,加之后为0,都为0加之后为0,一个为1一个为0,加之后为1,所以我们两个相同的数字^之后结果一定是0的。这个前提是我们的^是不受运算顺序约束的,这个根据我们相加是不进位的,我们就很容易理解,它的运算结果不受运算顺序的影响。那么我们就这样把给定的数组中的数每个都^一下,最后的结果就是我们要求的只出现一次的数字。

2025-06-17 22:27:13 199

原创 461汉明距离

这道题让我们找二进制位不同的个数,这个就要利用到^,这个运算符是相同为0,相异为1,不进位的相加,我们直接让2个数^,然后如果两个对应的二进制位为0就是相同,为1就不痛,找到^之后的二进制1的个数即可。

2025-06-17 22:24:08 242

原创 双数之和+三数之和+四数之和

我们只需要利用双指针算法就可以计算排序之后的双数之和。排序用库中自带的sort函数。双指针算法利用下标访问。用int和下标访问代替指针更为直观。还需要考虑去重的操作。即left++之后,nums[left]==nums[left-1]还需要left++;

2025-06-17 12:42:30 229

原创 JZ31 栈的压入、弹出序列

题目是让我们判断是否可以完成这个pop。可以返回true不可以返回false。

2025-06-17 12:41:53 169

原创 hot100 128. 最长连续序列

分析题目,我们要找到连续最长子序列,这就需要我们先进行排序,根据实例3我们知道连续的序列可以有重复的数字,我们还要做到去重,然后再去判断。这道题来自于hot100,我们这道题主要利用哈希表来解决因为哈希表解决了去重问题和排序问题。我们先遍历数组把nums的元素全部放入set中,我们就解决了去重和排序的问题。然后定义一个count放入vecotor中,最后取最大的元素即可。

2025-06-16 21:30:37 263

原创 盛水最多的容器

体积v=h*w,先拿一段出来举例,先计算出一个体积,这时,根据木桶效应,它的高度应该是最低的,所以我们让6的指针向右走,它的宽度在减小,如果指针指向的值比4大,它的高度仍然是4,如果比4小,它的高度还要减小,当h和w同时减小时,v减小。所以我们不必再比较后续的。本题有两种解法,一种是暴力解法,直接暴力枚举出所有的体积比较出最大的即可,但是时间复杂度达到n方。超出了限制,另一种解法就是利用单调性解法,我们着重介绍一下单调性解法。

2025-06-16 12:05:57 183

原创 电话字母的组合暴力解法

然后写循环创建一个string类型的对象,将ab等一个元素放到我们的返回vector<string>中,这里要注意由于vector<string>和string的类型不一样,我们不能用相加,所以我们用尾插。我们这道题的思路借用了杨辉三角的思路我们先创建一个vector<vector<string>>把23456789对应的字母一个一个存进去,为了方便用下标访问,我们创建10个空间大小,让2直接对于abc,3直接对于def,我们这样写直接利用下标来索引到元素。

2025-06-16 12:05:43 206

原创 只出现一次的数字

这个题目动了点脑筋,由于它们时无序的,所以我们如果去找的话比较费劲,可能要循环嵌套再嵌套,所以我们先利用库中自带的sort函数进行排序,把这些数从小到大以此排列,然后我们进行判断哪个数出现了一次即可。这里只要注意会有只有一个元素的vector要单另出来进行判断。还有再vector末尾的元素也要单另出来进行判断。此外我们进行普遍操作即可。如果一个数只出现一次,那么该数的前一个数和后一个数都应该与其不同。

2025-06-16 12:05:33 149

原创 算法练习篇目:删除有序数组中的重复项

由于题目是非严格递增数组,这个我们可以利用库中自带的函数erase来进行操作,如果连续两个字符相等你就删除一个。进行循环知道删除完毕。

2025-06-16 12:04:26 213

原创 vector算法练习

创建vector<vector<int>>,进行创建构造。vector访问单个元素类似于二维数组,但是它们原理不同,vector是进行两次函数调用,二维数组是进行两次解引用。//改变空间大小加上初始化。

2025-06-16 12:04:15 192

原创 155.最小栈

题目是让我们设计一个栈,它于STL库中栈的区别是支持检索到了最小元素的栈但是需要时间复杂度为常数,我们很容易想到的是记录最小值。但是如果中途删除的话最小值可能失效,所以我们选择用2个栈来实现。

2025-06-16 12:04:03 171

原创 字符串相加和字符串相乘

本题是通过先计算长数与短数的分别相乘来实现,如果相等的话就一样进行。通过string类来实现大数相加,个位相加进十位,十位相加进百位。通过不断相加和进位来实现大数相加。然后利用相加进行即可,低位要补0。

2025-06-16 12:03:43 554

原创 算法反转字符串

本题利用STL库里自带的string类反转即可。

2025-06-16 12:03:29 169

原创 hot100滑动窗口无重复字符串

摘要:本文介绍了寻找字符串中无重复字符的最长子串的两种解法。暴力解法通过枚举所有子串并使用哈希表检查重复字符,但效率较低导致超时。更优的滑动窗口解法使用双指针和哈希表记录字符频率,当发现重复字符时移动左指针,并在遍历过程中维护最大长度。文末给出了滑动窗口的具体实现代码,解决了边界条件下长度计算的问题。该方法有效降低了时间复杂度,从暴力解法的O(n²)优化至O(n)。

2025-06-15 23:17:01 185

原创 C++学习内存管理

本文介绍了C++中内存管理的核心概念和操作。主要内容包括:1) 内存区域划分:栈(局部变量)、堆(动态内存)、静态区(全局/静态变量)和常量区(只读数据);2) new/delete操作:基本用法、自定义类型处理及底层operator new/delete实现原理;3) 定位new表达式用于在已分配内存上初始化对象;4) malloc与new的六大区别:操作符/函数、初始化、类型处理、返回值及构造函数调用等。文章重点对比了不同内存区域的特点和管理方式,详细说明了动态内存分配的相关操作及其实现机制。

2025-06-15 23:11:45 717

原创 C++学习类和对象

本文摘要: C++中的static修饰使成员变量/函数属于类而非对象,需在类外初始化。友元机制突破封装限制,允许外部函数/类访问私有成员,但会增加耦合度。内部类是定义在另一个类内部的独立类,默认成为外部类的友元。匿名对象无需命名,生命周期仅限当前行,适合单次调用场景。编译器会对对象拷贝进行优化,减少不必要的构造步骤。这些特性提供了灵活的编程方式,但需合理使用以保持代码质量。

2025-06-15 23:11:33 508

原创 C++学习STL,stringLEI

摘要:本文介绍了C++编程中的几个核心概念。1) STL是C++标准库的重要部分,包含六大组件:仿函数、算法、迭代器、空间配置器、容器和配接器。2) string类解决了C语言字符串操作不便的问题,使用时需包含相应头文件。3) auto关键字用于自动类型推导,声明引用时必须加&。4) C++11的范围for循环简化了集合遍历,底层实现基于迭代器,可自动完成取数据和结束判断。这些特性共同提升了C++编程的效率和安全性。

2025-06-15 23:11:16 395

原创 C++学习STL库string模拟实现

库里面给了string的使用方法。我们来简单的模拟实现几个常用的类来加深理解。实现了==的运算符重载,我们可以利用!来实现不相等的判断。由于设计资源的释放,所以我们要写析构函数进行释放。如果是加上&的话,其实是返回_size的别名。利用列表来初始化string类。那么我们同时也就实现了<=

2025-06-15 23:11:06 254

原创 C++11特性

摘要: C++11引入多项重要特性,包括统一初始化方式(使用{}初始化内置/自定义类型)、std::initializer_list简化容器初始化,以及核心的右值引用机制。右值引用通过区分左值(持久、可取址)和右值(临时、不可取址),实现移动语义(移动构造/赋值),避免深拷贝,提升效率。此外,引用折叠规则(如T&&的万能引用)和完美转发(forward保持参数原属性)优化了模板编程。这些改进使C++11在资源管理、性能优化和代码简洁性上显著增强,为后续标准(如C++14/17)奠定基础。

2025-06-15 23:10:53 736

原创 C++11新特性(2)

C++11可变参数模板与emplace接口优化解析 摘要: 本文深入分析了C++11中的可变参数模板和emplace接口优化技术。主要内容包括:1)可变参数模板的实现原理,通过参数包(Args...)支持可变数量参数,使用sizeof...计算参数个数,并通过递归模板实现参数包扩展;2)emplace系列接口的高效性分析,相比传统push/insert能直接在容器内构造对象,避免了临时对象的拷贝/移动开销;3)验证了emplace在不同场景下的效率差异,当传递构造参数而非完整对象时效率最优;4)介绍了C++

2025-06-15 23:10:43 979

原创 C++11新特性lambda的使用详解

摘要:本文介绍了C++11中lambda表达式的使用与原理。lambda本质是匿名函数对象,语法为[](){},包含捕捉列表、参数列表和函数体。捕捉列表支持传值和传引用两种方式,还可混合使用。lambda通过捕捉上下文变量突破作用域限制,传值捕捉默认const,需mutable修改。其底层实现为仿函数类,编译器自动生成带独特类名的对象。lambda简化了可调用对象定义,在排序、线程等场景有广泛应用。通过汇编分析可见,lambda调用实际转换为仿函数operator()的调用,捕捉变量作为成员处理。

2025-06-15 23:10:18 1048

原创 C++11新特性包装器

C++11的function包装器与逆波兰表达式求值 摘要:本文介绍了C++11中的function包装器,它能统一封装函数指针、仿函数和lambda等可调用对象,通过示例展示了其使用方法。同时演示了如何利用function和lambda简化逆波兰表达式求值的实现,将运算符处理从传统的条件判断改为基于map的映射方式,使代码更简洁高效。function的本质是将不同类型的可调用对象包装成统一调用形式,而实际调用的仍是原函数,这在泛型编程中非常实用。

2025-06-15 23:10:02 1086

原创 C++11异常特性

在学习了C++11的诸多新特性之后我们也到了C++11新特性学习的尾声,异常,我们从介绍概念+举例子来熟悉异常。目录1.写在前面2.异常的概念3.异常的抛出与捕获4.栈展开5.查找匹配的处理代码6.异常的重新抛出7.异常安全问题8.异常的规范总说:异常就是运行时出现问题作出相应处理。而不是让程序崩溃掉,可以这么说原来我们代码出现数组越界等错误会直接崩掉,但是用异常捕获就不会崩掉,而是抛出异常,这样应用在日常中。当程序运行中发生意外错误时,通过 和 机制优雅地处理错误,而不是让程序崩溃。​异常处理机制允许

2025-06-15 23:09:51 1031

原创 C++11智能指针

学完了继承多态,二叉搜索树,map和set,AVL树,红黑树,红黑树的封装,哈希表的底层,C++11新特性,异常,现在我们也迎来了C++的学习的一个尾声智能指针。目录1.写在前面2.智能指针3.C++标准库智能指针的应用4.智能指针的原理shared_ptr实现代码。

2025-06-15 23:09:39 899

原创 c++11智能指针

目录1.写在前面2.shared_ptr的循环引用问题3.weak_ptr介绍4.shared_ptr的线程安全问题5.C++11和Boost的关系6.内存泄漏7.如何检测内存泄漏8.如何避免内存泄漏上一节介绍智能指针的博客中,我们给出了智能指针实际是把资源委托给对象去管理的一种思想,让对象根据资源的生命周期自动调析构函数来释放资源,然后c++98设计的智能指针它支持拷贝但是它设计思想非常糟糕,因为它的拷贝是资源管理权的转移,可能造成对象的资源悬空,所以被抛弃掉,C++11又在此基础上给出了更好的智能指针解

2025-06-15 23:09:18 763

原创 Linux梦开始的地方

摘要:本文首先介绍了Linux学习的主要模块(系统基础、网络、MySQL等),强调其命令行操作特性。随后回顾了计算机与Linux的发展历史:从ENIAC诞生到IBM与苹果的分歧,微软选择软件路线,Unix系统的演进,直至1991年林纳斯·托瓦兹开源Linux。文章对比了Linux与Windows的特性(开源优势体现在效率、稳定性和安全性),解释了开源社区的维护机制,并列举了Ubuntu、CentOS等衍生版本。最后指出Linux在安卓及企业后端等领域的广泛应用,展现了其技术生命力。(149字)

2025-06-15 23:09:05 669

原创 Linux下基本指令的介绍

我们介绍了pwd,ls,mkdir,clear,touch,rm等的操作和细节,我们类比windows系统来理解可以快速入门,下面补一下clear的实例。

2025-06-15 23:08:52 1191

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除