自定义博客皮肤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++ Primer Chapter6

Chapter 6const与参数传递回顾:顶层const与底层const指针本身是一个对象,它可以指向一个对象。顶层const表示(指针)本身是个常量。底层const表示(指针)所指对象是个常量。 int i = 0; int *const p1 = &i; // 顶层const,因为指针本身不能改变 const int ci = 42; /...

2019-05-10 02:29:14 145

原创 C++ Primer Chapter2

Q:一个类型转换可能产生的错误赋给有符号的char型变量超出范围的值时,其结果是未定义的(undefined),可能会造成程序崩溃。signed char c = 256; // 结果未定义(undefined)Q:两种情况下的默认初值定义于任何函数体之外的变量被初始化为0。定义在函数体内部的内置类型变量(还有指针)将不被初始化,拥有一个不确定的值。Q:变量的声明和定义因为C++的...

2019-04-07 01:43:02 155

原创 【剑指offer】面试题56:数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。这题把异或这个操作符玩6了。异或的重要特性:任何一个数字异或自己都为0。解题步骤题目中,数组里有两个数字只出现一次。因此,对数组每个数进行异或,最后的结果也就是那两个只出现一次的数字异或,而且这个结果一定不是0!上述的结果中一定不是0,即至少有一位是1,我们找出这个1,说明那两个只...

2019-03-29 16:06:23 168

原创 【剑指offer】面试题55:平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路递归判断每个节点的深度是否满足平衡二叉树的要求,即左右子树的高度差不超过1。注意点递归:从上往下递归会造成重复计算影响效率,可以通过后序遍历从下往上解决。剪枝:一旦有结点判断出不是平衡二叉树,则不必再判断后续未处理的结点,直接返回结果。解题步骤递归计算结点的深度,从最左下的结点开始判断,如果不满足平衡二叉...

2019-03-29 14:24:12 253

原创 【剑指offer】面试题55:二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路如果只有一个结点,深度为1。如果该结点有左右树,深度就是左右子树的深度的较大值+1。【考点】 树 递归class Solution {public: int TreeDepth(TreeNode* pRoot) { ...

2019-03-26 20:21:43 104

原创 【剑指offer】面试题54:二叉搜索树的第K小节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如,(5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。解题思路这题考察二叉搜索树的性质,即中序遍历是有序的。维护一个数组保存中序遍历的结果,答案就能得出来了。注意点一开始我漏了做一个检测,即k是否大于返回的中序遍历结果,导致有部分案例ac不了。【考点】 树 中序遍历class Solution {...

2019-03-26 20:08:18 388

原创 【剑指offer】面试题53:在排序数组中查找数字

题目描述统计一个数字在排序数组中出现的次数。解题思路:遇到排序数组,优先无脑考虑二分法。找出这个数字的左边位置,再找出这个数字的右边位置,两个位置的距离就是出现的次数。复杂度是O(logn)。注意点注意边界判断,即没有找到的时候返回的是-1,此时应特殊输出0。【考点】 查找class Solution {public: int GetNumberOfK(vector&lt...

2019-03-26 19:14:53 115

原创 【剑指offer】面试题52:两个链表的第一个公共节点

题目描述输入两个链表,找出它们的第一个公共结点。解题思路:书上是两种方法,讨论区有一种超短解法。我写的是书上的第二种解法,即先遍历两个链表的长度,计算它们的差值d,较长的链表先走d步,然后双指针一起遍历直到找到相同的结点。解题步骤:同上【考点】链表/*struct ListNode { int val; struct ListNode *next; ListNode...

2019-03-25 14:14:11 123

原创 【剑指offer】面试题51:数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,s...

2019-03-19 01:00:22 125

原创 【剑指offer】面试题50:第一次只出现一次的字符

题目描述在一个字符串(0&lt;=字符串长度&lt;=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).这题比较简单,两个循环搞定,时间复杂度是O(n),但要开一个数组来存每个字符出现的次数,因为是固定的256大小,所以空间复杂度是O(1)。典型的空间换时间。第一个循环计算每个字符出现次数,第二个循环寻找第一个只出现一次的...

2019-03-18 13:52:56 135

原创 【剑指offer】面试题49:丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。@事无巨细,悉究本末 评论区这个大佬写的太好了,膜一下~我直接贴过来吧链接:https://www.nowcoder.com/questionTerminal/6aa9e04fc3794f68acf...

2019-03-18 01:25:40 177

原创 【剑指offer】面试题48:最长不含重复字符的子字符串

题目描述从字符串中找出一个最长的不包含重复字符的子字符串,计算这个字符串长度。字符串只包含a-z字母。如“arabcacfr”,最长的包含重复子字符串是“acfr”,长度是4。解题思路:已知第i-1个字符的最长子字符串长度,根据第i个字符是什么,总结规律,得出第i个字符的最长子字符串长度。几个注意点:1.递归用循环代替减少重复计算。解题步骤:先推递归式:一开始没看懂是因为看错...

2019-03-17 15:20:16 175

原创 【剑指offer】面试题47:礼物的最大价值

题目描述在m*n的棋盘里每格一个礼物,每个礼物有价值(大于0)。你从棋盘左上角开始拿礼物,并每次往左和下移动一格,直到达到棋盘右下角。问最多拿多少价值的礼物?解题思路:几个注意点:解题步骤:【考点】 递归 动态规划...

2019-03-17 01:13:42 431

原创 【剑指offer】面试题46:把数字翻译成字符串

题目描述给定一个数字,按规则翻译成字符串:0翻译成“a”,1翻译成“b”,以此类推…25翻译成“z”,一个数字可能有多种翻译,比如12258有5种翻译,分别是bccfi,bwfi,bczi,mcfi,mzi。编程实现一个函数,计算一个数字有多少种不同解法。解题思路:最开始的一个或两个数字被转换为字符后,接着翻译后面的数字。即递归的思想。几个注意点:1.递归是自上而下解决问题的,但会...

2019-03-16 03:29:21 148

原创 【剑指offer】面试题45:把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。这一题有个解法,相比于原书上的方法,更好理解、更加简单!有现成的工具当然要用现成的,抵制重复造轮子的行为。解题思路:对整个数组排序,任意mn和nm比较,小的放前面,大的放后面,然后按顺序输出整个数组就...

2019-03-16 00:58:29 154

原创 【C++手撸代码】实现个单例类

面试常问,码一下参考:C++的单例模式与线程安全单例模式(懒汉/饿汉)单例模式及C++实现代码关于懒汉与饿汉:懒汉:故名思义,不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化。饿汉:饿了肯定要饥不择食。所以在单例类定义的时候就进行实例化。特点与选择:由于要进行线程同步,所以在访问量比较大,或者可能访问的线程比较多时,采用饿汉实现,可以实现更好的性能。这是以...

2019-03-01 00:42:47 225

原创 【C++手撸代码】实现一个shared_ptr

最近面试题有遇到这个题,让你手撸个shared_ptr参考:实现一个简单的shared_ptr智能指针原理及实现(1)shared_ptr写的很棒,学习一波。一句话介绍shared_ptr智能指针:多个shared_ptr中的T *ptr能指向同一个内存区域(同一个对象),并共同维护同一个引用计数器。一般来说,智能指针的实现需要以下步骤:1.一个模板指针T* ptr,指向实际的对象。...

2019-03-01 00:09:45 3550 5

原创 【C++面试题】基类指针指向派生类数组、改变派生类中虚函数的默认参数值

一道C++面试题先看代码#include &amp;amp;lt;iostream&amp;amp;gt;using namespace std;class Base{public: int a = 1; virtual void print(const int n = 2) { std::cout &amp;amp;lt;&amp;amp;lt; a + n &amp;amp;lt;&amp;amp;lt; std::endl; }};

2019-02-28 22:22:22 697

原创 【数据结构笔记】四、树的应用

树的应用按考纲来看的话: 1.二叉排序树 2.堆结构 3.哈夫曼(Huffman)树和哈夫曼编码 而刚好这节课刚好都讲到了。 首先,先讲 二叉排序树 也叫二叉查找树/二叉搜索树 BST,Binary Search Tree 主要特性是:左<中<右 一些用的到的特殊函数: ①Position Find(Elemtype X,BinTree BST) //查找值为X的位置,返回地址

2017-09-23 23:26:12 880

原创 【数据结构笔记】三、树与二叉树

课程是中国大学MOOC浙江大学出的数据结构。 作为一个数据结构爱好者,我觉得很有必要稍微整理下各章节的笔记,对知识进行梳理。 首先,老师从“查找”入手,查找分为静态和动态,演示了静态查找的例程,并介绍了‘建立哨兵’的思想。而这个例程使用的是普通的顺序查找,因为其低效性,我们又引入了二分查找(Binary Search)。 二分查找,条件有二:①本身是有序的②在数组里实现。他的时间复杂度比顺序查

2017-09-23 00:09:20 302

原创 【数据结构练习】2.两个有序链表序列的合并

02-线性结构1 两个有序链表序列的合并(15 分) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { E

2017-09-19 22:57:05 1082 1

原创 【数据结构练习】1.最大子列问题

后面会不定期把通过的PTA源码搬到博客上,记录自己学习数据结构的历程,我是数据结构爱好者~一开始一直考虑负数的情况想直接写进子函数里,后来干脆直接写在main里作为特例,总之写的有点乱。题目来自 浙江大学数据结构MOOC PTA 01-复杂度2 Maximum Subsequence Sum(25 分) Given a sequence of K integer { N​1, N2, …

2017-09-19 22:47:45 281

原创 【数据结构专题】线性表之单链表

对比了好几本书,比较少涉及单链表的赋值,为了亲自跑出其他功能,花了不少时间,毕竟是打基础嘛,相信以后会越来熟练(你为什么那么熟练,明明是我先~)话不多说,下面是代码及实验结果。   #include <cstdio>#include <cstdlib>#define ElementType int#define MAXSIZE 1000#define ERROR -1/*线性表-顺序

2017-09-19 00:06:53 385

原创 【数据结构专题】线性表之顺序表

最近在准备考研,博客的更新没有没有保障。学习了一点数据结构,但书中多为伪码体现,看了几遍后仍体会不到其精要,私以为实践才是最好的老师,so打算开坑,用C++实现各个专题内容。 除去一些算法基础知识及C/C++入门知识,首先便是线性表。线性表一般分顺序表和链表。今天主要先来实现下顺序表的初始化、创建、查找、插入、删除。下列程序笔者在code block运行成功 #include <cstd

2017-09-18 16:25:37 535

原创 Linux基础入门(二)

环境变量与文件查找-yh 2017.04.05

2017-04-05 15:52:03 239

原创 Linux基础入门(一)

Linux基本操作 yh 2017.03.28常用 Shell 命令及快捷键1. Shell简介各种终端模拟器(Shell),有壳就有核,这里的核就是指 UNIX/Linux 内核。 类比于Windows中的CMD,对应着DOS。 本文以zsh(Shell)&xfce(桌面环境)为例。2.常用快捷键&命令[Tab] 补全命令&目录等 [Ctrl+c] 强行中止当前程序 Ctrl+d 键盘输

2017-03-28 22:14:31 203

原创 Vim编辑器入门(一)

Vim入门 yh 2017.03.24一、Vim具有6种基本模式和5种派生模式1. 普通模式(Normal mode)dd 删除当前行2dd(重复dd两次)dj 删除当前行和下一行a(append)键或者i(insert)键 进入插入模式2. 插入模式(Insert mode)ESC键 回到普通模式3. 可视模式(Visual mode)移动命令会扩大高亮的文本区域 执行一

2017-03-25 12:09:33 235

空空如也

空空如也

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

TA关注的人

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