链表交集相关算法题|AB链表公共元素生成链表C|AB链表交集存放于A|连续子序列|相交链表求交点位置(C)

笔试面试高频算法题总结 经中遇到的题: 1、数组的逆序数 2、LRU //hashMap加双向链表,双向链表有头尾节点, 3、最长回文序列 leetocde 5 4、矩阵中的最长递增路径,可以上下左右一起都走; leetcode329 5、判断一个二叉树是另一个二叉树的子树 6、归并排序的时间复杂度 // NlongN 7、求给出01矩阵中的最大正方形面积(全为1) lc221 8、求二叉树中距离最远的节... 阅读详情

AB链表公共元素生成链表C

设A和B是两个单链表(带头节点),其中元素递增有序。设计一个算法从A和B中的公共元素产生单链表C,要求不破坏A、B的节点

算法思想

表A,B都有序,可从第一个元素起依次比较A、B两表的元素,若元素值不等,则值小的值往后移,若元素值相等,则创建一个值等于两节点的元素值的新节点,使用尾插法插入到新的链表中,并将两个原表指针后移一位,直到其中一个链表遍历到表尾
![[Pasted image 20241104203653.png]]

cura小于curb,cura指向cura的next
![[Pasted image 20241104203707.png]]

cura等于curb,malloc一个new节点
![[Pasted image 20241104203725.png]]

curc的next指向new
![[Pasted image 20241104203747.png]]

curc指向new
![[Pasted image 20241104203811.png]]

cura和curb往后遍历

void GetCommon(LinkList &A, LinkList &B)
{
	LNode* cura = A->next, *curb = B->next, *curc, *new;
	LinkList C = (LinkList)malloc(sizeof(LNode));
	curc = C;

	while (cura && curb)
	{
		if (cura->data < curb->data)
			cura = cura->next;
		else if (cura->data > curb->data)
			curb = curb->next;
		else
		{
			new = (LNode*)malloc(sizeof(LNode));
			new->data = cura->data;
			curc->next = new;
			curc = new;
			cura = cura->next;
			curb = curb->next;
		}
	}
	curc->next = NULL;
}

一个工作指针cura用来遍历链表A,一个工作指针curb用来遍历链表B,一个工作指针curc用来建立链表C,一个指针new用来创建共同节点的新节点尾插到C链表上
最开始malloc一个C链表的头节点,将curc指向C链表的头节点
cura和curb开始分别遍历链表A和B
当cura小于curb或者curb小于cura时,小的那一个往后遍历一个节点
当cura等于curb时,malloc一个新节点,使其值等于cura或curb,并将其尾插到C链表上
cura和curb继续往后遍历,直到其中一个指针指向NULL
最后将curc指向NULL

AB链表交集存放于A

已知两个链表A和B分别表示两个集合,其元素递增排列,编制函数,求A与B的交集,并存放于A链表中

算法思想

采用归并的思想,设置两个工作指针cura和curb,对两个链表进行归并扫描,只有同时出现在两集合中的元素才链接到结果表中且仅保留一个,其他的节点全部释放。当一个链表遍历完毕后,释放另一个表中剩下的全部节点
![[Pasted image 20241104210025.png]]

cura小于curb,删除cura
用del指向cura,cura指向cura的next
![[Pasted image 20241104210120.png]]

free掉del
![[Pasted image 20241104210148.png]]

cura等于curb
curc的next指向cura,curc指向cura,cura指向cura的next
![[Pasted image 20241104210253.png]]

del指向curb,curb指向curb的next
![[Pasted image 20241104210323.png]]

free掉del
![[Pasted image 20241104210336.png]]

LinkList Union(LinkList &La, LinkList &Lb)
{
	LNode* cura = La->next;
	LNode* curb = Lb->next;
	LNode* curc = La;
	LNode* del;

	while (cura && curb)
	{
		if (cura->data == curb->data)
		{
			curc->next = cura;
			curc = cura;
			cura = cura->next;
			del = curb;
			curb = curb->next;
			free(del);
		}
		else if (cura->data < curb->data)
		{
			del = cura;
			cura = cura->next;
			free(del);
		}
		else
		{
			del = curb;
			curb = curb->next;
			free(del);
		}
	}
	while (cura)
	{
		del = cura;
		cura = cura->next;
		free(del);
	}
	while (curb)
	{
		del = curb;
		curb = curb->next;
		free(del);
	}
	curc->next = NULL;
	free(Lb);
	return La;
}

cura指针用来遍历链表A,curb用来遍历链表B,curc来指向归并的结果的表头位置,题目要求归并到链表A,所以curc指向La
指针del指向要删除的节点
cura和curb分别从链表A和B的第一个节点开始遍历,其中一个链表遍历结束时,循环结束
当cura等于curb,将cura尾插到curc后面,用del指针删除掉curb
当cura小于curb,删除掉cura
当curb小于cura,删除掉curb
当循环结束后,如果cura不指向NULL,表明链表A中还有剩余的元素,全部删除
如果curb不指向NULL,表明链表B中还有剩余的元素,全部删除
最后将curc的next指向NULL
删除掉链表B的头节点Lb
返回链表A的头节点La

连续子序列

两个整数序列A=a1,a2,a3,…,amA=a_{1},a_{2},a_{3},\dots,a_{m}A=a1​,a2​,a3​,…,am​和B=b1,b2,b3,…,bnB=b_{1},b_{2},b_{3},\dots,b_{n}B=b1​,b2​,b3​,…,bn​已经存入两个单链表中,设计一个算法,判断序列B是否是序列A的连续子序列

算法思想

因为两个整数序列已存入两个链表中,操作从两个链表的第一个节点开始,若对应数据相等,则后移指针;若对应数据不相等,则A链表从上次开始比较节点的后继开始,B链表仍从第一个节点开始比较,直到B链表到尾表示匹配成功。
A链表到尾而B链表未到尾白哦是失败
操作中应该记住A链表每次开始的节点,以便下次匹配好从其后继开始
![[Pasted image 20241104211850.png]]

cura等于curb,往后遍历
![[Pasted image 20241104211921.png]]

cura不等于curb
prev指向prev的next,cura等于prev,curb指向B
![[Pasted image 20241104212014.png]]

cura不等于curb
![[Pasted image 20241104212039.png]]

cura等于cura,继续遍历

bool Pattern (LinkList &A, LinkList &B)
{
	LNode* cura = A;
	LNode* prev = cura;
	LNode* curb = B;

	while (cura && curb)
	{
		if (cura->data == curb->data)
		{
			cura = cura->next;
			curb = curb->next;
		}
		else
		{
			prev = prev->next;
			cura = prev;
			curb = B;
		}
	}
	if (curb == NULL)
		return true;
	else
		return false;
}

用cura指针来遍历链表A,用cur指针来遍历链表B,用prev指针保存上一次A链表比较的节点,下一轮直接从prev的后继节点开始
cura和curb开始同时遍历,当cura和curb其中一个指向NULL,循环结束
当cura等于curb时,继续往后比较链表A和链表B的剩余部分
当cura不等于curb时
prev指向prev的next,也就是A链表开始比较的节点往后走一个
cura指向prev,curb重新指向链表B的表头,开始新的一轮比较
循环结束后,如果curb指向NULL,表示链表B的curb都等于对应的cura,链表B是链表A的连续子序列
否则就不是

相交链表求交点位置

假定采用带头节点的单链表保存单词,当两个单词有相同后缀时,可共享相同的后缀存储空间
如loading和being
![[Pasted image 20241104200916.png]]

设str1和str2分别指向两个单词所在单链表的头节点
设计一个算法,找出由str1和str2所指向两个链表共同后缀的起始位置,也就是两个链表的交点

算法思想

顺序遍历两个链表到尾节点时,不能保证两个链表同时达到尾节点
假设一个链表比另一个链表长k个节点,现在长链表上遍历k个节点
之后同步遍历两个链表,这样就能保证它们同时达到最后节点
这时候每次遍历两两比较两个链表的节点,如果两个遍历的指针相等,就表示两个链表相交,第一个相等的节点就是交点

  1. 分别求出str1和str2所指的两个链表的长度m和n
  2. 将两个链表以表尾对齐:两个指针分别指向str1和str2的头节点,长的链表先走k个节点,也就是走到第∣m−n∣+1|m-n|+1∣m−n∣+1个节点,
  3. 之后两个指针同步往后遍历,判断它们是否指向同一个节点
    ![[Pasted image 20241104214225.png]]

str1,走m-n步,也就是1步
![[Pasted image 20241104214343.png]]

开始同时遍历
**![[Pasted image 20241104214412.png]]**

直到cur1和cur2指向同一个节点为止

typedef struct Node
{
	char data;
	struct Node* next;
}SNode;

int ListLen (SNode* head)
{
	int len = 0;
	while (head->next)
	{
		len++;
		head = head->next;
	}
	return len;
}

SNode* findList(SNode* str1, SNode* str2)
{
	int m, n;
	SNode* cur1, *cur2;
	m = ListLen(str1);             //求str1的长度
	n = ListLen(str2);             //求str2的长度
	for (cur1 = str1; m > n; m--)  //若m>n,使cur1后移m-n步
		cur1 = cur1->next;
	for (cur2 = str2; m < n; n--)  //若n>m,使cur2后移n-m步
		cur2 = cur2->next;
	// 查找交点
	while (cur1->next && cur1->next != cur2->next)
	{
		//两个指针同步向后移动
		cur1 = cur1->next;
		cur2 = cur2->next;
	}
	return cur1->next;             //返回相交链表的交点
}
高级数据结构题库 网络课课后题 1、在5x5的矩阵中,有2个非零元素,则稀疏因子为____。 答案: 0.08 2、下列关于十字链表的表述正确的有: A、十字链表的节点只需要记录非零元素的值,不需要记录它们在矩阵中的位置。 B、一个全由非零元素组成的矩阵,若使用十字链表表示,也将获得效率的提升。 C、十字链表的每个节点只有一个指向后继元素的指针。 D、应用十字链表做矩阵乘法时,时间复杂度是O(... 阅读详情

相关推荐

机器学习与算法笔试备考指南:从基础理论到电商实战

机器学习作为人工智能的核心技术方向,其底层原理与工程实践密不可分。无论是逻辑回归、决策树还是集成模型,理解模型适用场景、特征工程与模型评估方法,都是算法工程师的基本功。在电商业务中,推荐系统、用户复购预测、定价策略等场景对算法模型提出了更高的落地要求,因此校招笔试往往会同时考察数据结构、机器学习基础与业务应用能力。从数据预处理到特征设计,从模型对比到AB实验,这些知识点共同构成了算法岗笔试的高频考核范围。掌握模型原理、评估指标与调参思路,并熟悉贪心、动态规划等经典算法,能够帮助候选人在技术笔试中稳步发挥。本

weixin_34208185的博客 409

【链表】LC 160.相交链表

文章摘要: 本文解析了LeetCode热门题目《相交链表》的两种解法。双指针法通过巧妙遍历消除链表长度差:指针A遍历完链表A后转链表B,指针B遍历完链表B后转链表A,最终相遇点即为交点(时间复杂度O(m+n),空间复杂度O(1))。哈希表法则通过存储链表A节点,遍历链表B时检查哈希表是否存在相同节点(时间复杂度O(m+n),空间复杂度O(m))。双指针解法数学原理清晰,利用路径补偿(a+b+c=b+a+c)确保同步到达交点,代码简洁高效,是更优解。文中还对比了C++中NULL与nullptr的区别,推荐使用

你的博客 248

BAT面试算法基础学习笔记

打印二叉树 按层,连同行号打印last:表示正在打印 nlast :遍历所有节点换行的条件为: nlast==last->next;二叉树的序列化和反序列化 二叉树转换为文件的记录的过程,称为序列化 将文件记录信息转换为二叉树的过程,称为反序列化 结束符!#归并排序, 改变有序区间(从1开始)快速排序 {}3堆排序 取出最大值存入数组希尔排序 以距离值 跳跳比桶排序计数排序 身高基数排序 个

田航语 1955

白银挑战——链表高频面试算法题

开始时间:2023年7月18日14:39:36。

蜗牛的博客 710

基于FPGA的工业相机项目大赏1——cmos线阵相机

●CMOS CL0402 作为图像传感芯片,曝光后产生一定格式的图像数据;●FPGA ZYNQ7020 作为主控芯片负责cmos驱动控制、图像像素的采集、cmos寄存器的配置、cameralink协议的实现、上位机串口通信的实现;●Cameralink端子实现图像数据的高速串行发送,将数据传送至采集卡PC端。系统工作流程如下: FPGA 上电加载配置程序,计算机通过异步串口向 FPGA 发送控制信息,FPGA对接收的控制信息进行分析判断。

weixin_41895751的博客 6400

致远OA公文管理模块相关操作

致远oa协同办公系统 公文管理模板 相关操作

weixin_59666050的博客 4275

2021秋招-刷题统计

字节跳动招聘专项 部门 搜索 AI Lab 飞书 其他。。。 面经 -知识点 字节算法2020汇总:汇总 字节跳动nlp算法实习生面经 腾讯,字节跳动NLP实习面经 字节 算法实习生面经 字节/腾讯算法岗暑期实习面经分享 字节跳动暑期实习算法实习生面经,已凉 字节跳动算法工程师-搜索方向暑期实习一二面总结 字节跳动NLP算法实习面经 字节跳动算法实习生三面面经,已凉 字节跳动算法工程师面经 已offer 2020实习算法岗 阿里/腾讯/百度/字节/美团 面经分享 字节跳动AI-Lab算法岗面经(已收

LBJ_King的博客 2803

Ubuntu安装有线网卡驱动

问题:插入网线后,无法识别有线连接。 原因:主板有线网卡的型号和系统中网卡的驱动不匹配 解决 前提条件: 需要连wifi通网,因为需要安装dkms,和下载驱动。 删除原驱动 1、查看网卡型号 lspci | grep net 我的网卡型号是8125 2、查看网卡驱动 lspci -k 网卡驱动是r8169 3、卸载网卡驱动 找出位置 modinfo r8169 | grep filename 然后删除 rm path/r8169.ko 卸载驱动 rmmod r8169 查看是否卸载成功 lsm

weixin_43932656的博客 1万+

算法题笔记

给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。如果遍历数组,把数放到另一个数组而不是哈希表,数组无法瞬间找到目标值,时间复杂度还是降不下来,内存占用也多了。它们的区别是遍历数由小到大还是由大到小。

Jesui的博客 557

大疆C板使用C610电调驱动M2006电机(hal库)

大疆C板使用C610电调驱动M2006电机,以及遇到代码没问题,但是电机死活不转的处理

qq_46210601的博客 6019

ubuntu22.04下对使用linuxdeployqt发布的qt程序进行deb打包操作

【代码】ubuntu22.04下对使用linuxdeployqt发布的qt程序进行deb打包操作。

十三阿哥的博客 1402

c语言程序设计策划书,(word)C语言程序设计策划书.doc

(word)C语言程序设计策划书C语言程序设计策划书 ——模拟火车调度系统一、 实验目的对于一年多以来程序的学习,C语言也好,java也好,我们已经初步掌握了它们的语法,具备了初步的算法设计能力,但显然我们也仅仅是初学者,无论是任何语言,它的功能也绝对不会仅仅是对数组的排序那么简单。这一次的程序设计更是要求我们能够综合应用之前所学知识,掌握较复杂问题的求解过程。通过本次程序设计,一方面我们要掌握复...

weixin_39689700的博客 198

Cesium 实现动态加载气象数据:渲染成动态雨雪/云层效果(源码 + 原理)

本文介绍了在Cesium中实现动态天气效果的技术方案。核心思路是通过时间轴驱动多层数据动态切换,包括:1)时间维度处理,按序列加载不同气象图层;2)空间维度处理,将气象数据切分为瓦片;3)效果层实现,制作风场、降水等动态可视化效果。文章详细讲解了后端数据预处理(生成瓦片和风场JSON)、前端实现(双层雷达瓦片交替渐变、风场粒子系统)的具体方法,并提供了完整的代码示例。此外还探讨了雨雪粒子、云层效果等增强功能,以及工程化建议,为构建科学准确的动态天气可视化系统提供了实用解决方案。

专注AI大模型,软件混淆,授权 623

一级计算机基础第十套,计算机公共基础题第十套.doc

第十套一、选择题 [ 共得:0分 ](1)下列数据结构中,按先进后出原则组织数据的是 A)线性链表 B)栈 C)循环链表 D)顺序表???? 正确答案:B(2)具有3个结点的二叉树有 A)2种形态 B)4种形态 C)7种形态 D)5种形态???? 正确答案:D(3)设有下列二叉树: ??????? 对此二叉树前序遍历的结果为 A)ZBTYCPXA B)ATBZXCYP C)ZBTACYXP D)A...

weixin_34433661的博客 276

音乐生成 - 使用LSTM或Transformer模型进行音乐生成,如MIDI音乐生成。

在本篇博客中,我们将介绍如何使用LSTM和Transformer模型生成MIDI音乐。我们将首先概述音乐生成的一般流程,然后深入了解LSTM和Transformer模型的特点和实现。最后,我们将通过Python代码演示如何使用这两种模型生成MIDI音乐。

斌擎科技 1720

手把手教你学Simulink——基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真

随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。

MHD0815的博客 1万+

leetcode刷题笔记——剑指offer(二)[回溯、排序、位运算、数学、字符串]

搜索与回溯 剑指 Offer 12. 矩阵中的路径 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。 示例 1: 输入:board = [["A","B","C","E"],[

weixin_46934960的博客 943

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2018全国计算机二级c语言,2018年全国计算机二级C语言

2018年全国计算机二级C语言Tag内容描述:1、二级C语言2010年培训 全国计算机二级C语言资格考试培训资料 考试方式全国计算机等级考试二级C语言每年上半年3月份与9月份两次考试,报名时间查看通知。1.笔试:90分钟,满分100分,其中含公共基础知识部分的30分。2.上机:90分钟,满分100分3.上机操作包括:(1)填空。(2)改错。(3)编程。 题型分析二级C考。2、知识点分布,第一章数据...

weixin_34859739的博客 219

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【C++学习】9.顺序容器 array,vector,string,deque,list,forward_list详解

元素在顺序容器中的顺序与其加入容器时的位置相对应。 关联容器中的元素位置由元素相关联的关键字值决定 所有容器类都共享公共的接口,不同的容器按照不同的方式对其进行拓展。 一个容器就是一些特定类型对象的集合。顺序容器为程序员提供了控制元素存储和访问顺序的能力。 访问顺序不依赖于元素的值,而是与元素加入容器时的位置相对性。 标准库提供了三种容器适配器,分别为容器操作定义了不同的接口,来与容器类型适配。 1.1 顺序容器概览 所有的顺序容器都提供了快速访问元素的能力,但是这些容器在以下方面都有不同的性能折中

森森猪的博客 383

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

滴滴2016研发笔试题解析:覆盖字符串、数组、链表与动态规划

算法笔试中,字符串处理和动态规划是高频考点,也是区分候选人工程能力的关键。字符串的循环移位判断常通过拼接与子串匹配实现,数组划分依赖排序与双指针,链表反转需严格管理指针顺序,而动态规划则强调状态定义与转移方程推导。这些技术不仅用于面试解题,更直接对应订单匹配、路径规划等真实业务场景中的性能与边界处理需求。掌握边界条件、复杂度估算与代码健壮性,是提升笔试通过率的核心。本文以滴滴2016研发工程师笔试题为例,系统拆解各类题型的解题思路与易错点,帮助读者构建从原理到实战的算法知识框架。

weixin_30279671的博客 347

4.6、线程相关及函数

线程概念 一、编译 gcc xxxx -lpthread 二、线程就是用作多任务的处理的方式 1、在进程中资源都是独立的,系统在切换进程时开销很大(通过task_struct的结构体链表管理) 2、内核会为每个进程都创建task_struct,每个进程都独立的参与内核调度,相互没有干扰 3、 由上所诉,在linux中引入了一种轻量级进程(线程),在lnux中不太区分进程、线程;线程之间会共享一部分系统资源,在同一进程中,线程共享着空间地址,线程依附于进程的执行,进程执行后才会有线

feiffer·hu的博客 476

途虎养车2023秋招算法笔试试卷A考点复盘与备考策略

在算法岗位的笔试准备中,数据结构与机器学习基础是绕不开的两大核心。KMP算法、堆排序、Dijkstra、动态规划等经典考点,往往通过细节辨析与场景匹配来考察候选人的真正掌握程度。本文以途虎养车2023秋招算法笔试试卷A为例,系统梳理了这些高频考点的易错点,并结合粒子群优化、卡尔曼滤波等工程算法,分析了汽车后市场业务场景下的实际应用。通过复盘这套试卷的题型分布与出题逻辑,帮助读者建立从算法原理到工程实践的完整认知,为应对类似O2O平台算法岗笔试提供可复用的备考策略。

weixin_30892889的博客 319

作业3:深入理解Callback函数

整个lab5.2的代码文件主要分为三部分:主函数调用、接口定义、数据结构定义.cmenu.c。

Coisini667的博客 184

剑指offer快速回忆之面试中的各项能力

知识迁移能力、抽象建模能力、发散思维能力、树中俩节点的最低祖先、排序数组查找数字、排序数组数字出现字数、数组中唯一出现一次的数字、和为s的数字、和为s的序列、翻转单词、滑动窗口、约瑟夫环、求1加到n、不用加减乘除做加法、不用变量交换两个变量值、构建乘积数组

King_Of_Bird的博客 283

360校招笔试真题解析:C/C++内存与算法实战

在研发岗位的校招与社招中,C/C++语言基础、内存管理、数据结构与算法、操作系统和计算机网络始终是考察的核心。理解指针与数组的本质区别、sizeof与strlen的运行机制、static的多种作用以及内存对齐规则,是写出健壮代码的前提。同时,二叉树重建、KMP匹配、链表环检测等经典算法,不仅检验逻辑思维,更直接映射到工程实践中的性能与稳定性问题。而进程线程、死锁、TCP握手等系统知识,则是排查线上故障的必备技能。这些基础概念与原理,构成了软件工程师的技术底座,广泛应用于系统开发、网络编程和高并发场景。本文以

weixin_30920597的博客 293

常用算法总结

别人总结的算法面经:http://blog.youkuaiyun.com/yangcs2009/article/details/38140293一,算法基础O(..)表示复杂度小于等于数量级 ; o(...)表示复杂度小于数量级;复杂度数量级:n!>指数>幂>对数>常数;     复杂度大于等于指数的为NP问题。 二,分治策略适合分治策略的问题:该问题的规模缩小到一定的程度就可以容易地解决;该问题可以分解为若

Garfield的博客 711
上一篇: 操作系统进程的描述与控制习题
下一篇: 操作系统处理机调度与死锁知识点
ChoSeitaku
博客等级 码龄5年 3452粉丝 557原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值