<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SCUT_AUTO143的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SCUT_AUTO143</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SCUT_AUTO143]]></copyright><item><title><![CDATA[C++刷Leetcode 563.二叉树的梯度]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103482792</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103482792</guid><author>SCUT_AUTO143</author><pubDate>Tue, 10 Dec 2019 20:52:58 +0800</pubDate><description><![CDATA[给定一个二叉树，计算整个树的坡度。

一个树的节点的坡度定义即为，该节点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。

整个树的坡度就是其所有节点的坡度之和。

示例:

输入:
    1
   /  \
   2   3
输出: 1
解释:
结点的坡度 2 : 0
结点的坡度 3 : 0
结点的坡度 1 : |2-3| = 1
树的坡度 ...]]></description><category></category></item><item><title><![CDATA[C++刷Leetcode 783.二叉搜索树结点最小距离]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103448483</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103448483</guid><author>SCUT_AUTO143</author><pubDate>Sun, 08 Dec 2019 20:18:39 +0800</pubDate><description><![CDATA[给定一个二叉搜索树的根结点root, 返回树中任意两节点的差的最小值。

示例：

输入: root = [4,2,6,1,3,null,null]
输出: 1
解释:
注意，root是树结点对象(TreeNode object)，而不是数组。

给定的树 [4,2,6,1,3,null,null] 可表示为下图:

          4
        /   \
      2     ...]]></description><category></category></item><item><title><![CDATA[C++刷Leetcode 653.两数之和IV]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103433089</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103433089</guid><author>SCUT_AUTO143</author><pubDate>Sat, 07 Dec 2019 10:44:50 +0800</pubDate><description><![CDATA[给定一个二叉搜索树和一个目标结果，如果 BST 中存在两个元素且它们的和等于给定的目标结果，则返回 true。

案例 1:

输入: 
    5
   / \
  3   6
 / \   \
2   4   7

Target = 9

输出: True


案例 2:

输入: 
    5
   / \
  3   6
 / \   \
2   4   7

Target = 28
...]]></description><category></category></item><item><title><![CDATA[C++刷Leetcode 404.左叶子之和]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103388011</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103388011</guid><author>SCUT_AUTO143</author><pubDate>Thu, 05 Dec 2019 10:26:10 +0800</pubDate><description><![CDATA[计算给定二叉树的所有左叶子之和。

示例：


  3
 / \
 9 20
  / \
 15  7

在这个二叉树中，有两个左叶子，分别是 9 和 15，所以返回 24

题目链接https://leetcode-cn.com/problems/sum-of-left-leaves/


/**
 * Definition for a binary tree node....]]></description><category></category></item><item><title><![CDATA[C++刷Leetcode 437.路径总和III]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103387279</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/103387279</guid><author>SCUT_AUTO143</author><pubDate>Wed, 04 Dec 2019 15:23:04 +0800</pubDate><description><![CDATA[给定一个二叉树，它的每个结点都存放着一个整数值。

找出路径和等于给定数值的路径总数。

路径不需要从根节点开始，也不需要在叶子节点结束，但是路径方向必须是向下的（只能从父节点到子节点）。

二叉树不超过1000个节点，且节点数值范围是 [-1000000,1000000] 的整数。

示例：


root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
...]]></description><category></category></item><item><title><![CDATA[Python抽象基类及abc模块]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/100120950</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/100120950</guid><author>SCUT_AUTO143</author><pubDate>Wed, 28 Aug 2019 15:54:12 +0800</pubDate><description><![CDATA[一、抽象基类
抽象基类：abstract base class，缩写为abc，即对用abc模块
维基百科对抽象类的定义：
抽象类被定义为永远不会也不能被实例化为具体的对象。它往往用于定义一种抽象上的概念，在类的继承关系中它往往被定义在较上层的位置。在程序设计的实践活动中，抽象类与接口存在类似的地方，即它更偏重于对共通的方法和属性进行规约。但与接口存在一个非常大的差异则在于，抽象类往往可以规约一个共...]]></description><category></category></item><item><title><![CDATA[Python闭包]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/97965733</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/97965733</guid><author>SCUT_AUTO143</author><pubDate>Wed, 31 Jul 2019 21:35:25 +0800</pubDate><description><![CDATA[1.作用域
在理解Python闭包之前，需要理清Python的变量作用域，在Python3.x版本中，所有的变量作用域满足LEGB准则。既存在命名冲突时，按照LEGB顺序依次搜索变量。




L
Local




E
Enclosing


G
Global


B
Builtin


Enclosing是外部嵌套函数的名字空间， Python3中提供了一个 nonlocal关键字来修改外部嵌...]]></description><category></category></item><item><title><![CDATA[C语言字节对齐二]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/97674577</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/97674577</guid><author>SCUT_AUTO143</author><pubDate>Mon, 29 Jul 2019 20:23:22 +0800</pubDate><description><![CDATA[带有#pragmapack(n)指令情况下的字节对齐

根据百度百科的解释，编译器中提供了#pragmapack(n)来设定变量以n字节对齐方式。n字节对齐就是说变量存放的起始地址的偏移量有两种情况：第一、如果n大于等于该变量所占用的字节数，那么偏移量必须满足默认的对齐方式，第二、如果n小于该变量的类型所占用的字节数，那么偏移量为n的倍数，不用满足默认的对齐方式。结构的总大小也有个约束条件，分...]]></description><category></category></item><item><title><![CDATA[C文件读写（二）]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/97003357</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/97003357</guid><author>SCUT_AUTO143</author><pubDate>Wed, 24 Jul 2019 10:34:40 +0800</pubDate><description><![CDATA[六、rewind

void rewind(FILE * stream)，相当于调用fseek(stream, 0L, SEEK_SET)，把stream移动文件头

七、fgetc、fgets

int fgetc(FILE * stream)：从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF

char * fgets(char * s,int size,FIL...]]></description><category></category></item><item><title><![CDATA[C文件读写（一）]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/96973106</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/96973106</guid><author>SCUT_AUTO143</author><pubDate>Tue, 23 Jul 2019 16:05:43 +0800</pubDate><description><![CDATA[刷牛客网的C++专项练习时，遇到C文件读写的题目基本都是白给，这块知识是盲区。

c语言文件读写相关函数及文件指针FILE *的定义都在stdio.h头文件里，以下所有操作都需要#include &lt;stdio.h&gt;

一、fopen函数

FILE *fopen( const char *name，const char *mode )

fopen()返回的是一个文件指针，第一个参...]]></description><category></category></item><item><title><![CDATA[338.比特位计数]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/93174440</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/93174440</guid><author>SCUT_AUTO143</author><pubDate>Sat, 22 Jun 2019 15:43:14 +0800</pubDate><description><![CDATA[给定一个非负整数num。对于0 ≤ i ≤ num 范围中的每个数字i，计算其二进制数中的 1 的数目并将它们作为数组返回。

示例 1:

输入: 2
输出: [0,1,1]
示例2:

输入: 5
输出: [0,1,1,2,1,2]


class Solution:
    def countBits(self, num: int) -&gt; List[int]:
       ...]]></description><category></category></item><item><title><![CDATA[C语言字节对齐]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/92097214</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/92097214</guid><author>SCUT_AUTO143</author><pubDate>Sat, 15 Jun 2019 17:49:30 +0800</pubDate><description><![CDATA[在牛客刷C/C++题目时，遇到了很多结构体sizeof的问题，才发现自己不知道字节对齐这个知识点，这里恶补一波相关知识点。

1.定义（百度百科给出的定义）：

其实字节对齐的细节和具体编译器实现相关，但一般而言，满足三个准则：

1)结构体变量的首地址能够被其最宽基本类型成员的大小所整除；

2) 结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍，如有需要编译器会在成员之间加上填充...]]></description><category></category></item><item><title><![CDATA[侯捷《面向对象高级编程》笔记2]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/91354893</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/91354893</guid><author>SCUT_AUTO143</author><pubDate>Sun, 09 Jun 2019 17:19:33 +0800</pubDate><description><![CDATA[1.类有指针成员时，必须有拷贝构造、拷贝赋值函数
2.如果没有定义拷贝构造函数，当用户进行拷贝构造时，调用默认的拷贝构造函数，浅拷贝一个对象，后期如果修改其中一个，另一个也会被修改，另外拷贝的对象原来指向的内存就成了孤儿，内存泄漏了

3.拷贝赋值函数需要检测自我赋值，否则当用户自我赋值时会失败

4.stack,存在于某作用域的一块内存空间。调用函数，函数本身会形成一个stack来存放接收的参数...]]></description><category></category></item><item><title><![CDATA[侯捷《C++面向对象高级编程》1-6节笔记]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/91345768</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/91345768</guid><author>SCUT_AUTO143</author><pubDate>Sat, 08 Jun 2019 21:13:07 +0800</pubDate><description><![CDATA[1.总体来说，C++的类分为两大类，基于对象（object based）、面向对象（object oriented），区别是前者单一类，后者包含多种类（继承、组合、指派等）



2.类声明文件（.h）写上预编译语句，防止重复声明

有些IDE在.h文件时自带了这些语句，如CodeBlocks


#ifndef COMPLEX_H_INCLUDED
#define COMPLEX_H_INCL...]]></description><category></category></item><item><title><![CDATA[分治法与动态规划联系与区别]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/90723082</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/90723082</guid><author>SCUT_AUTO143</author><pubDate>Fri, 31 May 2019 21:49:51 +0800</pubDate><description><![CDATA[一、分治法

参考维基百科的定义，分治法采用循环递归的设计

在每一层递归上都有三个步骤：

分解：将原问题分解为若干个规模较小，相对独立，与原问题形式相同的子问题。
	解决：若子问题规模较小且易于解决时，则直接解。否则，递归地解决各子问题。
	合并：将各子问题的解合并为原问题的解。
典型的采用分治算法解决的问题有归并排序，一个python写的归并排序算法


def merge_list(l1,...]]></description><category></category></item><item><title><![CDATA[STL入门之容器]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/90672559</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/90672559</guid><author>SCUT_AUTO143</author><pubDate>Wed, 29 May 2019 16:53:26 +0800</pubDate><description><![CDATA[一、STL介绍

引用维基百科的介绍，标准模板库（英文：Standard Template Library，缩写：STL），是一个C++软件库，大量影响C++标准程序库但并非是其的一部分。 其中包含4个组件，分别为算法、容器、函数、迭代器。

二、容器

分顺序容器、关联容器两类

2.1 顺序容器

1.vector：可变大小数组，支持快速随机访问，在除尾部的其他地方插入或者删除元素可能都很慢
...]]></description><category></category></item><item><title><![CDATA[Python作用域]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89915606</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89915606</guid><author>SCUT_AUTO143</author><pubDate>Tue, 07 May 2019 11:57:56 +0800</pubDate><description><![CDATA[明确一点，一个变量的作用域总是在被赋值的地方所决定。能直接改变变量作用域的有def、class、lambda，if、while、for不能直接改变变量作用域。

一、LEGB准则（LNGB准则）

这里重点讨论def语句，我们定义的变量实际上只有三种不同的作用域：

在def内部赋值，它被定为在函数内部，为本地Local
	在一个嵌套的def中赋值，对于嵌套函数来说，它是非本地的Nonlocal
...]]></description><category></category></item><item><title><![CDATA[Python求解Josephus问题]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89813852</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89813852</guid><author>SCUT_AUTO143</author><pubDate>Sat, 04 May 2019 15:22:17 +0800</pubDate><description><![CDATA[问题描述：n个人围成一圈，从第k个人开始报数，报道第m个数的人退出。然后从下一个人开始继续报数，按同样规则退出，直到所有人退出。

这道题目在C语言的数据结构教程里，基本都是拿循环单链表做的。在Python中，也可以定义循环单链表解决，但是还有更简单的方法。参考裘宗燕老师的数据结构教程的方法。


def josephus_L(n, k, m):
    people = list(range(...]]></description><category></category></item><item><title><![CDATA[Python的拷贝与赋值]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89646915</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89646915</guid><author>SCUT_AUTO143</author><pubDate>Tue, 30 Apr 2019 10:32:04 +0800</pubDate><description><![CDATA[一、在python中，赋值操作实际上是对象的引用


a = '优快云'
b = a

实际上b和a共享了对'优快云'的引用，即


a is b

会得到True

二、浅拷贝

对于list


a = [1, 2]
b = a[:]

b实际上是对a的浅拷贝，浅拷贝相对于深拷贝而言，浅拷贝只能在第一层级复制对象


a.append(3)
print(a)
print(b)


[1,...]]></description><category></category></item><item><title><![CDATA[Python利用辗转相除法求两个整数最大公因子(gcd)]]></title><link>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89481728</link><guid>https://blog.youkuaiyun.com/SCUT_AUTO143/article/details/89481728</guid><author>SCUT_AUTO143</author><pubDate>Tue, 23 Apr 2019 21:37:06 +0800</pubDate><description><![CDATA[最近看北大裘宗燕编写的Python数据结构书时，看到了一个很好的gcd函数定义方法


    def gcd(m, n):
        if not isinstance(m, int) or not isinstance(n, int):
            raise TypeError
        if n == 0:
            m, n = n, m
     ...]]></description><category></category></item></channel></rss>