![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题
文章平均质量分 75
CSDN_564174144
这个作者很懒,什么都没留下…
展开
-
剑指offer算法题之单链表的反转--面试题16:反转链表
题目如下: 本题分析第一步: 反转结点指针 一般解决与链表相关问题总是涉及到大量的指针操作,这时候代码中很容易出错。为了正确地反转一个链表,需要调整链表中指针的方向。因此我们借助图形来直观的分析本题指针的变化过程。如下图所示,(a )图中的h, i , j 是三个相邻的结点。假设进过之前的反转操作,h结点之前的指针调整完毕,可见,前面的所有结点的m_pNext指针都指向前面一个结点。接下来要做分原创 2017-07-28 23:35:46 · 741 阅读 · 0 评论 -
数据结构与算法分析之二叉树的三种遍历方式。--前序遍历,中序遍历和后序遍历
在介绍二叉树的遍历算法之前,我们需要介绍一下二叉树以及遍历方式这些概念。二叉树:是树的一种特殊结构,在二叉树中每个结点最多只能有两个子节点。二叉树中最重要的操作就是遍历,通常二叉树的遍历方式有一下几种:前序遍历:先访问根结点,再访问左结点,最后访问右结点。如图示前序遍历顺序是:10、6、4、8、14、12、16。 中序遍历:先访问左结点,再访问根结点,最后访问右结点。如图所示中序遍历顺序是:4 、原创 2017-07-13 10:03:18 · 983 阅读 · 0 评论 -
数据结构和算法分析之排序算法--插入排序篇(直接插入排序和希尔排序)
排序算法的概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。本系列介绍的都是内部排序。 其中: 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的原创 2017-08-04 23:22:33 · 750 阅读 · 0 评论 -
剑指offer算法题之循环链表--约瑟夫问题,面试题45:圆圈中最后剩下的数字(补充:define和typedef)
题目如下: 分析本题思路: 本题的原型就是约瑟夫环问题,有两种解决方法:第一种方法是用环形链表模拟圆圈的经典解法,第二种方法是分析每次被删除的数字的规律并直接计算出1圆圈中最后剩下的数字。本篇文章主要分析第一种解题方法。经典的解法:用环形链表模拟圆圈 既然题目中有一个数字圆圈,很自然的想法就是用环形链表来模拟这个圆圈。我们可以创建一个共有n个结点的环形链表,然后每次在这个链表中删除第m个结点。原创 2017-07-27 23:56:31 · 680 阅读 · 0 评论 -
剑指offer算法题之栈和队列--面试题7:用两个栈实现队列(补充知识点:类模板)
关于栈和队列的介绍,在上一篇文章里已经介绍过了,话不多说直接上题目了。题目如下: 队列的声明如下:template <typename T> class CQueue{public: CQueue(void); ~CQueue(void);private: stack<T> stack1; stack<T> stack2;};在上述队列的声明可以看出,一个队列原创 2017-08-02 12:22:40 · 490 阅读 · 0 评论 -
剑指Offer算法题之已知两种遍历方式重建二叉树--面试题6:重建二叉树
直接上题目 本题所构建的二叉树如下图 -本文已知二叉树的前序遍历和中序遍历,在二叉树的前序遍历序列中,第一个数字总是树的根结点的值。但在中序遍历序列中,根结点的值再序列的中间,所以 左子树的结点的值位于根结点的值得左边,而右子树的结点的值位于根结点的值得右边。因此可知,我们需要扫描一遍中序遍历,找到根结点。如下图可知,前序遍历序列的第一个数字1就是根结点,进过扫描中序遍历后找到根结点1所在位置。因此原创 2017-07-31 22:10:32 · 605 阅读 · 0 评论 -
剑指Offer算法题之字符串替换字符--面试题4:替换空格
替换空格题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。题目背景:在网络编程中,如果URL参数中含有特殊字符,如空格,可能导致服务器端无法获得正常的参数值。因此我们需要将这些特殊符号转换成服务器可以识别的字符。一般转换规则是在‘%’后面跟上ASCII码的十六进制的表示。例如空格就被替换成“%20”。题目原创 2017-07-11 15:08:27 · 755 阅读 · 0 评论 -
剑指Offer算法题之设计模式的单例模式--面试题2:实现Singleton模式
提到单例模式,不得不稍微了解一下设计模式,所以首先介绍几种常见的设计模式。设计模式:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式都描述了一个不断重复发生的问题,以及该问题解决方案的核心设计。常见设计模式介绍1. 单例模式的介绍(singleton)有些时候,允许自有创建某类的实例是会造成系统性能的下降。如果一个类始终只创建一个实例,则这个类就被称为单例类,这种模式就被称为单例模原创 2017-07-12 10:09:35 · 402 阅读 · 0 评论 -
剑指offer算法题之单链表的删除结点操作--面试题13:在O(1)时间删除链表结点
题目如下: - 常见删除链表结点的顺序遍历法 单链表最常见的删除结点操作:就是从链表的头结点开始,顺序遍历查找要删除的结点,找到该结点后删除即可。 如下图(a)所示链表中,我们想删除链表结点i,可以从链表的头结点a开始顺序遍历 ,发现h结点的m_pNext指针指向的结点就是i结点,于是我们可以安全的删除结点i,把指针指向下一个结点j。指针调整之后我们就可以安全的删除结点i,并保证链表没有断开,原创 2017-07-30 22:17:10 · 460 阅读 · 0 评论 -
C++知识点之string,结合华为编程题:简单错误记录分析(附加容器pair知识点)
C++中string类的详解string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作。string类的声明头文件:#include< string > 命名域的声明:using namespace std;string类的函数原型string类的构造函数: string(const char *s); //用c字符串s原创 2017-08-17 20:50:57 · 847 阅读 · 0 评论