![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
yh_cheer
这个作者很懒,什么都没留下…
展开
-
【C++面试题】基类指针指向派生类数组、改变派生类中虚函数的默认参数值
一道C++面试题先看代码#include <iostream>using namespace std;class Base{public: int a = 1; virtual void print(const int n = 2) { std::cout << a + n << std::endl; }};原创 2019-02-28 22:22:22 · 703 阅读 · 0 评论 -
C++ Primer Chapter2
Q:一个类型转换可能产生的错误赋给有符号的char型变量超出范围的值时,其结果是未定义的(undefined),可能会造成程序崩溃。signed char c = 256; // 结果未定义(undefined)Q:两种情况下的默认初值定义于任何函数体之外的变量被初始化为0。定义在函数体内部的内置类型变量(还有指针)将不被初始化,拥有一个不确定的值。Q:变量的声明和定义因为C++的...原创 2019-04-07 01:43:02 · 158 阅读 · 0 评论 -
【剑指offer】面试题51:数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,s...原创 2019-03-19 01:00:22 · 128 阅读 · 0 评论 -
【剑指offer】面试题52:两个链表的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。解题思路:书上是两种方法,讨论区有一种超短解法。我写的是书上的第二种解法,即先遍历两个链表的长度,计算它们的差值d,较长的链表先走d步,然后双指针一起遍历直到找到相同的结点。解题步骤:同上【考点】链表/*struct ListNode { int val; struct ListNode *next; ListNode...原创 2019-03-25 14:14:11 · 125 阅读 · 0 评论 -
【剑指offer】面试题50:第一次只出现一次的字符
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).这题比较简单,两个循环搞定,时间复杂度是O(n),但要开一个数组来存每个字符出现的次数,因为是固定的256大小,所以空间复杂度是O(1)。典型的空间换时间。第一个循环计算每个字符出现次数,第二个循环寻找第一个只出现一次的...原创 2019-03-18 13:52:56 · 135 阅读 · 0 评论 -
【剑指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 阅读 · 0 评论 -
【剑指offer】面试题48:最长不含重复字符的子字符串
题目描述从字符串中找出一个最长的不包含重复字符的子字符串,计算这个字符串长度。字符串只包含a-z字母。如“arabcacfr”,最长的包含重复子字符串是“acfr”,长度是4。解题思路:已知第i-1个字符的最长子字符串长度,根据第i个字符是什么,总结规律,得出第i个字符的最长子字符串长度。几个注意点:1.递归用循环代替减少重复计算。解题步骤:先推递归式:一开始没看懂是因为看错...原创 2019-03-17 15:20:16 · 177 阅读 · 0 评论 -
【剑指offer】面试题47:礼物的最大价值
题目描述在m*n的棋盘里每格一个礼物,每个礼物有价值(大于0)。你从棋盘左上角开始拿礼物,并每次往左和下移动一格,直到达到棋盘右下角。问最多拿多少价值的礼物?解题思路:几个注意点:解题步骤:【考点】 递归 动态规划...原创 2019-03-17 01:13:42 · 431 阅读 · 0 评论 -
【剑指offer】面试题46:把数字翻译成字符串
题目描述给定一个数字,按规则翻译成字符串:0翻译成“a”,1翻译成“b”,以此类推…25翻译成“z”,一个数字可能有多种翻译,比如12258有5种翻译,分别是bccfi,bwfi,bczi,mcfi,mzi。编程实现一个函数,计算一个数字有多少种不同解法。解题思路:最开始的一个或两个数字被转换为字符后,接着翻译后面的数字。即递归的思想。几个注意点:1.递归是自上而下解决问题的,但会...原创 2019-03-16 03:29:21 · 155 阅读 · 0 评论 -
【剑指offer】面试题45:把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。这一题有个解法,相比于原书上的方法,更好理解、更加简单!有现成的工具当然要用现成的,抵制重复造轮子的行为。解题思路:对整个数组排序,任意mn和nm比较,小的放前面,大的放后面,然后按顺序输出整个数组就...原创 2019-03-16 00:58:29 · 157 阅读 · 0 评论 -
【C++手撸代码】实现个单例类
面试常问,码一下参考:C++的单例模式与线程安全单例模式(懒汉/饿汉)单例模式及C++实现代码关于懒汉与饿汉:懒汉:故名思义,不到万不得已就不会去实例化类,也就是说在第一次用到类实例的时候才会去实例化。饿汉:饿了肯定要饥不择食。所以在单例类定义的时候就进行实例化。特点与选择:由于要进行线程同步,所以在访问量比较大,或者可能访问的线程比较多时,采用饿汉实现,可以实现更好的性能。这是以...原创 2019-03-01 00:42:47 · 227 阅读 · 0 评论 -
【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 · 3558 阅读 · 5 评论 -
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 · 148 阅读 · 0 评论