04 2019 档案
摘要:思路: 首先连接AD,BD,CD,SABC为三角形的面积,SABD为三角形ABD的面积,SACD....,SBCD....... 因此,若D在三角形则SABC = SABD + SACD + SBCD,若不等,则不在
阅读全文
摘要:char * strcpy( char *strDest, const char *strSrc ) { assert( (strDest != NULL) && (strSrc != NULL) ); char *address = strDest; while( (*strDest++ = * strSrc++) != ‘\0’ ); retur...
阅读全文
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路: (1
阅读全文
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路: 1、一个栈用来做push 2、另一个栈用来做pop 3、将push操作的栈的元素放入另一个栈中,实现先进先出 class Solution { public: void push(int node
阅读全文
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路: 1、首先找到根节点 2、确定根节点左右侧的左
阅读全文
摘要:题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 思路: 利用栈“先进后出”的性质,将链表的值存入到栈里,然后将栈里的值存入到构建好的容器里,最后打印容器。 class Solution { public: vector<int> printListFromTailToHe
阅读全文
摘要:题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路: 1、从前往后插入太复杂 2、从后往前插入较简单 class Solution { public: void replace
阅读全文
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 思路: 1、首先计算数组的行和列 2、判断数组是否为空 3、从题设可知输入的数组每行从左到右递增,
阅读全文
摘要:快速排序的思想: 在整个数列中,选取一个特征点,一般以数列的中心为该特征点,使其小于特征点的数放在特征点的左侧,大于特征点的数放在右侧。 (1)若特征点最左侧的数小于特征点,而特征点最右侧的数大于特征点,则左侧数右移一位,或右侧色数左移一位 (2)若此时左侧的数值大于特征点,而右侧的数字小于特征点,
阅读全文
摘要:冒泡排序原理 从第一个元素开始,与后面的元素一一比较,若第一个元素大于后面的元素,则位置互调,直到比较到最后的元素,此时该第一个元素应为最小的元素。之后,从第二个元素与后面的元素一一比较,若小于后者则位置互调,直到倒数第二个元素和第一个元素相比较,此时,该数列为递增数列。
阅读全文
摘要:什么是希尔排序? 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。 希尔排序原
阅读全文
摘要:KMP算法主要解决什么样的问题? KMP算法主要解决关键字搜索,也就是字符串匹配的这类问题。 给你两个字符串A和B,其中A字符串包含着B字符串,找到B字符串在A中的位置 如下面的两个字符串: str有两处包含ptr 分别在str的下标10,26处包含ptr。 算法说明: 一般匹配字符串时,我们从目标
阅读全文
摘要:1.递归反向输出字符串 2、用递归算法判断数组a[n]是否为一个递增数组 方法:记录当前最大的,并且判断当前的是否比这个还大,大则继续,否则返回false结束 3、实现strcmp 什么是Strcmp? 设这两个字符串为str1,str2, 若str1=str2,则返回零; 若str1<str2,则
阅读全文
摘要:#include using namespace std; int main() { /* 思路: 1、关于int指针,不可以直接往指针里传值 例:int *a = 400; 2、int* a; int b = 4; a = &b; 这是可以的,b将自己的地址写入到a里,然后*a指向b里的值,所以*a = 4; 3、关于字符串指针 字符串指针则可以直接进行 char* t = "chaars...
阅读全文
摘要:C++ 循环 有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式: 循环类型 C++ 编程
阅读全文
摘要:C++ 运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 算术运算符 下表显示了 C++ 支持的算术运算符。 假设变量 A 的值为 10,变量 B 的值为 20,
阅读全文
摘要:C++ 存储类 存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类: auto register static extern mutable thread_local (C++11) 从 C++ 11 开始,au
阅读全文
摘要:C++ 修饰符类型 C++ 允许在 char、int 和 double 数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。 下面列出了数据类型修饰符: signed unsigned long short 修饰符 signed、unsigned、long 和 shor
阅读全文
摘要:C++ 常量 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 整数常量 整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或
阅读全文
摘要:C++ 变量作用域 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称为形式参数。 在所有函数外部声明的变量,称为全局变量。 局部变量 在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或者代码
阅读全文
摘要:C++ 中的变量声明 变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。 当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就
阅读全文