草庐IT

leetcode刷题之回文链表

全部标签

2024王道数据结构第二章链表第10题

/*题目:将一个带头结点的单链表A分解为两个带头节点的单链表A和B,使得A表中含有原表中序号为奇数的元素,而B表中含有序号为偶数的元素,且保持相对顺序不变。出自:王道p38.10*///思路:准备A、B两链表的头结点,然后让工作指针p指向原来A链表的next(遍历),p不空时,每次摘下一个尾插到A,再摘下一个尾插到B。//宏定义#defineElemTypeint//单链表定义typedefstructLNode{ElemTypeval;structLNode*next;}*LinkList,LNode;[注]上述宏定义和结构体定义是答题时要写的答案,并不是代码实现时的定义,代码实现稍有不同,

【Leetcode刷题(数据结构)】:三路划分与三数随机取中的思想实现快速排序的再优化

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止//假设按照升序对array数组中[left,right)区间中的元素进行排序voidQuickSort(intarray[],intleft,intright){if(right-left1)return;//按照基准值对array数组的[left,right)区间中的元素进行划分intdiv=partion

代码随想录Day36 动态规划05 LeetCode T1049最后一块石头的重量II T494 目标和 T474 一和零

前言:动规五部曲理论基础 : 代码随想录Day34LeetCodeT343整数拆分T96不同的二叉搜索树-CSDN博客1.明白dp数组的含义2.明白递推公式的含义3.初始化dp数组4.注意dp数组的遍历顺序5.打印dp数组排错LeetCodeT1049最后一块石头的重量II题目链接:1049.最后一块石头的重量II-力扣(LeetCode)题目思路:这题我们仍然采用动规五部曲来写,这题和昨天的那一道分割等和子集类似,我们先对数组求和得到sum,然后取其的一半+1作为dp数组的大小,最后我们只需要求得sum/2作为容量的背包能装的最大容量,用sum减去两倍的dp[sum/2]即可,有人问为什么这

Leetcode循环队列(数组实现及链表实现)

这道题十分考验我们对队列的理解。文章目录队列的介绍队列的实现进入正题数组的方法链表实现队列的介绍 队列是一种只允许在一段进行插入,在另一端进行删除的数据操作的特殊线性结构,,因此决定了他具有先入先出的特点,其中进行插入操作的一段叫做队尾,出队列的一端叫做队头。队列的实现 队列可以使用链表或者数组进行实现,对于这两种实现方法,使用链表实现效果更好一点,两个指针中front为链表的头,即队列的队头,出数据的话只需要找到front的下一个假设为pre,将front销毁,front置为pre即可,如果是用数组的结构的话,出队列在数组头上出数据,效率会很低。链表实现队列代码如下Queue.h#pragm

LeetCode 热题 HOT 100

🔥LeetCode热题HOT1001.两数之和(简单-哈希表)√√classSolution{public:vectortwoSum(vector&nums,inttarget){unordered_mapumap;for(inti=0;i2.两数相加(中等-模拟题-数学)√√重点是当有一个链表为空了不单独处理,按节点为0处理。classSolution{public:ListNode*addTwoNumbers(ListNode*l1,ListNode*l2){ ListNode*preHead=newListNode(-1),*r=preHead; intflag=0; whi

LEEDCODE 707设计链表

classMyLinkedList{public:structListNode{intval;ListNode*next;ListNode(intval):val(val),next(nullptr){}};MyLinkedList(){_dummyhead=newListNode(0);_size=0;}intget(intindex){if(index>=0&&index_size){ListNode*cur=_dummyhead->next;for(inti=0;iindex;i++){cur=cur->next;}returncur->val;}elsereturn-1;}voidad

(LeetCode)使用Vscode编译运行和调试C/C++及体验优化

一、安装visualstdiocode1、首先在微软官网下载并安装好visualstdiocode2、因为vscode只是一个代码编辑器,没有自带有C/C++的编译器,因此首先需要安装一个C/C++编译器并且设置环境变量,这里使用mingw-w64。二、安装mingw-w64 因为网络问题mingw-w64很难下载,建议先离线下载然后手动添加环境变量 离线版下载地址:Downloadx86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z(MinGW-w64-for32and64bitWindows)1.下载后选一个合适的位置解压,解压后的文件结构如下: 2.

关于链表的建立与操作(c++实现)

关于链表的建立与操作目录1.链表的定义2.单链表的基本操作3.循环链表及其操作4.双向链表及其操作5.用数组模拟链表一、链表的定义因为线性表是静态线性的存储结构,所以为了方便动态地对数据进行处理,我们引入链表这一数据结构。因为链表是动态的存储结构,所以存储在其中的数据地址不一定是连续的。因此在创建链表时不仅需要保存数据本身,还需保存它的地址。所以我们就用一个结构体来存储链表的结点。其中每个结点都要包含两个领域,分别是数据域和指针域,用于存储数据和存储下一个结点的地址。typedefstructnode{intdata;//这里的data可以是任意数据类型structnode*link;}LNo

学习笔记---更进一步的双向链表专题~~

目录1. 双向链表的结构🦊2. 实现双向链表🐝2.1要实现的目标🎯2.2创建+初始化🦋2.2.1List.h2.2.2List.c2.2.3test.c2.2.4代码测试运行2.3尾插+打印+头插🪼思路分析2.3.1List.h2.3.2List.c2.3.3test.c2.3.4代码测试运行2.4尾删+头删🐊2.4.0思路分析2.4.1List.h2.4.2List.c2.4.3test.c2.4.4代码测试运行2.5查找数据+pos节点后插入+删除pos节点🦩2.5.0思路分析2.5.1List.h2.5.2List.c2.5.3test.c2.5.4代码测试运行2.6销毁☄️2.6.0思

算法leetcode|86. 分隔链表(rust重拳出击)

文章目录86.分隔链表:样例1:样例2:提示:分析:题解:rust:go:c++:python:java:86.分隔链表:给你一个链表的头节点head和一个特定值x,请你对链表进行分隔,使得所有小于x的节点都出现在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。样例1:输入: head=[1,4,3,2,5,2],x=3 输出: [1,2,2,4,3,5]样例2:输入: head=[2,1],x=2 输出: [1,2]提示:链表中节点的数目在范围[0,200]内-100-200分析:面对这道算法题目,二当家的再次陷入了沉思。直接模拟即可,题目没有特别说明对空间复杂度