- 博客(24)
- 收藏
- 关注
原创 网络是怎样连接的--探索协议栈和网卡
操作系统内部包括协议栈,是哪个半部分分为TCP和UDP,这俩区别就是浏览器、邮件等一般应用收发数据用TCP;DNS查询这种比较短的数据用UDP。 下面就是IP模块,IP协议控制网络包收发,在互联网发送数据时,数据会被切割成一小块网络包的形式,然后由IP模块发送给通信对象。 IP模块中的ICMP和ARP协议,ICMP用于告知网络包传输过程中发生的错误及各种控制信息;ARP根据IP地址查询以太网mac地址。 协议栈内部有一块存放控制信息的内存空间,记录了例如通信对象的IP,端口号,进行状态等控制通
2022-11-07 14:59:00
1520
15
原创 数据结构与算法--动态规划1
动态规划(Dynamic Programming,简称DP) 的一般问题就是求最值,求解动态规划的核心问题是穷举,既然要找到最值,就把所有情况列举出来,但是呢动态规划不是暴力穷举,你需要优化穷举。 所有的动态规划问题都是由上一个状态来推导下一个状态,这跟贪心算法不一样,贪心是根据局部最优推出全局最优,贪心没有状态推导。 动态规划的做题步骤力扣题目链接思路:直接根据做题步骤来: 1.确定dp数组以及下标的含义 2. 确定递推公式 3. dp数组的初始化问题 4.确定遍历顺序 5.
2022-10-28 21:58:10
615
22
原创 数据结构与算法--回溯算法(组合问题全解+模板方法)
如下图所示,就是标准的回溯问题图解也就是穷举每种情况,假如每次是找到两个数为子集的情况以此为例子,回溯问题也有模板方法。
2022-10-19 14:29:48
643
17
原创 代码随想录day4 链表
力扣题目链接解题思路:用虚拟头节点的方法,定义一个虚拟头节点,初始化的时候指向head,然后开始遍历,将虚拟头节点指向head.next,然后再将head.next指向head,最后再将head指向head.next.next,如下图所示 详细代码如下:二、删除链表中倒数第n个节点力扣题目链接详细解题思路:先定义一个虚拟头节点dummyhead指向head,再定义俩指针fast,slow,最初的位置都在虚拟头节点的位置,然后先将fast向前移动n+1个位置,然后再将fast和slow同时向后移动
2022-10-02 12:31:05
452
原创 代码随想录day3 链表
2.双链表,如下图所示,双链表和单链表不一样,双链表每个节点包括两个指针域和一个数据域,指针一个向前一个向后,而且双链表的头节点和尾部的节点都会指向null。3.循环链表,由这名字就能想到是啥样子,就是链表的头节点和尾节点是相连的,与单链表的结构类似,也就是单链表最后的节点指向了头节点。
2022-09-30 23:26:29
443
原创 数组----长度最小的子数组(leetcode209)和螺旋矩阵(59)
[2,3,1,2,4,3],以此为例,设置上下两个标记i,j。j表示结尾的标记,i表示开头的标记,一轮向后移动一次,类似于双指针法,请看示例一,最开始i,j都标记在nums【0】的位置,然后判断将j移动过的位置的和加起来大于等于target时,满足条件,可以先将这个长度与max进行比较然后等到最后一轮,注意,第二轮的时候sums要减去nums【i】i,详细如下图所示
2022-09-27 17:51:20
109
1
原创 数组---移除元素详解(leetcode 27)
双指针法即快慢指针法,定义一个快指针fast和一个慢指针slow,快指针对应的是新数组的元素值,慢指针对应的是新数组的索引位置,建立循环,当fast对应的值与val目标值不相等时,就使nums【slow】=nums[fast].然后slow++你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。你不需要考虑数组中超出新长度后面的元素。
2022-09-26 20:15:43
221
1
原创 数组---二分查找详解
左闭右开也就是说把需要查找的目标值target定义在【left,right)的区间范围里面,也就是说left==right是没有意义的,左闭右开与左闭右闭的不同之处如后,在if(targetnums[mid])的时候,left还是等于mid+1;如果xa[n/2],则只要在数组a的右半部搜索x. 时间复杂度即是while循环的次数。
2022-09-21 22:28:22
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人