力扣刷题技巧
迪丽瓦拉
2025-06-01 04:11:03
0

一、数组

数组:数组的存储是连续的

数组只能覆盖不能插入,删除

数组的创建

int arr1[10] //定义一个数组长度是10int arr3[5] = {1,2,3,4,5};//直接创建一个数组int arr2[] = {1,2,3,4};//创建一个数组,不标明长度也行

二、链表

1、单链表最后一个next指向null

2、要改变链表节点的话,一般最后设置一个虚节点,这样便于对头结点进行操作

3、要改变next指针指向,要先消除原先的指向,这样的话就无法访问到之间的一些节点要注意

4、插入节点的时候,先让新节点指向旧节点,要是先让旧节点指向新节点就会先断裂原先的链表

节点的插入

我们需要知道插入位置的前一个节点位置cur,再加上cur->next就把前后节点位置都找到了

  先是新节点指向cur->next

  然后再是cur->next指向新节点

节点的删除

需要两个指针,一个pre指向目标前一个节点,一个cur指针指向要删除的目标节点,然后利用

cur->next访问到要删除的节点的下一个节点

注意:在对next指针进行操作的时候,原先的会断裂

 节点的反转

需要三个指针,一个pre指针指向反转的前一个节点,cur指向要反转的节点,然后设置有一个temp指针指向需要反转的下一个节点,用来使得cur指针移动,因为我们反转之后,无法使用next指针访问到后一个节点 

两两交换节点

在我们修改过程中,指针一直在变。cur->next不一定可以访问到我们要的节点

cur指针两两指向交换的后一个节点

终止条件(cur的后一个或者两个为空,这斗凑不到一对,怎么换)

删除倒数第n个节点间

 快指针先跑n。然后快慢指针一起运行。等块指针指向空,慢指针指向就是倒数第n个节点

环形链表

双指针法

当fast指针一次移动两格,slow一次移动一格,当要是有换的话就会在环中遇到

环的终止条件是(快指针的下一步存在)

怎么找到入口处

从相遇点出发一个指针,从头部出发一个指针,会在入口处相遇

三、哈希表

哈希表的原理就是将key带入哈希函数中,然后就会生成一个数组的索引

哈希表的原理就是快速查找key,在map中 key存放元素,value就随意

哈希表的插入

set

m.insert(x);
unordered_set hash1(nums1.begin(),nums1.end()); //直接在初始化的时候插入整

哈希set会自动去重复元素

map

m.insert(pair(1, 10));
hash[s[i]];表示将将是是s[i]插入哈希表中,默认value就是0

哈希表的遍历

end指针指向表中最后一个元素的下一个地址

set

unordered_set count;
for(auto it=m.begin();it!=m.end();it++)
{int result = *it;   //key}

map

unordered_map count;
for(auto it=m.begin();it!=m.end();it++)
{int front = it->first;   //keyint end = it->second;   //value
}

哈希表的一般用法

判断是否有重复

unordered_set 

存放重复次数(存放其他也行)

unordered_map

哈希表中常用的哈数

find函数,查找哈希表中是否存有这个元素

if(map.find(3) != map.end()) //map中key是否有三,要是没有find函数返回的指针指指向map.end

四、字符串

字符串的创建

string str1 = "this is an example!"; //initial string srting str2; //create an empty string object;

字符串加法,就是字符串拼凑

库函数

s.erase(7,5);//从索引7开始往后删5个s.substr(5,6);//取从索引5开始6个字符reverse(begin(),end());//左闭右开s.find(  ) 字符串查找函数,返回一个下标s.resize(3)   //改变大小
to_string(n) //将整型数字转成字符串stoi(str) //将字符串转成整数

左旋转字符串  

1、新建一个字符串,将两个拼接在一起

2、在原地修改,使用reverse函数,颠三倒四

反转字符串

快指针是找到我们需要的元素,然后赋给慢指针

反转字符串里面的单词

1、删除空格

快慢指针,块指针获取我们需要需要的元素,然后赋值给我买的慢指针

注意我们这样需要手动添加单词之间的空格,

单词一个一个录入,等快指针遍历到空格就一个单词结束,等下轮开始找到一个元素进行开始,我们也在这里添加一个空格

 

2、大反转 使用reverse(s.begin(),s.end())

 

3、单词反转,两个指针交换单词首尾

栈和队列

栈 :提供push 和pop等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代

接口:

push

pop

top

队列:先进先出

que.front()//获取头部元素
que.back()
que.pop()
que.front()        // 取队首元素
que.back()        // 取队尾元素
que.push(x )    // 将元素x入队,从已有元素后面增加元素
que.pop()          // 将队首元素出队
que.size()          // 返回队列的长度(即队列中的元素个数)
que.empty()    // 判断队列是否为空,若为空则返回1,否则返回0

1、用栈实现队列

verctor

容器的创建   

vector a(10); //定义了10个整型元素的向量
a.back(); //返回a的最后一个元素a.front(); //返回a的第一个元素a.empty(); //判断a是否为空,空则返回ture,不空则返回falsea.pop_back(); //删除a向量的最后一个元素a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)

通过遍历器方式读取

int a[6]={1,2,3,4,5,6};
vector b(a,a+4);
for(vector::iterator it=b.begin();it!=b.end();it++)cout<<*it<<" ";

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...