![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
蔡泽基✔℡
不积跬步,无以至千里
展开
-
判断链表中环的入口节点
判断链表中环的入口节点要求给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。这个问题比较绕,原因是这是个数学循环问题,我们这里来做一个证明。假设链表全长为 m+n,其中 m 表示环入口之前的长度,n 表示环的长度,当两指针第一次相遇,这时候快指针一定已经饶了环一圈了,我们假设相遇的位置距离环入口k,此时有下列状态: distance(fast) = m + n + kdistance(slow) =原创 2021-12-18 23:45:13 · 614 阅读 · 0 评论 -
判断链表是否有环
判断链表是否有环要求给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。主要思想是双指针,让一个每次指针走一步,一个指针每次走两步,如果有环,那两个指针会相遇,如果没有环,那就最后运动到最后为空。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; *原创 2021-12-18 19:52:04 · 555 阅读 · 0 评论 -
斐波那契数列
斐波那契数列要求写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 2:输入:n = 5输出:5int fib(int n)原创 2021-12-18 16:41:00 · 350 阅读 · 0 评论 -
(推荐)进程详细讲解(二)
接下来有7000字的进程总结,让我们开始吧!!20.利用SIGCHLD 信号防止僵尸进程当发生以下两种情况时,父进程会收到该SIGCHLD信号:⚫ 当父进程的某个子进程终止时,父进程会收到 SIGCHLD 信号;⚫ 当父进程的某个子进程因收到信号而停止(暂停运行)或恢复时,内核也可能向父进程发送该信号。我们知道,子进程结束时,我们要回收子进程,避免僵尸进程的出现。子进程结束会产生一个SIGCHLD信号,然后我们用wait()来监控子进程是否结束,最后将其回收,回收完毕再再回到父进程自己的工作流程中原创 2021-12-17 22:36:31 · 523 阅读 · 0 评论 -
(推荐)进程的详细讲解(一)
什么是进程,急速了解进程!!原创 2021-12-17 22:29:17 · 772 阅读 · 0 评论 -
删除链表中重复的元素
删除链表中重复的元素存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]重复的都删除重点是:加入哑结点之后就可以使所有数据结点都有前驱结点,这样就会方便执行链表的一些操作struct ListNode* deleteDuplicates(struct ListNode* head){ if (!head) { //排除空链表的情况原创 2021-12-17 22:17:42 · 847 阅读 · 0 评论 -
反转单链表
反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]输入:head = []输出:[]反转链表的主要思想是:利用双指针,双指针一前一后,前面指针断开,指向新节点,然后移动双指针,以此往复直到遍历完链表。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode原创 2021-12-09 23:12:35 · 189 阅读 · 0 评论 -
无头指针输入删除目标节点
无头指针删除链表中的节点要求:请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */void deleteNode(struct ListN原创 2021-12-08 19:26:58 · 120 阅读 · 0 评论 -
C语言删除链表的倒数第N个节点
C语言删除链表的倒数第N个节点要求:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]解法:设置双指针,如果要删除第n个节点,就让一个指针比另外一个指针快n步/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */str原创 2021-12-08 19:17:13 · 1557 阅读 · 0 评论 -
循环移动数组
旋转数组给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]解法如下:void rotate(int* nums, int numsSize, int k){int i,lenth;int temp[numsSi原创 2021-12-08 11:32:38 · 151 阅读 · 0 评论 -
反转整数方法
反转整数给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。示例 :输入:x = 123输出:321int reverse(long int x){ long b=1; long temp=1; long resut=0; while(b!=0) { temp=x%10; //从个位开始取数 resut=resut*10+temp; //将取出来的数逐个相加原创 2021-12-08 11:02:39 · 269 阅读 · 0 评论 -
动态链表详解
链表目录:1.链表的简介2.链表的实现3.动态链表4.链表的插入和删除5.双链表1.链表的简介链表是一种常见的数据结构,我们经常会使用数组来存放数据,但使用数组时,要先指定数组的大小,如果向这个数组加入过多的元素,则会超出,导致无法保存数据;如果数据太小,又会非常浪费内存空间。所以,我们希望有一种存储方式,其储存的元素个数是不受限定的,当进行添加元素时,存储的个数也会增加,这种储存方式就是链表。在链表中,有一个头指针head变量,用这个指针变量保存第一个元素的地址,其中,这个元素包括两原创 2021-11-12 19:27:16 · 7314 阅读 · 1 评论 -
大创草稿图
指令语音下达口令模糊语音识别算法非指令的模糊语音过滤算法智能识别控制中心 语音识别模糊语音识别过滤算法二级指令类似词屏蔽算法屏蔽非指令语音语音识别控制中心雷达导航视觉识别执行任务激光雷达扫描激光雷达导航激光雷达制图控制中心语音下达口令模糊语音识别算法非指令的模糊语音过滤算法控制...原创 2020-04-10 14:34:48 · 269 阅读 · 0 评论 -
储存器介绍
学习笔记—(1)储存器介绍储存器分为RAM(易失性存储器)和ROM(非易失性存储器)Flash(非易失性存储器)这里分别介绍一下RAM、ROM、Flash(一)RAM (Random Access Memory)RAM在存储机制上,分为DRAM(动态存储器)和SRAM(静态存储器)1.1 DRAMDRAM之所称为动态存储器,是因为它需要定期刷新,对电容进行检查。它的存储机制就是电容有无...原创 2020-02-26 23:58:44 · 801 阅读 · 0 评论