自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 P187剑指offer:面试题35:复杂链表的复制

面试题35:复杂链表的复制请复制一个复杂链表。在复杂链表中,每个节点除了有一个m _pNext指针指向下一个节点,还有一个m_pSibling指针指向链表中的任意节点或者nullptr。力扣链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/class Solution{public: Node* copyRandomList(Node* head) { if(head==NULL.

2021-03-20 22:22:01 81

原创 【刷题】P187剑指offer:面试题36:二叉搜索树与双向链表

面试题36:二叉搜索树与双向链表输入一棵二叉搜索树,将该二又搜索树转换成一个排序的双向 链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。力扣链接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof/submissions/class Solution{public: Node* copyRandomList(Node* head) { if(head==NULL) .

2021-03-20 21:57:57 89

原创 P174剑指offer:层序遍历二叉树II:分行打印 P176:之字形打印二叉树

层序遍历二叉树II:分行打印二叉树从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。// 变量toBePrinted表示在当前层中还没有打印的节点数// 变量nextLevel表示下一层节点的数目void Print(BinaryTreeNode* pRoot){ if(pRoot == nullptr) return; std::queue<BinaryTreeNode*> nodes; nodes.push(p.

2021-03-19 22:25:12 109

原创 P127剑指offer:面试题20:表示数值的字符串

面试题20:表示数值的字符串:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+100”、“5e2”、“-123”、“3.1416”及“1e-16”都表示数值,但“12e”、“1a3.14”、“1.2.3”、“+5”及“12e+5.4”都不是。bool scanUnsignedInteger(const char** str);bool scanInteger(const char** str);// 数字的格式可以用A[.[B]][e|EC]或者.B[e|EC]表示.

2021-03-18 09:57:28 55

原创 P110剑指offer:位运算:面试题16:数值的整数次方

面试题16:数值的整数次方题目:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。全面但不够高效的代码// 全局变量:判断返回值是否为异常值// 比如返回值0.0// ( base==0.0 && exponent<0 )属于异常情况bool g_InvalidInput = false;// 判断两个浮点数是否相等,不能使用"=="bool equa

2021-03-17 15:38:42 86

原创 如何判断两个浮点数是否相等:绝对误差 + 相对误差

不能用等号判断两个小数是否相等bool isEqual(const double a, const double b){ const eps_0 = 1.0e-6, rel_error = 10e-4; bool isEqualFlag = FALSE; if(fabs(a-b)<=eps_0) { isEqualFlag = TRUE; } else{ if(fabs(a) >= 1000.0) .

2021-03-17 11:07:23 1947

原创 P94剑指offer:动态规划与贪婪算法:面试题14:剪绳子

动态规划与贪婪算法可以应用动态规划求解的问题具备以下三个特点:1、求一个问题的最优解2、整体问题的最优解是依赖各个子问题的最优解3、把大问题分解成若干个小问题,这些小问题之间还有相互重叠的更小的子问题4、从上往下分析问题。从下往上求解问题。这是由于子问题在分解大问题的过程中重复出现,为了避免重复求解子问题,我们可以用从下往上的顺序先计算小问题的最优解并存储下来,再以此为基础求取大问题的最优解。面试题14:剪绳子题目:给你一根长度为n的绳子,请把绳子剪成m段(m, n都是整数,n &g

2021-03-16 21:39:15 96

原创 P89剑指offer:回溯法:面试题12:矩阵中的路径(详解)

题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格 那么该路径不能再次进入该格子。#include <cstdio>#include <string>#include <stack>using namespace std;// 判断矩阵内当前字符是否为路径中对应的字符bool hasPathCore(const c.

2021-03-16 16:33:12 127

原创 使用 char* p = new char[100]申请一段内存,然后使用delete p释放,有什么问题?

使用 char* p = new char[100]申请一段内存,然后使用delete p释放,有什么问题?A.会有内存泄露B.不会有内存泄露,但不建议用C.编译就会报错,必须使用delete []pD.编译没问题,运行会直接崩溃分析:当用delete来释放用new int[]申请的内存空间时,由于其为基本数据类型没有析构函数,所以使用delete与delete []相同,两者都会释放申请的内存空间若是自定义的数据类型,有析构函数时,用new []申请的空间,必须要用delete []来释放

2021-03-16 09:15:04 3653

原创 C++的动态分配和静态分配:没有静态分配的堆

动态内存分配指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。动态内存分配相对于静态内存分配的特点1、不需要预先分配存储空间2、分配的空间可以根据程序的需要扩大或缩小内存的静态分配和动态分配的区别1、时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。2、空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配

2021-03-16 08:59:16 264

原创 C语言:生成随机数(并非固定的随机数)——rand()、srand()

C语言入门:生成随机数1.rand() 函数2.srand() 函数3.生成一定范围内的随机数在实际编程中,我们经常需要生成随机数。1.rand() 函数在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:int rand (void);rand() 会随机生成一个位于 0 ~ RAND_MAX 之间的整数。RAND_MAX 是 <stdlib.h> 头文件中的一个宏,它用来指明 rand() 所能返回的随机数的最大

2021-03-14 10:45:40 84455 2

原创 【编程】C++入门:static 全局区(静态区)什么时候释放?

static 全局区(静态区)什么时候释放?静态局部变量在程序开始执行的时候就始终存在,也就是说它的生命期为整个源程序。静态局部变量的生命期虽然为整个源程序,但是其作用域仍与自动变量相同。静态局部变量的初始化是在编译时进行的。在定义时用常量或者常量表达式进行赋值。未赋值编译时系统自动赋值为0静态局部变量具有可继承性。...

2021-03-08 10:29:38 3449

原创 【编程】数据结构入门:快速排序(递归3种、非递归1种)归并排序(递归、非递归)

快速排序(递归3种)// Pointer排序——快速排序int ReferencePositionPointer(int* arr, int begin, int end){ int prev = begin; int cur = begin + 1; int refvalue = arr[begin]; while (cur <= end) { if (arr[cur] < refvalue && ++prev != cur) { Swap(arr

2021-03-04 09:09:54 98 1

原创 P74剑指offer:斐波那契数列——递归、循环、矩阵解法 拓展:青蛙跳台阶问题

P74剑指offer面试题10:斐波那契数列写一个函数,输入n,求斐波那契数列的第n项。递归解法:优点:代码简洁缺点:重复计算太多,代码效率不高// C语言代码// 迭代解法long long Fibonacci_iteration(unsigned n){ if (n <= 0) return 0; if (n == 1) return 1; return Fibonacci_iteration(n - 1) + Fibonacci_iteration(n - 2);

2021-03-03 16:21:25 161 1

原创 【编程】数据结构入门:二叉树前、中、后、层序遍历(迭代非递归方法)

前序遍历:对于每一个节点,最先访问的是以此节点开始的最左路径。对于每一个树,最先访问的右子树是在访问左路径是最后遇到的右子树。左边的节点访问:自上而下右边的节点访问:自下而上利用“数据结构——栈”来实现迭代前序遍历访问每一个节点开始的最左路径,访问到的每一个节点入栈最左路径访问完成之后,获取栈顶元素,继续访问以栈顶元素的右子树为根的子结构,继续执行第一步结束:栈为空 && 右子树为空...

2021-03-02 22:27:56 67

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除