自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c/c++实现几种常见的排序(图解+源码)

1.冒泡排序①:排序原理说明冒泡排序是比较常见,而且很容易理解的简单排序。假设我们是把数排成从小到大的有序数Ⅰ:首先从第一个元素开始到最后一个元素。每相连的两个元素都进行比较。Ⅱ:如果前面的数比后面的数大,就要把前面的数跟后面的数进行交换。????:这样一轮下来你会发现,最大的那个数已经沉到的最后。比它小的数都往前挤了。Ⅳ:所以每经过一轮的比较,我们就确定了一个最大的数,所以每次...

2020-03-13 15:37:00 417

原创 剑指Offer:复杂链表的复制

1.问题描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)2.解题思路①:问题分析 一个单向链表的复制很简单,但是这道难点在于,我们多了一个random随机结点,最重要的是,我们如何找到这个复制后的随机结点。...

2020-03-18 16:05:08 128

原创 剑指Offer:从上往下打印二叉树

1.问题描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。2.解题思路①:明确题意 首先根据题目的意思,我们二叉树的打印顺序是(假设我们列举的结点都存在) root->root的左子->root的右子->root的左子的左子->root的左子的右子->root的右子的左子.... 实际上就是实现二叉树的层次遍历②:解题步...

2020-03-18 15:38:14 194

原创 c++ STL: priority_queue优先队列

1. 概述普通队列queue是一种先进先出的数据结构,priority_queue和queue的区别就在于,在优先队列priority_queue中,元素都被赋予优先级,出队是根据优先级出队,优先级高的先出队。2. 原型说明priority_queue优先队列在模板申明带3个参数:priority_queue<Type, Container, Functional>...

2020-03-16 13:27:01 272

原创 深信服面试编程题:c/c++字符串的模糊查找

1. 题目描述(附源码)从字符串string开始完整匹配子串sub,返回匹配到的字符个数。1.sub中如果出现'?'表示可以匹配一到三个除'\0'以外的任意字符。2.如果sub还有找不到匹配的字符,则说明不能完整匹配。3.如果能完整匹配,返回匹配到的字符个数,如果有多种匹配方式,返回匹配字符数最少的那个,如果不能完整匹配,返回-1。4.示例:①:输入描述: 第一行...

2020-03-13 17:05:04 1465

原创 剑指Offer:整数中1出现的次数

整数中1出现的次数1. 问题描述求出1 - 13的整数中1出现的次数,并算出100 - 1300的整数中1出现的次数?为此他特别数了一下1 - 13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。2. 解题思路①:循环从 1 - ...

2020-03-13 09:47:49 96

原创 剑指Offer:最小的K个数(两种解法)

最小的k个数1. 问题描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。2. 解题思路方法1:①:使用STL 标准库中的priority_queue 容器(以下简称:容器)。②:按顺序遍历整个数组③:容器中永远保存着遍历过的数中当前最小的4个数④:每遍历一个数,根据容器的特征,所遍历的那个数只需要跟容器的 ...

2020-03-12 11:39:21 226

原创 剑指Offer:栈的压入、弹出序列

栈的压入、弹出序列1. 问题描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)2. 解题思路①:因为输入顺序和弹出序列都已经明确,所以我...

2020-03-11 17:27:32 73

原创 剑指Offer:包含min函数的栈

包含min函数的栈1. 问题描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。2. 解题思路①:解这道题我的思路是,一个栈来保存数据(下面用allstack表示),一个栈来保存最小值(下面用minstack)②:很多人可能会想,用一个变量保存就...

2020-03-11 16:58:18 99

原创 剑指Offer:顺时针打印矩阵

顺时针打印矩阵1. 问题描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如,如果输入如下4 X 4矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.2. 解题思路①:首先我们明确了起点是从(0,0)开始...

2020-03-11 16:18:58 81

原创 剑指Offer:二叉树的镜像

二叉树的镜像1. 问题描述操作给定的二叉树,将其变换为源二叉树的镜像。2. 解题思路①:二叉树的镜像,实际上就是所有的结点的左右子结点交换位置②:遍历二叉树,找到所有结点,交换该结点的左右子结点3. c/c++代码class Solution {public: void Mirror(TreeNode *pRoot) { if(pRoot == NULL)...

2020-03-11 14:54:25 118

原创 剑指Offer:树的子结构

树的子结构1. 问题描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)2. 解题思路①:遍历大树,找出和子树相同的跟结点,有可能存在多个。。②:把相同的跟结点进行递归判断(对位比较),如果#某个结点大树为空,小树不为空,说明不匹配#某个结点小树为空,不管大树为不为空,都匹配#两个结点值不一样,不匹配3. c/c++源代码/*str...

2020-03-11 14:41:40 71

原创 剑指Offer:合并两个排序的链表

合并两个排序的链表1. 问题描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。示例:list1:{1,3,5,6,8} ,list2:{2,4,5,6,7,8} 合并成 {1,2,3,4,5,5,6,6,7,8,8}2. 解题思路①:首先对比两个链表的头结点的值的大小②:如何list_1->val的大于list_2->val...

2020-03-11 14:03:04 50

原创 剑指Offer:反转链表

反转链表1. 问题描述输入一个链表,反转链表后,输出新链表的表头。示例:输入{1,2,3,4,5},输出{5,4,3,2,1}2. 解题思路①:把链表的每个结点拆下来,用头插法把拆下来的结点组成一个新的链表。即为反转链表②:第一个拆下来的结点(原链表的头结点或者说是反转链表的尾结点),组装反转链表时,一定要确保尾结点指向的next为空3. c/c++源代码/*struct Lis...

2020-03-11 13:19:42 82

原创 剑指Offer:链表中倒数第k个结点(三种解法)

输出链表中倒数第k个结点1. 问题描述输入一个链表,输出该链表中倒数第k个结点。示例:输入1 {1,2,3,4,5},输出 52. 解题思路方法1: 递归输出①:之前我们在学习“从尾到头打印链表”的时候提到过,递归其实类似于堆栈,先调用后执行。添加链接描述②:根据递归的原理,遍历链表,当遍历链表结束后,每次把 k-- ,直到k = 0,返回结点值,否则返回NULL③:因为递归调...

2020-03-11 11:10:03 134

原创 剑指Offer:调整数字顺序使奇数位于偶数前面

调整数组使奇数位于偶数前面1. 问题描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。2. 解题思路方法1: 遍历排序①:按顺序遍历数组②:跟选择排序有点像,找到第一个奇数,把这个奇数放在该数组的第一个。原先的数以此往后平移一个字节。以此类推③:直到遍历完整个数组...

2020-03-10 17:18:33 140

原创 剑指Offer:数值的整数次方

数值的整数次方1. 问题的描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为02. 解题思路①:需要注意的是exponent是一个int型不是一个unsigned int 所以需要考虑负数的时候。3. c/c++源代码class Solution {public: doub...

2020-03-10 14:02:14 57

原创 剑指Offer:二进制中1的个数

二进制中1的个数1. 问题描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。2. 解题思路①:假如输入n ,如果第 x 位上是1,则肯定有(n>>x)&0x00000001 == 1;3. c/c++源代码class Solution {public: int NumberOf1(int n) { int num =...

2020-03-10 13:43:07 75

原创 剑指Offer:矩形覆盖

矩形覆盖1. 问题描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2n的大矩形,总共有多少种方法?比如n=3时,23的矩形块有3种覆盖方法:2. 解题思路①:假如现在有一个2n的矩形,n>2。②:第一次用小矩形去覆盖的时候,有两种选择:横着放或者竖着放#横着放:横着放的话,如果在上面放,下面那个区域也只能横着放,所以横着放完还剩下...

2020-03-10 13:14:53 76

原创 剑指Offer:变态跳台阶

变态青蛙跳台阶1. 问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。2. 解题思路方法1:数学归纳法①:假设有n级台阶,n > 2,第一次跳有n种跳法,分别是跳1,2,3…,n。②:根据①可归纳为f(n) = f(n-1)+f(n-2)+…+f(1)。③:显而易见 f(n-1) = f(n-2)+f(n-3)...

2020-03-10 11:07:22 126

原创 剑指Offer:跳台阶

青蛙跳台阶1. 问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。2. 解题思路**方法1:**递归算法①:假设有n级台阶,n>2,那么第一次跳有两种可能,跳1级或者跳两级②:那么所有可能的跳法 = 第一次跳一级的可能 + 第一次跳二级的可能假设第一次跳1级,那么还剩下n-1个台阶假设第一次跳2级,那...

2020-03-09 17:29:00 78

原创 剑指Offer:斐波那契数列(两种解法:递归)

斐波那契数列1. 问题描述斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,65…这个数列从第3项开始,每一项都等于前两项之和。An = An-1 + An-2现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=392. 解题思路①:n = 0,n = 1是一个没有公式推导的值,所以,当n=0时,输出0,n = 1时,输...

2020-03-09 16:41:01 95

原创 剑指Offer:用两个栈实现队列

用两个栈实现队列1. 问题描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2. 解题思路①:所有的入队数据,push到stack1中。②:在该设计中,stack1是属于一个暂存区,所有的数据最终都会经stack2,然后pop出队③:当遇到出队pop时,对stack2进行判断#如果stack2为空,将stack1中的所有数据出栈后,入栈到stac...

2020-03-09 15:58:33 75

原创 剑指Offer:从尾到头打印链表(两种解法)

从尾到头打印链表(两种解法)1.问题描述输入一个链表,按链表从尾到头的顺序返回一个vector。2. 解题思路方法1:使用STL中的stack来辅助完成①:根据stack(堆栈)的先进后出原理,实现链表数据的反转②:首先将链表遍历,输出到stack对象中③:然后将stack中的元素一个个弹出到vector中,输出vector方法2:使用递归,打印链表(附源码)①:递归,其实就是类...

2020-03-09 14:16:50 193

原创 剑指Offer:替换空格

替换空格1. 问题描述将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。2. 解题思路①:如果重新构建一个新的字符串,空间复杂度过大,浪费空间,所以我的思路是在原有的字符串上,替换实现②:遍历字符串,查找空格③:如果找到空格###第一步:首先把空格之后的字符串向右平移2个byte(注意:不要...

2020-03-09 10:39:32 102

原创 剑指Offer:二维数组中的查找(两种解法)

剑指Offer:二维数组中的查找(两种解法)问题描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例: vector<vector > 【1, 2, 8, 9 】【2, 4, 9, 12】【4, 7, 10,13】【6, 1...

2020-03-06 16:16:38 105

原创 Linux C语言解析当前Linux系统下的所有进程

Linux特别之处在刚开始接触linux时,就有这么一句话:“linux下,一切皆文件”。所以,在linux系统下,进程也不例外。进程信息以何种方式存在在linux系统中,进程信息也是以文件的方式存储。如何查看linux系统的进程消息在这里,我们不用ps 查看,直接找linux系统存储进程信息的地方。cd /proc 进入/proc目录下,你会看到很多用数字命名的目录l...

2019-12-16 17:44:11 1828

空空如也

空空如也

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

TA关注的人

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