<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BadSheepC]]></title><description><![CDATA[尽吾志也而不能至者，可以无悔矣，其孰能讥之乎？此余之所得也。]]></description><link>https://blog.youkuaiyun.com/Dejan520</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Dejan520]]></copyright><item><title><![CDATA[人类简史，从动物到上帝]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/129113681</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/129113681</guid><author>Dejan520</author><pubDate>Sun, 19 Feb 2023 19:34:50 +0800</pubDate><description><![CDATA[农业革命：赫拉利在本章节中的主要观点是：“尽管农业革命促进了智人人口数和小麦、牛等共同进化物种的数量的增长，但农业革命令智人及其驯化、豢养动物的生活方式及饮食变得更为单调无趣，使得绝大多数智人及豢养动物的生活质量，与智人狩猎采集社会时代相比，反而出现了恶化”。人类的融合统一：这一章节的主题则是智人在历史进程中，在政治与经济上逐渐走向融合与统一。科学革命：赫拉利认为起源于欧洲的科学革命，基于当时的精英们一种创新的观点：愿意承认人类的无知，并希望通过以观察和数学为中心的科学研究，补救他们的无知、获得新的能力。]]></description><category></category></item><item><title><![CDATA[小谈解决方案]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/129023971</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/129023971</guid><author>Dejan520</author><pubDate>Tue, 14 Feb 2023 11:52:41 +0800</pubDate><description><![CDATA[在具体细节中可能包括潜在需求的挖掘，市场竞争，客户需求的提取与引导，力争将客户已知需求有效提取，未知需求高效挖掘，将模糊的、抽象的需求变得具象化，可执行。根据客户需求或行业需求，设计解决方案及创新应用，在保证需求精准定位的前提下，确保方案的竞争力，打造行业创新项目的成功案例，理应以数据做背书，寻求定制化、科学化的可执行方案。每一份好的答卷，即是好的宣传，品牌效应在当前数字化的商业模式中已凸显出重要作用，让好的方案由点到面，继而将好的产品解决方案在各行业商业化落地，正向反馈层层递进。]]></description><category></category></item><item><title><![CDATA[【笔试必会】ACM输入输出练习（C++）一套搞定]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125817912</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125817912</guid><author>Dejan520</author><pubDate>Tue, 30 Aug 2022 23:59:02 +0800</pubDate><description><![CDATA[每组数据一行,每行的第一个整数为整数的个数n(1 ]]></description><category></category></item><item><title><![CDATA[HTTP1.0，1.1，2.0]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/126258485</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/126258485</guid><author>Dejan520</author><pubDate>Wed, 10 Aug 2022 01:00:26 +0800</pubDate><description><![CDATA[1996年5月，HTTP/1.0 版本发布，为了提高系统的效率，HTTP/1.0规定浏览器与服务器只保持短暂的连接，浏览器的每次请求都需要与服务器建立一个TCP连接，服务器完成请求处理后立即断开TCP连接，服务器不跟踪每个客户也不记录过去的请求。也就是说，老板可以同时下达多个命令，员工也可以收到了A请求和B请求，于是先回应A请求，结果发现处理过程非常耗时，于是就发送A请求已经处理好的部分， 接着回应B请求，完成后，再发送A请求剩下的部分。目前，主流的HTTP协议还是HTTP/1.1 和 HTTP/2。...]]></description><category></category></item><item><title><![CDATA[C++ STL 常见容器查找、删除和增添的时间复杂度]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125838254</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125838254</guid><author>Dejan520</author><pubDate>Sun, 17 Jul 2022 22:24:28 +0800</pubDate><description><![CDATA[上述四种容器采用哈希表实现，不同操作的时间复杂度为插入O(1)，最坏情况O(N)上述四种容器采用红黑树实现，红黑树是平衡二叉树的一种。容器的时间复杂度取决于其底层实现方式。查看O(1)，最坏情况O(N)删除O(1)，最坏情况O(N)插入O(logN)查看O(logN)删除O(logN)...]]></description><category></category></item><item><title><![CDATA[C++ nullptr 和 NULL用哪个初始化指针好？]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125805143</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125805143</guid><author>Dejan520</author><pubDate>Fri, 15 Jul 2022 15:10:53 +0800</pubDate><description><![CDATA[传统意义上来说，c++把NULL、0视为同一种东西，有些编译器将NULL定义为（（void*）0），有些将其定义为0.如果NULL被定义为0，func（NULL）会去调用voidfunc（int），这是不合理的。c++不允许直接将void*隐式的转化为其他类型，但是如果NULL被定义为（（void*）0），nullptr的类型为nullptr_t，能够隐式的转换为任何指针。所以引入nullptr，专门用来区分0、NULL。当编译char*p=NULL;NULL只好被定义为0。...]]></description><category></category></item><item><title><![CDATA[C++ static_cast、reinterpret_cast、const_cast 和 dynamic_cast 强制类型转换运算符]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125798337</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125798337</guid><author>Dejan520</author><pubDate>Fri, 15 Jul 2022 10:22:49 +0800</pubDate><description><![CDATA[C++将类型名作为强制类型转换运算符。C++引入了四种功能不同的强制类型转换运算符以进行强制类型转换static_cast、reinterpret_cast、const_cast和dynamic_cast。强制类型转换是有一定风险的，有的转换并不一定安全，如把整型数值转换成指针，把基类指针转换成派生类指针，把一种函数指针转换成另一种函数指针，把常量指针转换成非常量指针等。C++引入新的强制类型转换机制，主要是为了克服C语言强制类型转换的以下三个缺点。...]]></description><category></category></item><item><title><![CDATA[C++ template 模板详解]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125781824</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125781824</guid><author>Dejan520</author><pubDate>Thu, 14 Jul 2022 12:34:05 +0800</pubDate><description><![CDATA[在这里，type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。其中template和class是关键字，class可以用typename 关键字代替，在这里typename 和class没区别，括号中的参数叫模板形参，模板形参和函数形参很相像，模板形参不能为空。一但声明了模板函数就可以用模板函数的形参名声明类中的成员变量和成员函数，即可以在该函数中使用内置类型的地方都可以使用模板形参名。模板形参需要调用该模板函数时提供的模板实参来初始化模板形参...]]></description><category></category></item><item><title><![CDATA[return exit(0) exit(1) exit(-1) 区别]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125780403</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125780403</guid><author>Dejan520</author><pubDate>Thu, 14 Jul 2022 11:11:24 +0800</pubDate><description><![CDATA[exit（0）：正常运行程序并退出程序；exit（1）：非正常运行导致退出程序；exit（-1）：非正常运行导致退出程序，与1类似；return（）：返回函数，若在主函数中，则会退出函数并返回一值。详细说：  1. return返回函数值，是关键字；  exit 是一个函数。  2. return是语言级别的，它表示了调用堆栈的返回；而exit是系统调用级别的，它表示了一个进程的结束。
  3. return是函数的退出(返回)；exit是进程的退出。  4. return是C语言提供的，exit是操作系统]]></description><category></category></item><item><title><![CDATA[深刻理解 C++多态]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125775404</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125775404</guid><author>Dejan520</author><pubDate>Thu, 14 Jul 2022 00:18:47 +0800</pubDate><description><![CDATA[多态的定义简单来说就是使一条语句有多种状态。实现方式
多态的实现方式分为三块：重载、重写、重定义。下面我们来谈一谈他们各自的实现方式和实现原理。实现方式
重载是在同一作用域内（不管是模块内还是类内，只要是在同一作用域内），具有相同函数名，不同的形参个数或者形参类型。返回值可以相同也可以不同（在函数名、形参个数、形参类型都相同而返回值类型不同的情况下无法构成重载，编译器报错。这个道理很简单，在函数调用的时候是不看返回值类型的）。实现原理
重载是一种静态多态，即在编译的时候确定的。C++实现重载的方式是跟编译器]]></description><category></category></item><item><title><![CDATA[线程局部 thread_local[C++]]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125770245</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125770245</guid><author>Dejan520</author><pubDate>Wed, 13 Jul 2022 18:43:29 +0800</pubDate><description><![CDATA[thread_local变量是C++ 11新引入的一种存储类型。它会影响变量的存储周期(Storage duration)，C++中有4种存储周期：有且只有thread_local关键字修饰的变量具有线程周期(thread duration)，这些变量(或者说对象）在线程开始的时候被生成(allocated)，在线程结束的时候被销毁(deallocated)。并且每 一个线程都拥有一个独立的变量实例(Each thread has its own instance of the object)。 可以和 与]]></description><category></category></item><item><title><![CDATA[力扣 2.两数相加 989. 数组形式的整数加法 通用思想模板]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125741671</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125741671</guid><author>Dejan520</author><pubDate>Tue, 12 Jul 2022 14:07:41 +0800</pubDate><description><![CDATA[整数的 数组形式  num 是按照从左到右的顺序表示其数字的数组。例如，对于 num = 1321 ，数组形式是 [1,3,2,1] 。给定 num ，整数的 数组形式 ，和整数 k ，返回 整数 num + k 的 数组形式 。 思路：        没走完就填当前数，走完填0，        和 = 当前值A+当前值B+进位        迭代：进位 = 和/10 ；返回值当前位=和%10


 2. 两数相加给你两个 非空 的链表，表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的，并且每个]]></description><category></category></item><item><title><![CDATA[力扣54 59 2326 885 螺旋矩阵[中等](优雅解法)]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125731826</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125731826</guid><author>Dejan520</author><pubDate>Mon, 11 Jul 2022 22:05:19 +0800</pubDate><description><![CDATA[一文搞定螺旋矩阵类问题]]></description><category></category></item><item><title><![CDATA[力扣34在排序数组中查找元素的第一个和最后一个位置(二分法哈希表法)]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125623806</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125623806</guid><author>Dejan520</author><pubDate>Tue, 05 Jul 2022 17:33:22 +0800</pubDate><description><![CDATA[给你一个按照非递减顺序排列的整数数组 nums，和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target，返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。        思路：数组时有序的，所以可以使用二分法，在区间[i，j]中找到target第一次出现的位置(左边界)，和最后一次出现的位置(右边界)                                           左边界：由于是有序数组，从]]></description><category></category></item><item><title><![CDATA[力扣295.数据流的中位数[困难]]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125570941</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125570941</guid><author>Dejan520</author><pubDate>Sat, 02 Jul 2022 12:04:35 +0800</pubDate><description><![CDATA[中位数是有序列表中间的数。如果列表长度是偶数，中位数则是中间两个数的平均值。例如，[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构：


	解法一：堆实现（B大顶堆和S小顶堆分别存放小数、大数）        分析：使用优先队列保持有序结构，设元素总数为 N = m + n ，其中 m 和 n 分别为 S和 B 中的元素个数。


解法二：有序队列+双指针        我们把有序集合看作自动排序的数组，使用双指针指向有序集合中的中位]]></description><category></category></item><item><title><![CDATA[&1的用法]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/125570147</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/125570147</guid><author>Dejan520</author><pubDate>Sat, 02 Jul 2022 10:43:48 +0800</pubDate><description><![CDATA[其实这是判断n的奇偶性的小方法当n是偶数时候，二进制的末尾一定是0，那么&1的结果一定是false，同理当n是奇数时候，二进制末位一定是1，那么结果一定是true]]></description><category></category></item><item><title><![CDATA[int, long long, double 等数据类型的长度及范围整理]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/124837715</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/124837715</guid><author>Dejan520</author><pubDate>Wed, 18 May 2022 10:47:39 +0800</pubDate><description><![CDATA[（1）整数类型：byte、short、int、long
（2）小数类型：float、double
（3）字符类型：char
（4）布尔类型：boolean

先附上一个比较直观的表，长度表示字节:





byte: 字节 bit: 位

1. 短整型short：

  所占内存大小：2byte=16bit；

  所能表示范围：-32768~32767；(即-2^15~2^15-1)



2. 整型int：

  所占内存大小：4byte=32bit；

  所能表示范围：-21...]]></description><category></category></item><item><title><![CDATA[剑指 Offer 34. 二叉树中和为某一值的路径||力扣113. 路径总和 II]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/124790892</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/124790892</guid><author>Dejan520</author><pubDate>Mon, 16 May 2022 00:01:50 +0800</pubDate><description><![CDATA[给你二叉树的根节点 root 和一个整数目标和 targetSum ，找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。





分析：

    要找从根节点到叶子节点的数值和等于目标值，难免要遍历所有节点，使用深度优先遍历（DFS）,从头遍历到为，只要达到目标值就，存储为数组，遍历结束，即可返回结果

程序中使用了sum累减直至等于0区判断，也可以使用累加，达到目标值






class Solution {
public:
    vecto...]]></description><category></category></item><item><title><![CDATA[剑指 Offer 32 . 从上到下打印二叉树]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/124783644</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/124783644</guid><author>Dejan520</author><pubDate>Sun, 15 May 2022 22:55:04 +0800</pubDate><description><![CDATA[(1) 从上到下打印出二叉树的每个节点，同一层的节点按照从左到右的顺序打印。





分析：层序遍历


class Solution {
public:
    vector&lt;int&gt; levelOrder(TreeNode* root) {
        vector&lt;int&gt; res;
        if(root==nullptr) return res;
        queue&lt;TreeNode*&gt; que;
        que.push(root]]></description><category></category></item><item><title><![CDATA[剑指 Offer 28. 对称的二叉树 ||力扣101. 对称二叉树]]></title><link>https://blog.youkuaiyun.com/Dejan520/article/details/124782686</link><guid>https://blog.youkuaiyun.com/Dejan520/article/details/124782686</guid><author>Dejan520</author><pubDate>Sun, 15 May 2022 15:33:27 +0800</pubDate><description><![CDATA[给你一个二叉树的根节点 root ， 检查它是否轴对称。



分析：这个树是否为轴对称的，只需要检验，这棵树的左右子树是否是相同的即可


class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(root==nullptr)return true;
        return recur(root-&gt;left,root-&gt;right);
    }
   bool recur(TreeNode* .]]></description><category></category></item></channel></rss>