<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DrLinShu的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/DrLinShu</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; DrLinShu]]></copyright><item><title><![CDATA[浅谈Unity 碰撞机Collider的一些使用心得]]></title><link>https://blog.csdn.net/DrLinShu/article/details/124641306</link><guid>https://blog.csdn.net/DrLinShu/article/details/124641306</guid><author>DrLinShu</author><pubDate>Sat, 07 May 2022 23:41:34 +0800</pubDate><description><![CDATA[1.查看物体的尺寸以及碰撞组件的检测范围

以BOX Collider为例，首先创建一个Cube，Scale = （1，1，1）





这里的Scale是localScale，可以通过打印查看


Vector3 size = transform.localScale;
Debug.Log("localScale" + size.ToString());



注意，当该Cube挂载在某个父物体中，由于父物体可能存在缩放，所以该子物体的Scale是相对于父物体，不是真实尺寸，此时子物体的尺寸要通过los]]></description><category></category></item><item><title><![CDATA[算法备忘录~二分法搜索旋转排序数组的元素]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119947460</link><guid>https://blog.csdn.net/DrLinShu/article/details/119947460</guid><author>DrLinShu</author><pubDate>Fri, 27 Aug 2021 11:00:03 +0800</pubDate><description><![CDATA[题目：81. 搜索旋转排序数组 II

已知存在一个按非降序排列的整数数组 nums ，数组中的值不必互不相同。

在传递给函数之前，nums 在预先未知的某个下标 k（0 &lt;= k &lt; nums.length）上进行了 旋转 ，使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]（下标 从 0 开始 计数）。例如， [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4]]></description><category></category></item><item><title><![CDATA[算法备忘录~翻转单词顺序]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119864225</link><guid>https://blog.csdn.net/DrLinShu/article/details/119864225</guid><author>DrLinShu</author><pubDate>Mon, 23 Aug 2021 11:09:23 +0800</pubDate><description><![CDATA[题目：剑指 Offer 58 - I. 翻转单词顺序

输入一个英文句子，翻转句子中单词的顺序，但单词内字符的顺序不变。为简单起见，标点符号和普通字母一样处理。例如输入字符串"I am a student. "，则输出"student. a am I"。

示例 1：

输入: "the sky is blue"
输出:"blue is sky the"

示例 2：

输入: " hello world! "
输出:"world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格，...]]></description><category></category></item><item><title><![CDATA[算法备忘录~滑动窗口求解和为s的连续正数序列]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119858439</link><guid>https://blog.csdn.net/DrLinShu/article/details/119858439</guid><author>DrLinShu</author><pubDate>Sun, 22 Aug 2021 21:45:29 +0800</pubDate><description><![CDATA[题目：

剑指 Offer 57 - II. 和为s的连续正数序列

输入一个正整数 target ，输出所有和为 target 的连续正整数序列（至少含有两个数）。

序列内的数字由小到大排列，不同序列按照首个数字从小到大排列。

示例 1：

输入：target = 9
输出：[[2,3,4],[4,5]]

示例 2：

输入：target = 15
输出：[[1,2,3,4,5],[4,5,6],[7,8]]

限制：

1 &lt;= target &lt;= 10^5

思路：滑动窗口

滑动窗]]></description><category></category></item><item><title><![CDATA[算法备忘录~求最大公约数和最小公倍数]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119811511</link><guid>https://blog.csdn.net/DrLinShu/article/details/119811511</guid><author>DrLinShu</author><pubDate>Thu, 19 Aug 2021 21:51:13 +0800</pubDate><description><![CDATA[题目：

    给定两个数，求两者的最大公约数和最小公倍数

示例：



思路：

    对于最大公约数的求解有多种方法，这里仅提出一种，以下部分图文参考了

chen_zan_yu_大佬的求最大公约数的三种方法中的辗转相除法，仅作为学习使用

    对于最小公倍数，它与最大公约数的乘机为所求数之积。即

x*y=最小公倍数*最大公约数

    因此，题目转化为只要求解出最大公约数，即可求解出最小公倍数

辗转相除法：




#include &lt;iostre...]]></description><category></category></item><item><title><![CDATA[算法备忘录~判断是否为素数]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119811121</link><guid>https://blog.csdn.net/DrLinShu/article/details/119811121</guid><author>DrLinShu</author><pubDate>Thu, 19 Aug 2021 21:22:32 +0800</pubDate><description><![CDATA[题目：

    编写一个函数，判断一个数是否为素数，并返回结果

素数定义：（质数prime number）定义为在大于1的自然数中，除了1和它本身以外不再有其他因数，素数有无穷多个。

思路1：

    用目标数依次对从2 ~ n-1遍历的每个数作取余操作（注意不包括1和其本身），如果取余结果为零，说明存在其他的因数，返回false

思路1代码实现：

时间复杂度 O(n）


int isPrime(int k)
{
    int j;
    for ( j=...]]></description><category></category></item><item><title><![CDATA[算法备忘录~翻转单链表（ACM模式）]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119810843</link><guid>https://blog.csdn.net/DrLinShu/article/details/119810843</guid><author>DrLinShu</author><pubDate>Thu, 19 Aug 2021 20:59:54 +0800</pubDate><description><![CDATA[题目：

定义一个函数，输入一个链表的头结点，反转该链表并输出反转后链表的头结点

    链表结构


typedef struct Node
{
	int val;
	struct Node* next;
}pNode;

示例：



核心代码：


while(curNode)
	{
		pNode* nextNode = curNode-&gt;next;//先保存当前结点的下一个结点地址
		curNode-&gt;next = preNode;//修改当...]]></description><category></category></item><item><title><![CDATA[算法备忘录~删除单链表第K个结点（ACM模式）]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119810589</link><guid>https://blog.csdn.net/DrLinShu/article/details/119810589</guid><author>DrLinShu</author><pubDate>Thu, 19 Aug 2021 20:42:10 +0800</pubDate><description><![CDATA[题目：

删除一个链表的第K个结点，在ACM模式下需要自行创建链表，相对于leetcode来说有所不同，记录一下，整体不难，后续有空再来完善。

注意事项：

k = 1时需要删除头节点
	k 大于链表长度时不删除，报错
代码实现：


#include&lt;iostream&gt;

using namespace std;

typedef struct Node
{
	int val;
	struct Node* next;
}pNode;

int k;

pNode* Input...]]></description><category></category></item><item><title><![CDATA[算法备忘录~计数排序]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119717840</link><guid>https://blog.csdn.net/DrLinShu/article/details/119717840</guid><author>DrLinShu</author><pubDate>Sun, 15 Aug 2021 18:46:55 +0800</pubDate><description><![CDATA[01 计数排序算法概念

计数排序不是一个比较排序算法，该算法于1954年由 Harold H. Seward提出，通过计数将时间复杂度降到了O(N)。


02 基础版算法步骤

第一步：找出原数组中元素值最大的，记为max。

第二步：创建一个新数组count，其长度是max加1，其元素默认值都为0。

第三步：遍历原数组中的元素，以原数组中的元素作为count数组的索引，以原数组中的元素出现次数作为count数组的元素值。

第四步：创建结果数组result，起始索引index。

第五步：遍历co.]]></description><category></category></item><item><title><![CDATA[算法备忘录~单调栈解决接雨水和柱状图最大矩形两大问题]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119703632</link><guid>https://blog.csdn.net/DrLinShu/article/details/119703632</guid><author>DrLinShu</author><pubDate>Sat, 14 Aug 2021 18:51:21 +0800</pubDate><description><![CDATA[单调栈:



单调栈中存放的数据是有序的，可分为单调递增栈和单调递减栈

单调递增栈：单调递增栈就是从栈底到栈顶数据是从大到小
	单调递减栈：单调递减栈就是从栈底到栈顶数据是从小到大
典型应用1：接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。

示例 1：



输入：height = [0,1,0,2,1,0,1,3,2,1,2,1]
	输出：6
	解释：上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情]]></description><category></category></item><item><title><![CDATA[vim 复制/剪切/粘贴/撤销操作]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119684495</link><guid>https://blog.csdn.net/DrLinShu/article/details/119684495</guid><author>DrLinShu</author><pubDate>Fri, 13 Aug 2021 21:43:39 +0800</pubDate><description><![CDATA[【背景知识】

vim 有 12 个粘贴板，分别是 0、1、2、...、9、a、“、＋；用 :reg 命令可以查看各个粘贴板里的内容。在 vim 中简单用 y 命令只是复制到 "（双引号）粘贴板里，同样用 p 命令粘贴的也是这个粘贴板里的内容；
要将 vim 的内容复制到某个粘贴板，需要先退出编辑模式，再进入命令模式后，选择要复制的内容，然后按 "Ny（注意带引号）完成复制，其中 N 为粘贴板号（注意是按下 双引号 + 粘贴板号 + y），例如要把内容复制到粘贴板 a，选中内容后按 "ay 就可以了，有 2]]></description><category></category></item><item><title><![CDATA[算法备忘录~接雨水（动态规划）]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119670715</link><guid>https://blog.csdn.net/DrLinShu/article/details/119670715</guid><author>DrLinShu</author><pubDate>Fri, 13 Aug 2021 14:13:34 +0800</pubDate><description><![CDATA[题目

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。

示例 1：



输入：height = [0,1,0,2,1,0,1,3,2,1,2,1]
	输出：6
	解释：上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图，在这种情况下，可以接 6 个单位的雨水（蓝色部分表示雨水）。
示例 2：

输入：height = [4,2,0,3,2,5]
	输出：9
思路1:动态规划

1、沿Y轴按列计算，这样宽度为1，求面积只需要求]]></description><category></category></item><item><title><![CDATA[算法备忘录~计算二进制中1的个数]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119648207</link><guid>https://blog.csdn.net/DrLinShu/article/details/119648207</guid><author>DrLinShu</author><pubDate>Thu, 12 Aug 2021 18:23:29 +0800</pubDate><description><![CDATA[题目

编写一个函数，输入是一个有符号整数（以二进制串的形式），返回其二进制表达式中数字位数为 '1' 的个数（也被称为汉明重量）。

示例 1：

输入：00000000000000000000000000001011
输出：3
解释：输入的二进制串 00000000000000000000000000001011中，共有三位为 '1'。
示例 2：

输入：00000000000000000000000010000000
输出：1
解释：输入的二进制串 000000000000000000000000.]]></description><category></category></item><item><title><![CDATA[指针常量和常量指针的区别]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119605626</link><guid>https://blog.csdn.net/DrLinShu/article/details/119605626</guid><author>DrLinShu</author><pubDate>Wed, 11 Aug 2021 14:24:30 +0800</pubDate><description><![CDATA[指针常量
指针常量：顾名思义它就是一个常量，但是是指针修饰的。
格式为：


int * const p;//指针常量


在这个例子下定义以下代码：


int a,b;
int * const p=&amp;a; //指针常量
//那么分为一下两种操作
*p=9;//操作成功
p=&amp;b;//操作错误


因为声明了指针常量，说明指针变量不允许修改。如同次指针指向一个地址该地址不能被修改，但是该地址里的内容可以被修改

常量指针
常量指针：如果在定义指针变量的时候，数据类型前用const修饰，被定]]></description><category></category></item><item><title><![CDATA[算法备忘录~顺时针打印矩阵]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119569505</link><guid>https://blog.csdn.net/DrLinShu/article/details/119569505</guid><author>DrLinShu</author><pubDate>Tue, 10 Aug 2021 15:28:07 +0800</pubDate><description><![CDATA[剑指 Offer 29. 顺时针打印矩阵

输入一个矩阵，按照从外向里以顺时针的顺序依次打印出每一个数字。

示例 1：

输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出：[1,2,3,6,9,8,7,4,5]
示例 2：

输入：matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出：[1,2,3,4,8,12,11,10,9,5,6,7]


限制：

0 &lt;= matrix.length &lt;= 100
0 &lt;=..]]></description><category></category></item><item><title><![CDATA[算法备忘录~栈和队列的相互实现]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119508208</link><guid>https://blog.csdn.net/DrLinShu/article/details/119508208</guid><author>DrLinShu</author><pubDate>Sun, 08 Aug 2021 09:54:37 +0800</pubDate><description><![CDATA[1、两个栈实现一个队列



思路：

    一个栈作为输入栈，一个栈作为输出栈，入队的时候压进输入栈，出队的时候要颠倒一下顺序，因此判断输出栈是否为空，为空的话就先把输入栈的数据弹出压进输出栈，然后从输出栈弹出数据，即为先进先出的顺序。

代码实现：


class MyQueue {
public:
    stack&lt;int&gt; stIn;
    stack&lt;int&gt; stOut;
    /** Initialize your data structure here...]]></description><category></category></item><item><title><![CDATA[算法备忘录~双指针找环入口]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119481984</link><guid>https://blog.csdn.net/DrLinShu/article/details/119481984</guid><author>DrLinShu</author><pubDate>Sat, 07 Aug 2021 11:20:05 +0800</pubDate><description><![CDATA[第142题.环形链表II

题意：给定一个链表，返回链表开始入环的第一个节点。如果链表无环，则返回 null。

为了表示给定链表中的环，使用整数 pos 来表示链表尾连接到链表中的位置（索引从 0 开始）。

如果 pos 是 -1，则在该链表中没有环。

「说明」：不允许修改给定的链表。



思路

这道题目，不仅考察对链表的操作，而且还需要一些数学运算。

主要考察两知识点：


	判断链表是否环
	
	
	如果有环，如何找到这个环的入口
	
判断链表是否有环

可以使用快慢指针法， 分别定义 ..]]></description><category></category></item><item><title><![CDATA[算法备忘录~双指针逆序移除元素（接近满分）]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119479490</link><guid>https://blog.csdn.net/DrLinShu/article/details/119479490</guid><author>DrLinShu</author><pubDate>Sat, 07 Aug 2021 10:34:39 +0800</pubDate><description><![CDATA[27. 移除元素

给你一个数组 nums和一个值 val，你需要 原地 移除所有数值等于val的元素，并返回移除后数组的新长度。

不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。



说明:

为什么返回数值是整数，但输出的答案是数组呢?

请注意，输入数组是以「引用」方式传递的，这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也...]]></description><category></category></item><item><title><![CDATA[linux系统编程~gcc、vim、make使用]]></title><link>https://blog.csdn.net/DrLinShu/article/details/119423819</link><guid>https://blog.csdn.net/DrLinShu/article/details/119423819</guid><author>DrLinShu</author><pubDate>Thu, 05 Aug 2021 18:04:49 +0800</pubDate><description><![CDATA[1、gcc、vim、make使用

（1）gcc和vim的安装

（2）编辑器vim的使用

要保存需要root权限，需要切换账户，su root ,然后输入密码123或123456

①vim基础使用

例如切换模式





②vim配置脚本

vim的功能可以通过修改配置文件实现，例如缩进距离，历史指令记录数等等，建议是先复制一份到家目录中，然后再修改，这样的话不至于对所有用户产生影响


cp /etc/vimrc ~/.vimrc
​
 vim ~/.vimrc

③vim的一些便携式操作



]]></description><category></category></item><item><title><![CDATA[计算机网络~Ping命令工作原理详解]]></title><link>https://blog.csdn.net/DrLinShu/article/details/118943514</link><guid>https://blog.csdn.net/DrLinShu/article/details/118943514</guid><author>DrLinShu</author><pubDate>Tue, 20 Jul 2021 20:30:50 +0800</pubDate><description><![CDATA[Ping命令的应用与原理

ping 是基于ICMP协议工作的，所以要明白 ping 的工作，首先我们先来熟悉ICMP 协议。

ICMP 全称是Internet Control Message Protocol，也就是互联网控制报文协议。ICMP主要的功能包括：确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。



ICMP 报文是封装在 IP 包里面，它工作在网络层，是 IP 协议的助手。...]]></description><category></category></item></channel></rss>