链表经典OJ题合集(包含带环问题,相交问题,随机指针复制等,附动画讲解)
目录
一:前言
二:简单题目
(1)移除链表元素
(2)反转链表
(3)找链表的中间结点
(4)输入一个链表,输出该链表中倒数第k个结点
(5)合并两个有序链表
(6)相交链表
(7)判断链表是否带环
三:较难题目
(1)链表分割
(2)判断链表是否为回文结构
(3)找到成环链表的入环结点
(4)复制带随机指针的链表
一:前言
这一部分链表的OJ的题目适用于已经掌握链表基础的同学。
如果有对链表基础功能实现有问题的同学可以看这里:
https://blog.csdn.net/2301_76269963/article/details/129586021?spm=1001.2014.3001.5501
二:简单题目
(1)移除链表元素
链接:https://leetcode.cn/problems/remove-linked-list-elements/description/
题目要求:
🤓基础思路:
【1】特殊情况:链表为空直接返回NULL。
【2】使用一个cur指针遍历整个链表。
【3】涉及到释放结点,要提前用next指针记录下一个位置。
【4】 用prev记录要删除的结点的前一个结点,保证链表连通。
【5】如果要删除,prev不变;不用删除的话prev,next,cur都要迭代。
【6】如果删除的是头结点,头结点要进行迭代。
代码:
struct ListNode* removeElements(struct ListNode* head, int val) {//如果链表为空,直接返回NULL。if (head == NULL){return head;}//当前结点struct ListNode* cur = head;//记录下一个结点struct ListNode* next = head->next;//记录原结点struct ListNode* prev = head;while (cur){//如果找到要删除的结点if ((cur->val) == val){//如果释放的是头结点if (cur == head){free(cur);head = next;cur = next;}//释放的不是头结点else{free(cur);prev->next = next;}}//没找到进行prev迭代else{prev = cur;}//迭代,要考虑next已经为空的情况cur = next;if (next)next = next->next;}//返回头结点return head; }
(2)反转链表
链接:https://leetcode.cn/problems/reverse-linked-list/description/
题目要求:
🤓基础思路:
【1】建立一个新的头。
【2】将原链表中的元素一个个拿下来。
【3】用prev记录新链表前一个结点,然后让新拿下来的结点指向prev。
图解:
代码:
struct listnode* reverselist(struct listnode* head){//一个个拿出来链接struct listnode* newnode = head;//记录前一个指针struct listnode* prev = NULL;while (head){//head指向后一个结点head = head->next;//改变结点指向newnode->next = prev;prev = newnode;//newnode要作为新的头结点,不能指空if (head)newnode = head;}return newnode; }
(3)找链表的中间结点
链接:https://leetcode.cn/problems/middle-of-the-linked-list/description/
题目要求:
🤓基础思路:
【1】设置一个慢指针slow和一个快指针fast。
【2】慢指针slow走一步,快指针fast走两步。
【3】当fast为空或者fast->next(避免对空指针解引用)为空就结束循环。
图解:
代码:
struct ListNode* middleNode(struct ListNode* head){//慢指针struct ListNode* slow = head;//快指针struct ListNode* fast = head;while (fast){//如果是偶数个结点,fast为最后一个时应该直接跳出if (fast->next == NULL)break;fast = fast->next->next;slow = slow->next;}//返回慢结点return slow; }
(4)输入一个链表,输出该链表中倒数第k个结点
链接:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=2&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking
题目要求:
🤓基础思路:
【1】考虑特殊情况:链表为空,返回空;给的k值大于链表结点数,返回空。
【2】还是利用快慢指针,快指针先走k步,然后快慢指针相同速度走,直到快指针为空,此时慢指针就是要求的结点。
代码:
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {//如果为空链表直接返回空 if (pListHead == NULL)return NULL;struct ListNode* slow = pListHead;struct ListNode* fast = pListHead;//快指针先走k步for (int i = 0; i < k; i++){if (fast == NULL)return NULL;fast = fast->next;}//慢指针会一直落后k个结点while (fast){fast = fast->next;slow = slow->next;}//返回慢指针return slow; }
(5)合并两个有序链表
链接:https://leetcode.cn/problems/merge-two-sorted-lists/description/
题目要求:
🤓基础思路:
【1】考虑特殊情况:其中一个链表为空返回另一个链表。
【2】设置一个新头newhead和新尾newtail。
【3】依次比较链表结点,小的拿下来作为新尾。(相同情况拿第一个链表)
【4】其中一个链表走空结束循环,将没走完的链表的剩余结点链接到新链表后面。
图解:
代码:
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {//设置一个新的头和新的尾struct ListNode* newhead = NULL, * newtail = NULL;//如果其中一个链表为空,返回另一个链表if (list1 == NULL)return list2;if (list2 == NULL)return list1;//如果第一个链表的结点数据大于第二个链表结点数据,//那第二个链表的头结点作为新头,反之第一个链表头结点作为新头if (list1->val >= list2->val){newhead = newtail = list2;list2 = list2->next;}else{newhead = newtail = list1;list1 = list1->next;}//一直循环,直到一边为空while (list1 && list2){//如果第一个链表的结点数据小,把这个结点接到新链表后面//然后进行迭代,指向下一个结点if (list1->val <= list2->val){newtail->next = list1;newtail = list1;list1 = list1->next;}//如果第二个链表的结点数据小,把这个结点接到新链表后面//然后进行迭代,指向下一个结点else{newtail->next = list2;newtail = list2;list2 = list2->next;}}//将没走到的链表的后续结点链接到新链表后面if (list1)newtail->next = list1;elsenewtail->next = list2;//返回新链表头return newhead; }
(6)相交链表
链接:https://leetcode.cn/problems/intersection-of-two-linked-lists/description/
题目要求:
• 这个题目最好想到的方法就是暴力求解,将其中一个链表的每一个结点与另一个链表的每一个结点比较,如果存储的地址相同,说明下一个结点是相交结点,这样就利用了双重循环,时间复杂度到达了O(n^2),我运行的时候没通过,下面我们介绍一种时间复杂度为O(n),思路相对简单的方法。
🤓基础思路:
【1】考虑特殊情况:其中一个链表为空,返回空。
【2】易知当两个非空链表相交时,两个链表的尾结点一定是相交结点,我们可以利用尾结点,判断两者是否相交。
【3】在找尾结点的同时计算两个链表的步长,计算距离差距gap,让长链表先走gap步,然后两个链表一起走,直到找到地址相同的结点(即交点)。
图解:
代码:
struct listnode* getintersectionnode(struct listnode* heada, struct listnode* headb) {//计算长度int lengtha = 1;int lengthb = 1;//如果其中一个为空,返回空if (heada == null || headb == null)return null;//找两个链表的尾结点并计算长度struct listnode* taila = heada;struct listnode* tailb = headb;while (taila->next){taila = taila->next;lengtha++;}while (tailb->next){tailb = tailb->next;lengthb++;}//判断相交if (taila != tailb){return null;}//计算相差步长,abs函数可以算两数的绝对值int gap = abs(lengthb - lengtha);//设B链表长,A链表短struct listnode* longlist = headb;struct listnode* shortlist = heada;//如果A链表长,改变值if (lengtha > lengthb){shortlist = headb;longlist = heada;}//长链表先走gap步while (gap--){longlist = longlist->next;}//循环求两个链表交点while (longlist != shortlist){longlist = longlist->next;shortlist = shortlist->next;}//返回交点return longlist; }
(7)判断链表是否带环
链接:https://leetcode.cn/problems/linked-list-cycle/description/
题目要求:
•在讲述基础思路前,我想先进行一个数学推导,如果有一个环形赛道,其中一个人A以速度2m/s跑,一个人B以速度1m/s跑 ,请问A是否能追上B?
很明显A一定会追上B,就像链表成环一样,两步走的一方一定会在环内部追上一步走的一方(链表的环长一定是正整数)。
图解:
🤓基础思路:
【1】考虑特殊情况:链表为空,返回空。
【2】设置一个慢指针slow和快指针fast,慢走一步,快走两步。
【3】如果fast或者fast->next为空,说明链表不成环。
【4】如果成环,fast一定会追上slow,追上了返回true。
图解:
代码:
bool hasCycle(struct ListNode* head) {struct ListNode* slow = head, * fast = head;//如果链表为空,返回falseif (head == NULL)return false;while (fast->next){//慢指针走一步,快走两步slow = slow->next;fast = fast->next->next;//如果走完直接为空,返回falseif (fast == NULL)return false;//如果fast追到slow,说明链表成环,返回true。if (fast == slow)return true;}//如果fast->next为空,链表不成环,返回false。return false; }
三:较难题目
(1)链表分割
链接:https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId=8&&tqId=11004&rp=2&ru=/activity/oj&qru=/ta/cracking-the-coding-interview/question-ranking
题目要求:
🤓基础思路:
【1】设计一个cur指针遍历链表。
【2】将链表分割成两个链表,数据小于x的结点合成一个链表(简称小链表),数据大于x的合成一个链表(简称大链表)。
【3】考虑特殊情况:链表为空返回空,分割处理后如果其中一个链表为空,返回另一个链表。
【4】分割结束后小链表的尾要和大链表的头链接,大链表的尾要指向空。
图解:
代码:
struct listnode* partition(struct listnode* head, int x) {//如果给的链表为空,我们直接返回空if (head == NULL)return NULL;//用来遍历整个链表struct listnode* cur = head;//小于x的链表struct listnode* lesshead = NULL;struct listnode* lesstail = NULL;//大于等于x的链表struct listnode* biggerhead = NULL;struct listnode* biggertail = NULL;//遍历整个链表while (cur){if (cur->val < x){//小于x的链表的第一个结点的插入if (lesshead == NULL){lesshead = lesstail = cur;}else{ //让原来的尾指向新尾lesstail->next = cur;lesstail = cur;}}else{//小于x的链表的第一个结点的插入if (biggerhead == NULL){biggerhead = biggertail = cur;}else{//让原来的尾指向新尾biggertail->next = cur;biggertail = cur;}}//cur迭代cur = cur->next;}//小链表的尾指向大链表头,大链表尾指空。//如果其中一个链表为空,不对其解引用if (lesstail != NULL)lesstail->next = biggerhead;if (biggertail != NULL)biggertail->next = NULL;//如果没有元素小于x,返回大的链表if (lesstail == NULL)return biggerhead;//如果没有元素大于x,返回小的链表elsereturn lesshead; }
(2)判断链表是否为回文结构
链接:https://leetcode.cn/problems/aMhZSa/
题目要求:
🤓基础思路:
【1】先找到中间的结点。(前面有)
【2】反转中间结点后的链表。(前面有)
【3】遍历两个链表,依次比较,有不同返回false。
【4】循环结束条件为两个链表任意一个走到空。
图解:
代码:
//判断链表是否为回文 //找中间结点 struct ListNode* middleNode(struct ListNode* head) {struct ListNode* slow = head;struct ListNode* fast = head;while (fast){if (fast->next == NULL)break;fast = fast->next->next;slow = slow->next;}return slow; } //进行反转 struct ListNode* reverseList(struct ListNode* phead) {struct ListNode* newnode = phead;//记录前一个指针struct ListNode* prev = NULL;while (phead){//head指向后一个结点phead = phead->next;//改变结点指向newnode->next = prev;prev = newnode;//newnode要作为新的头结点,不能指空if (phead)newnode = phead;}return newnode; } //判断是否为回文 bool isPalindrome(struct ListNode* head) {//找中间struct ListNode* mid = middleNode(head);//反转struct ListNode* rHead = reverseList(mid);//前半段struct ListNode* cur1 = head;//后半段struct ListNode* curA = rHead;//一个个判断,不同直接返回falsewhile (cur1 && curA){if (cur1->val != curA->val){return false;}else{//如果相同,迭代cur1 = cur1->next;curA = curA->next;}}//全部相同,返回true。return true; }
(3)找到成环链表的入环结点
链接:https://leetcode.cn/problems/linked-list-cycle-ii/description/
题目要求:
题目的两种思路:
1.相遇后断开
🤓基础思路:
【1】设计快慢指针,快走两步,慢走一步,找到第一次相遇的结点(简称meet)。
【2】在这个结点处断开,meet指向空,meet原来的下一个结点作为新链表的头。
【3】题目就转换为了求两个链表的交点。
图解:
代码:
//第二解法,断开找交点 struct ListNode* detectCycle(struct ListNode* head) {struct ListNode* slow = head, * fast = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;//相遇if (fast == slow){struct ListNode* meet = fast;//第二个链表的头struct ListNode* newhead = fast->next;fast->next = NULL;//找到交点struct ListNode* headTail = head;struct ListNode* newheadTail = newhead;//计算长度int len = 0;int newLen = 0;while (headTail){headTail = headTail->next;len++;}while (newheadTail){newheadTail = newheadTail->next;newLen++;}//计算长度差距int gap = abs(newLen - len);struct ListNode* longList = newhead;struct ListNode* shortList = head;if (len > newLen){longList = head;shortList = newhead;}//长链表先走gap步while (gap--){longList = longList->next;}while (longList != shortList){longList = longList->next;shortList = shortList->next;}//返回交点return longList;}}//走到空返回NULLreturn NULL; }
2.数学公式法(更加简洁)
🤓基础思路:
【1】先进行数学推导。
【2】将公式转换成代码。
推导:
代码:
//判断是否成环并且找到入环点 struct ListNode* detectCycle(struct ListNode* head) {//判断是否有环struct ListNode* fast = head, * slow = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;//相遇if (fast == slow){//公式法struct ListNode* meet = slow;while (head != meet){head = head->next;meet = meet->next;}return meet;}}//没有成环,返回空。return NULL; }
(4)复制带随机指针的链表
链接:https://leetcode.cn/problems/copy-list-with-random-pointer/description/
题目要求:
🤓基础思路:
【1】考虑特殊情况:链表为空,返回空。
【2】我们可以依次复制链表中的结点并将它们放在原链表结点之后。
图解:
★★★链接之后我们可以发现一个非常神奇的规律,那就是除了random指向NULL的情况,其它新生成结点的random都是它前一个结点的random的next。
【3】根据规律复制random
【4】合成新链表,恢复原链表。
图解:
代码:
struct node* copyrandomlist(struct node* head) {//如果链表为空。返回空if (head == NULL)return NULL;//复制加链接struct node* cur = head;while (cur){//生成新结点struct node* copy = (struct node*)malloc(sizeof(struct node));//复制数据域copy->val = cur->val;//复制指针域copy->next = cur->next;//链接两个链表cur->next = copy;//迭代cur = copy->next;}//复制randomcur = head;while (cur){struct node* copy = cur->next;//cur->random为空的情况单独处理if (cur->random == NULL)copy->random = NULL;else{copy->random = cur->random->next;}//迭代cur = copy->next;}//切割复原cur = head;//新链表的头和尾struct node* copyhead = cur->next;struct node* copytail = cur->next;while (cur != NULL){//恢复原链表结构cur->next = copytail->next;//cur迭代cur = cur->next;//如果cur为空,不进行迭代if (cur ){//旧尾指向新尾copytail->next = cur->next;//迭代copytail = copytail->next;}}//返回新链表的头return copyhead; }
相关文章:
![](https://img-blog.csdnimg.cn/9077a2fe205b48f5867e9907cc23a625.jpeg)
链表经典OJ题合集(包含带环问题,相交问题,随机指针复制等,附动画讲解)
目录 一:前言 二:简单题目 (1)移除链表元素 (2)反转链表 (3)找链表的中间结点 (4)输入一个链表,输出该链表中倒数第k个结点 (5)合并两个有序链表 (6)相交链表 (7)判断链表是否带环 三:较难题目 (1)链表分割 (2)判断链表是否为回…...
![](https://www.ngui.cc/images/no-images.jpg)
CSS新增
系列文章目录 前端系列文章——传送门 CSS系列文章——传送门 文章目录系列文章目录什么是 CSS3渐进增强和优雅降级CSS3 中的选择器CSS3 中的背景CSS3 中的边框CSS3 中的文本效果CSS3 中的字体 font-face什么是 CSS3 CSS3是CSS(层叠样式表)技术的升级版…...
![](https://img-blog.csdnimg.cn/7490b15ca08845baa13c020daaa05356.png)
奇安信_防火墙部署_透明桥模式
奇安信_防火墙部署_透明桥模式一、预备知识二、项目场景三、拓扑图四、基本部署配置1. 登录web控制台2.连通性配置3.可信主机配置4.授权导入5.特征库升级6.安全配置文件五、透明桥配置1. 创建桥2. 端口绑定桥3. 创建桥端口六、结语一、预备知识 安全设备接入网络部署方式 二、…...
![](https://img-blog.csdnimg.cn/img_convert/07fb74f4b7355119ef45a6bca1094339.png)
C语言——字符串函数(2)和内存函数
(一)strtok函数dilimiters参数是个字符串,定义了用作分隔符的字符集合第一个参数指定一个字符串,它包含了0个或者多个由dilimiters字符串中一个或者多个分隔符分割的标记。strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回…...
![](https://www.ngui.cc/images/no-images.jpg)
第1节 线性回归模型
1. 模型概述 对于收集到的数据(xi,yi)(x_i,y_i)(xi,yi),建立线性回归模型yiθTxiεi(1)y_i\theta^{^T} x_i \varepsilon_i (1)yiθTxiεi(1) 需要估计的参数为θT\theta^{^T}θT,我们的目的是让估计的参数θT\theta^{^T}θT和xix_ixi…...
![](https://img-blog.csdnimg.cn/b0e46c4c10a745cf83bc069e85e0185c.png)
CodeGeeX 130亿参数大模型的调优笔记:比FasterTransformer更快的解决方案
0x0 背景 相信大家都使用或者听说过github copilot这个高效的代码生成工具。CodeGeeX类似于github copilot,是由清华大学,北京智源研究院,智谱AI等机构共同开发的一个拥有130亿参数的多编程语言代码生成预训练模型。它在vscode上也提供了插件…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux驱动之并发与竞争
文章目录并发与竞争的概念原子操作原子整形操作 API 函数原子位操作 API 函数自旋锁自旋锁简介自旋锁结构体自旋锁 API 函数自旋锁的注意事项读写自旋锁读写自旋锁的API顺序锁顺序锁的APIRCU(Read-Copy-Update)RCU的API信号量信号量API互斥体互斥体的API完成量(Completion)完成…...
![](https://img-blog.csdnimg.cn/img_convert/d4cd857d5cdf43dc94fb729097178160.png)
【密码学复习】第四讲分组密码(三)
AES算法的整体结构 AES算法的轮函数 1)字节代换(SubByte) 2)行移位(ShiftRow) 3)列混合(MixColumn) 4)密钥加(AddRoundKey)1-字节代换…...
![](https://img-blog.csdnimg.cn/img_convert/6ef37deaaa07acd3c3eb018b903f8c51.png)
JVM(内存划分,类加载,垃圾回收)
JVMJava程序,是一个名字为Java 的进程,这个进程就是所说的“JVM”1.内存区域划分JVM会先从操作系统这里申请一块内存空间,在这个基础上再把这个内存空间划分为几个小的区域在一个JVM进程中,堆和方法区只有一份;栈和程序…...
![](https://www.ngui.cc/images/no-images.jpg)
工作中遇到的问题 -- 你见过哪些写的特别好的代码
strPtr : uintptr((*(*stringStruct)(unsafe.Pointer(&str))).str)代码解析: 这是一段 Go 代码,它的作用是获取一个字符串变量 str 的底层指针,即字符串数据的起始地址。 这段代码涉及到了 Go 语言中的指针、类型转换和内存布局等概念&…...
![](https://www.ngui.cc/images/no-images.jpg)
基于chatGPT设计卷积神经网络
1. 简介 本文主要介绍基于chatGPT,设计一个针对骁龙855芯片设计的友好型神经网络。 提问->跑通总共花了5min左右,最终得到的网络在Cifar100数据集上与ResNet18的精度对比如下。 模型flopsparamstrain acc1/5test acc1/5ResNet18(timm)1.8211.18~98…...
![](https://www.ngui.cc/images/no-images.jpg)
java.sql.Date和java.util.Date的区别
参考答案 java.sql.Date 是 java.util.Date 的子类java.util.Date 是 JDK 中的日期类,精确到时、分、秒、毫秒java.sql.Date 与数据库 Date 相对应的一个类型,只有日期部分,时分秒都会设置为 0,如:2019-10-23 00:00:0…...
![](https://img-blog.csdnimg.cn/2b182def443e42f589e5fdb7d9fe91d2.png)
动态规划---线性dp和区间dp
动态规划(三) 目录动态规划(三)一:线性DP1.数字三角形1.1数字三角形题目1.2代码思路1.3代码实现(正序and倒序)2.最长上升子序列2.1最长上升子序列题目2.2代码思路2.3代码实现3.最长公共子序列3.1最长公共子序列题目3.2代码思路3.3代码实现4.石子合并4.1题目如下4.2代…...
![](https://www.ngui.cc/images/no-images.jpg)
常见的2D与3D碰撞检测算法
分离轴分离轴定理(Separating Axis Theorem)是用于解决2D或3D物体碰撞检测问题的一种方法。其基本思想是,如果两个物体未发生碰撞,那么可以找到一条分离轴(即一条直线或平面),两个物体在该轴上的…...
![](https://img-blog.csdnimg.cn/30da460621a241a88768b0a48393b815.png)
STM32 10个工程篇:1.IAP远程升级(二)
一直提醒自己要更新CSDN博客,但是确实这段时间到了一个项目的关键节点,杂七杂八的事情突然就一涌而至。STM32、FPGA下位机代码和对应Labview的IAP升级助手、波形设置助手上位机代码笔者已经调试通过,因为不想去水博客、凑数量,复制…...
![](https://img-blog.csdnimg.cn/img_convert/d875dec64ee8c8604bb3d80b64f98ff1.gif)
Unity+ChatGpt的联动 AICommand
果然爱是会消失的,对吗 chatGpt没出现之前起码还看人家的文章,现在都是随便你。 本着师夷长技以制夷的思路,既然打不过,那么我就加入 github地址:https://github.com/keijiro/AICommand 文档用chatGpt翻译如下&#…...
![](https://img-blog.csdnimg.cn/abaf0518005948df8a92bfb17cb2c018.png)
STM-32:按键控制LED灯 程序详解
目录一、基本原理二、接线图三、程序思路3.1库函数3.2程序代码注:一、基本原理 左边是STM322里电路每一个端口均可以配置的电路部分,右边部分是外接设备 电路图。 配置为 上拉输入模式的意思就是,VDD开关闭合,VSS开关断开。 浮空…...
![](https://img-blog.csdnimg.cn/92112786c73e45d8af8b1437e892a253.png)
北邮22信通:(8)实验1 题目五:大整数加减法(搬运官方代码)
北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 上一篇文章: 北邮22信通:(7)实验1 题目四:一元多项式(节省内存版)_青山如…...
![](https://img-blog.csdnimg.cn/fac3a3cfcf1443c9ad17b96debff928b.png?)
Fiddler抓取https史上最强教程
有任何疑问建议观看下面视频 2023最新Fiddler抓包工具实战,2小时精通十年技术!!!对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler。 但是初学时,大家对于fiddler如何抓取HTTPS难免走歪路ÿ…...
![](https://img-blog.csdnimg.cn/6cf1c33012b04068b547b34dda4ac088.png)
STM32开发基础知识入门
C语言基础 位操作 对基本类型变量可以在位级别进行操作。 1) 不改变其他位的值的状况下,对某几个位进行设值。 先对需要设置的位用&操作符进行清零操作,然后用|操作符设值。 2) 移位操作提高代码的可读性。 3) ~取反操作使用技巧 可用于对某…...
![](https://img-blog.csdnimg.cn/img_convert/d39e6d75ac8a8224683f27aba6b00bf1.png)
学习操作系统的必备教科书《操作系统:原理与实现》| 文末赠书4本
使用了6年的实时操作系统,是时候梳理一下它的知识点了 摘要: 本文简单介绍了博主学习操作系统的心路历程,同时还给大家总结了一下当下流行的几种实时操作系统,以及在工程中OSAL应该如何设计。希望对大家有所启发和帮助。 文章目录…...
![](https://www.ngui.cc/images/no-images.jpg)
大数据的常用算法(分类、回归分析、聚类、关联规则、神经网络方法、web数据挖掘)
在大数据时代,数据挖掘是最关键的工作。大数据的挖掘是从海量、不完全的、有噪声的、模糊的、随机的大型数据库中发现隐含在其中有价值的、潜在有用的信息和知识的过程,也是一种决策支持过程。其主要基于人工智能,机器学习,模式学…...
![](https://img-blog.csdnimg.cn/51b20a9cbe084f4a8f71869ad2ecd9e7.png)
【数据结构】详解二叉树与堆与堆排序的关系
🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C语言专栏:https://blog.csdn.net/vhhhbb/category_12174730.html 🚀数据结构专栏ÿ…...
![](https://img-blog.csdnimg.cn/20a3814d815b432b9b309a6e97212fbf.gif#pic_center)
【Pandas】数据分析入门
文章目录前言一、Pandas简介1.1 什么是Pandas1.2 Pandas应用二、Series结构2.1 Series简介2.2 基本使用三、DataFrame结构3.1 DataFrame简介3.2 基本使用四、Pandas-CSV4.1 CSV简介4.2 读取CSV文件4.3 数据处理五、数据清洗5.1 数据清洗的方法5.2 清洗案例总结前言 大家好&…...
![](https://img-blog.csdnimg.cn/7be40035c27549a4bde1fb281216f710.png)
【c++】:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“
文章目录 前言一.list的基本功能的使用二.list的模拟实现总结前言 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中࿰…...
![](https://img-blog.csdnimg.cn/1a1f8ad272f845f9bbae362c01f48fb4.jpeg#pic_center)
QT表格控件实例(Table Widget 、Table View)
欢迎小伙伴的点评✨✨,相互学习🚀🚀🚀 博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩🚀 文章目录前言一、图示实例二、列…...
![](https://img-blog.csdnimg.cn/img_convert/17e03ab8a94976de71cfaa6cd09dbe28.png)
第二章Vue组件化编程
文章目录模块与组件、模块化与组件化模块组件模块化组件化Vue中的组件含义非单文件组件基本使用组件注意事项使用 kebab-case使用 PascalCase组件的嵌套模板templateVueComponent一个重要的内置功能单文件组件Vue脚手架使用Vue CLI脚手架先配置环境初始化脚手架分析脚手架结构实…...
![](https://img-blog.csdnimg.cn/519928cb6d314d1eaaeeaf85d590f244.png)
面试官:vue2和vue3的区别有哪些
目录 多根节点,fragment(碎片) Composition API reactive 函数是用来创建响应式对象 Ref toRef toRefs 去除了管道 v-model的prop 和 event 默认名称会更改 vue2写法 Vue 3写法 vue3组件需要使用v-model时的写法 其他语法 1. 创…...
![](https://www.ngui.cc/images/no-images.jpg)
【TopK问题】——用堆实现
文章目录一、TopK问题是什么二、解决方法三、时间复杂度一、TopK问题是什么 TopK问题就是从1000个数中找出前K个最大的数或者最小的数这样的类似问题。 不过并不要求这k个数字必须是有序的,如果题目有要求,则进行堆排序即可。 还有比如求出全国玩韩信…...
![](https://img-blog.csdnimg.cn/2ab0ad51581f4dd9854484b124b593bc.png#pic_center)
【Spring从成神到升仙系列 四】从源码分析 Spring 事务的来龙去脉
👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…...
![](/images/no-images.jpg)
各类网站网站建设的目标是什么/搜索引擎优化seo怎么做
购物车项目(一)——编写商品类 编写思路: 1.设置商品属性 2.构造方法 3.封装 4.重写hashCode() 和equals() 方法代码如下: package entity;//商品类 public class Items {private int id; // 商品编号private String name; // …...
![](/images/no-images.jpg)
互联网设计是什么/seo关键词优化要多少钱
岁月如梭,时光荏茬, 一个暑假的结束.成了一个轮回的开始 想停下来回想一下暑假中学校的风景,却发现自己什么也想不起来了,或许从未留意身边的风景,也或许从未想到为身边的风景而驻足.每天见到的最多的是行色匆匆的你,我和他 . 这个暑假很忙碌,却觉得很知足,因为过的不再空虚,每…...
![](/images/no-images.jpg)
linux主机 安装wordpress/深圳网络营销策划公司
同步自:http://www.blogjava.net/AndersLin/archive/2006/06/27/55421.html 上次发了一文《软件企业的绩效管理和内部消耗》讨论很多,"置身珠海,学习与奋斗"cnBlogs让我认识其实我说了那么多都只是绩效的保健性&…...
![](http://www.myloadtest.com/resources/google-trends-new-relic-vs-appdynamics.png)
成都网站建设scwbo/陕西网站设计
前: New Relic的上市使得IT和资本界开始重新重视APM,当然跟传统APM相比,New Relic还是有相当的创新,另外还有一点是目前的创业潮导致的企业级需求增大。 In recent years, IT projects seem to have stopped asking “which APM s…...
![](http://image78.360doc.com/DownloadImg/2014/08/2218/44517223_5.png)
顺德龙江网站建设/网络营销方案策划书
Java I/O流-总结(InputStream,OutputStream,Reader,Writer)2014-08-22一、 流的分类 按数据流动方向– 输入流:只能从中读取字节数据,而不能向其写出数据– 输出流:只能向其写入字节数据,而不能从中读取数据 按照…...
![](/images/no-images.jpg)
营销型网站建设风格设定包括哪些方面?/德芙巧克力的软文500字
记住,表达式是值和操作符的组合,它们可以通过求值成为单个值。“数据类 型”是一类值,每个值都只属于一种数据类型。表 1-2 列出了Python 中最常见的数据类型。例如,值-2 和 30 属于“整型”值。整型(或 int࿰…...