- 博客(29)
- 收藏
- 关注
原创 C++剑指offer——从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解法解题思路:借助队列。1、初始化:一个队列queue<TreeNode*> q, 将root节点入队列q2、如果队列不空,做如下操作:3、弹出队列头,保存为node,将node的左右非空孩子加入队列4、重复2,3步骤,知道队列为空时间复杂度:O(N),二叉树的每个节点访问一次空间复杂度:O(N),二叉树的每个节点入队列代码:/*struct TreeNode { int val; struct TreeN
2020-06-01 19:57:36 314
原创 Vue入门——用Vue创建一个HelloWorld
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统!如何创建HelloWorld程序Step1:创建一个id为app的div标签<div id="app"></div>Step2:在div当中用左右为双括号的方式声明一个变量message。<div id="app"> {{message}}</div>上述两步是vue.js最常见的一种文本查值的方式。Step3:在sricpt脚本中创建vue实例(对象
2020-06-01 12:34:20 3328 3
原创 HBuilder X的下载与安装及Vue的安装与部署
HBuilder X的下载与安装下载Step1:打开HBuilder X下载的官网,地址http://www.dcloud.io/hbuilderx.htmlStep2:进入下面的界面,点击DOWNLOAD之后选择要下载的版本,这里选择Windows-开发版,因为标准版有些插件没有安装好。见下图:然后开始下载,网速ok的话应该很快下载好了。安装找到下载好的压缩包->解压缩->找到HBuilder X.exe即可运行应用->创建桌面快捷方式解压后找到HBuilder
2020-06-01 10:30:17 6046
原创 C++剑指offer——栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解法我的解法:借助临时栈新建一个栈,将数组A压入栈中,当栈顶元素等于数组B时,就将其出栈,当循环结束时,判断栈是否为空,若为空则返回true。代码:class Solution {publ
2020-05-31 20:13:08 185
原创 C++剑指offer——包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。解法方法:使用辅助栈push操作就如图片上操作。pop操作直接对应弹出就好了。top操作就返回normal的栈顶min操作就返回minval的栈顶时间复杂度:O(1)空间复杂度:O(N)代码:class Solution {public: stack<int> s1
2020-05-30 15:30:46 193
原创 C++剑指offer——顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解法解法一:暴力法我做得比较复杂,设了一个标志数组visit,从头遍历,碰到没有被访问过的点就以他为开始,开始顺时针走一遍。这里面有四条边,所以涉及四个循环。循环的结束条件当然是越界或者碰到已经被访问过的。时间复杂度:O(N
2020-05-29 12:15:12 161
原创 C++剑指offer——二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。解法思路:交换左右子树递归左右子树的镜像终止条件为当前结点为叶结点代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void Mirror(
2020-05-27 18:22:51 166
原创 C++剑指offer——树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解法递归实现1.首先需要判断A,B的根节点是否一样。2.如果不一样,判断A的左孩子和B的根节点是否一样,同理可判断A的右孩子和B的根节点是否一样。依次找下去如果上述情况都不满足则说明不包含1.如果找到了A中有值和B中的根节点相同,则比较左右子树是否相同。2.如果B为空了,则说明包含3.如果A为空了,则说明不包含代码:/*struct TreeNode { int val; struc
2020-05-27 17:04:45 156
原创 Wireshark的下载安装及简单使用教程
一、下载下载地址:https://www.wireshark.org/download.html打开后是这样的界面,点击相应的版本下载(一般是64位的windows系统):下载完成
2020-05-26 18:51:22 84199 20
原创 C++剑指offer——合并两个排序链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解法解法一:创建一个新的链表1、创建两个指针分别指向两个链表的头部2、当这两个指针都不为空的时候,比较大小。小的那个结点的值保存下来,指针往后跳一个。然后把那个小的值接到新链表的尾部3、循坏2直至某个链表结束4、肯定会有其中某个链表有剩余,把剩余的那个剩下的结点全部依次接到新链表的尾部。时间复杂度:O(N)空间复杂度:O(N)代码:/*struct ListNode { int va
2020-05-26 11:42:02 192
原创 C++虚函数的作用和实现原理
一、什么是虚函数?在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。二、虚函数定义简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。下面来看一
2020-05-25 11:17:25 7784 1
原创 C++剑指offer——反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。解法图示代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead==NULL)
2020-05-25 09:48:32 116
原创 C++剑指offer——链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。解法解法一:1、创建两个指针都指向链表头部temp1=pListHead、temp2=pListHead;2、先让temp1往前跳k-1步3、循环temp2往前跳一步,同时temp1也往前跳一步,直至temp1到最后一个结点,即temp2跳了len-k步;(tip:在temp1跳的时候,若碰到NULL,即已跳完,那说明链表总长度小于k,要返回NULL)时间复杂度:O(N)。只需一次遍历链表。代码:/*struct ListNode {
2020-05-25 09:24:57 163
原创 C++剑指offer——调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解法解法一1、先统计奇数的个数,假设为n个,再创建一个同样大小的数组arry。2、用两个指针low,high指向新开的数组。分别是low=0和high=n3、遍历原数组,若当前元素为奇数则arr[low++]=array[i];否则,arr[high++]=array[i]。4、最后把新数组的值依次赋值给原数组时间复杂
2020-05-23 16:30:35 262
原创 C++剑指offer——数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0解法解法一:使用库函数使用pow()函数可直接求得答案,自己编写完整程序时应注意要包含#include <math.h>代码:class Solution {public: double Power(double base, int exponent) { return pow(base,e
2020-05-22 17:55:52 187
原创 C++剑指offer——二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解法解法一1、若n为负数,先用一个临时变量temp把它保存下来。然后把n取反再减一(因为负数的补码是整数减一再取反)。2、循环取余,若余数是1,则累加sum3、最后判断temp是否为负数,若为负数,则sum=32-sum(取反)。否则,直接输出sum即可。代码:class Solution {public: int NumberOf1(int n) { if(n==0)
2020-05-21 17:29:34 150
原创 C++剑指offer——矩形覆盖
题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:解法设2n的矩形有f(n)种覆盖方法1、n=1时,只有一种覆盖方法,f(1)=12、n=2时,有横着和竖着两种方法,f(2)=23、n=3时,若第一个矩形竖着放,那么剩下22的矩阵,有f(2)种覆盖方法;若第一个矩阵横着放,那么剩下2*1的矩阵(因为横着放后横向的1的方法是固定的)。所以f(3)=f(2)+f(1)。
2020-05-21 15:50:38 293
原创 C++剑指offer——变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解法解法一f(n)=f(n-1)+f(n-2)+…+f(2)+f(1)循环递归实现代码:class Solution {public: int jumpFloorII(int number) { if(number==0||number==1) return 1; else {
2020-05-20 11:29:33 161
原创 C++剑指offer——跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解法如一共有10个台阶,所有的跳法为jumpFloor(10)第一步若跳1个台阶,那么剩下9个的跳法为jumpFloor(9)第一步若跳2个台阶,那么剩下8个的跳法为jumpFloor(8)所以jumpFloor(10)=jumpFloor(9)+jumpFloor(8)本质上就是一个斐波那契数列,可参考上一篇斐波那契的解法。这里给出递归的解法:代码:class S
2020-05-20 10:40:52 128
原创 C++剑指offer——斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39解法解法一:递归斐波那契的规律就是F(n)=F(n-1)+F(n-2),但牛客上过不了,可能是时间复杂度太高。时间复杂度O(n²)。代码:int Fibonacci(int n) { if(n==0) return 0; else if(n==1) return 1; else ret
2020-05-19 15:18:16 233
原创 C++剑指offer——旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。什么是非递减排序的数组?做这道题之前我们要搞清楚几个概念。递增排序:1,2,3,4,5,6…递减排序:9,8,7,6,5,4…非递增排序:9,8,8,6,4,4,2,1…非递减排序:1,3,3,4,5,6,6,7
2020-05-18 16:36:26 163
原创 C++剑指offer——用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。C++STL stack的用法在这之前,我们先要了解一下stack容器的简单用法。创建stack对象stack stack1;入栈stack1.push(int node);出栈stack1.pop();获得栈顶元素int top=stack1.top();判断栈是否为空stack1.empty();解题思路先创建两个栈stack1,stack2。push功能较简单,直接push到sta
2020-05-17 16:53:14 169
原创 PostgreSQL12.3——pgAdmin4表格的创建
概述本文简要讲解一下pgAdmin4中如何用SQL语句创建表格。图形化创建的方式较为简单,不再赘述。使用的PostgreSQL的版本是12.3。后序我也会继续更新关于PostgreSQL——pgAdmin4的其他使用方法,需要的盆友可关注啦!主要步骤第一步:创建一个数据库(这个网上的教程很多,而且也不容易出错,这里就不再赘述)。第二步:建表点击创建的数据库(myfirstdb)->Schemas->找到Tables右键->Query Tool打开后应是如下界面:在上述Q
2020-05-16 18:38:23 16648
原创 C++剑指offer——重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解法递归求解给大家手画一个简单的思路过程图:以题目中给的样例为例子:1、前序序列的第一个元素为根,在中序序列当中找到和根数值相等元素,记录其下标。例子中,1为根,在中序序列它的下标为3。2、由于中序遍历顺序为:左->根->右,所以下标值左边的
2020-05-16 15:13:10 161
原创 C++剑指offer——从头到尾打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。解法解法一:利用STL自带的容器栈思路:创建一个堆栈对象,从头遍历链表,依次把元素压入堆栈当中。然后依次获取栈顶元素,push到vector数组里面,再出栈。重复上述过程直至栈为空。时间复杂度:O(N)。代码:class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { stack<
2020-05-15 10:48:26 287
原创 C++剑指offer——二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法解法一:暴力搜索依次遍历每个元素,判断与所要查找的元素是否相等,若相等直接返回true,否则继续查找。时间复杂度O(n*m)代码:解法二:从左下开始找矩阵是有序的,从左下角来看,向上数字递减,向右数字递增。所以从左下角开始查找,若比他小,往上一个;若比他大往下一个。时间复杂度:O(m+n)代
2020-05-13 16:56:13 151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人