C++
文章平均质量分 95
小清新嘻嘻无敌
这个作者很懒,什么都没留下…
展开
-
C++ Run-Time Type Identification(RTTI)运行时类型识别
dynamic_cast 注意事项:只能应用于指针和引用的转换。要转换的类型中必须包含虚函数转换成功返回子类的地址,失败返回NULLtypeid 注意事项typeid 返回一个type_info对象的引用如果想要通过基类的指针获得派生类的数据类型,基类必须带有虚函数只能获取对象的实际类型code如下:#include #include原创 2016-12-11 20:14:51 · 504 阅读 · 0 评论 -
C++ int型与string型相互转换
int 转 stringint a = 13;string str = to_string(a);string转intstd::string str = "123";int n = atoi(str.c_str());原创 2017-07-31 15:27:24 · 268 阅读 · 0 评论 -
multiset<int, greater<int>> test 相关
当需要使用greater时,在头文件里需要添加#include#include#include#include#include using namespace std;int main(){ vector data{1,4,3,8}; //vector d1(data.begin()+1, data.begin() + 3); multiset > test;原创 2017-07-19 09:49:20 · 1784 阅读 · 0 评论 -
删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5题目分析:删除链表中的结点要比较当前结点是否与前面结点和后面结点相同,只有两个都不同的结点才保留。用pre保存前一个节点, cur保存当前结点,cur->next则是后一个结点。如果当前结点只原创 2017-07-22 21:39:30 · 247 阅读 · 0 评论 -
打印二叉树题型:从上到下打印,打印为为多行以及按之字形打印为多行
打印二叉树题目:1)从上到下打印出二叉树的每个节点,同一层的结点按照从左至右的顺序打印。如上图,打印结果则为1,2,3,4,5,6这种层次遍历可以如下分析:首先要打印根节点,打印之前要保存其左孩子2,和右孩子结点3。下一步打印左结点2,同样保存其左右孩子节点。可以发现这是一个类似于队列,先进先出的结构。用队列实现,每次一个结点要出队,则其左右孩子入队。cod原创 2017-07-23 10:55:12 · 351 阅读 · 0 评论 -
数字在排序数组中出现的次数(剑指offer面试题56)
题目描述统计一个数字在排序数组中出现的次数。题目思路:1)常规思路:对该数字在数组中遍历,计数出现次数2)改进:既然是一个排序数组,很自然就可以想到二分查找。用二分查找分别定位数字k在数组中第一次出现和最后一次出现的位置。(1)为了获得数字k最后一次出现的位置,我们可以将数组中所有小于等于k的都归为左边部分,left = mid + 1,指向第一个大于k的位置。原创 2017-07-20 01:38:10 · 338 阅读 · 0 评论 -
C++各类大数模板
转载自 http://blog.csdn.net/y990041769/article/details/20116995首先大数加法 两个大数相加[cpp] view plain copy print?string sum(string s1,string s2) { if(s1.length() {转载 2017-08-02 00:43:33 · 828 阅读 · 0 评论 -
C++中const修饰函数形参,函数,函数返回值
转自 http://blog.csdn.net/zz460833359/article/details/48379901在程序设计中我们会经常调用函数,调用函数就会涉及参数的问题,那么在形参列表中const形参与非const形参对传递过来的实参有什么要求呢?先来看一个简单的例子:[cpp] view plain copy#incl转载 2017-07-25 13:12:10 · 1944 阅读 · 0 评论 -
请说出static和const关键字尽可能多的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;原创 2017-08-02 17:07:34 · 431 阅读 · 0 评论 -
上楼梯问题,模余防止溢出
题目:有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为了防止溢出,请将结果Mod 1000000007给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。测试样例:1返回:1class GoUpstairs {public: in原创 2017-08-01 10:15:43 · 1385 阅读 · 0 评论 -
二叉树先序、中序和后序遍历
转载自 http://blog.csdn.net/quzhongxin/article/details/46315251Binary Tree Preorder Traversal:https://leetcode.com/problems/binary-tree-preorder-traversal/ Binary Tree Inorder Traversal :http转载 2017-07-25 16:49:24 · 322 阅读 · 0 评论 -
数组中出现的次数超过一半的数字(剑指offer面试题39)
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题目思路:1) 先排序,在确认最中间的那个数是否符合要求class Solution {public: int MoreThanHalfNum_原创 2017-07-18 22:32:52 · 236 阅读 · 0 评论 -
链表中环的入口结点
题目描述一个链表中包含环,请找出该链表的环的入口结点。分析如下:设有两个指针,慢指针为slow,每次向后移动一位。 快指针为fast,每次向后移动两位。a为AC段的长度,c为环的周长。蓝色部分CB段长度为 d.则慢指针在相遇时走的长度为len_slow = a + m * c + d;快指针在相遇时走的长度为 len_fast = a +原创 2017-07-21 17:39:54 · 219 阅读 · 0 评论 -
顺时针打印矩阵(剑指offer面试题29)
题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.题目思路:打印每一圈的时候需要四步:1)从左至右,2)从上到下,3)从右到左,4)从下到上。打印最内一圈有原创 2017-07-18 11:48:32 · 220 阅读 · 0 评论 -
leetcode287. Find the Duplicate Number
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number,原创 2017-02-26 22:38:51 · 236 阅读 · 0 评论 -
关于字符串结束符'\0'
转载自 http://blog.csdn.net/cytchan/article/details/50636488字符串定义方法有2种方法:1)字符数组2)字符指针初始化1)字符数组方式初始化大致3种:(1) char str[10]="12345"或者char str[10]={'1','2','3','4','5'}转载 2017-07-15 20:58:06 · 5733 阅读 · 0 评论 -
按位与& 与 逻辑与 && 以及位操作相关基础和题型
按位与:a&b是把a和b都转换成二进制数然后再进行与的运算;逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。例如:a&b 9&8 1001 1000结果是1000 a&&b 9&&8 结果是1&对每一个都判断;&&只要前面是false就输出false,而不继续判断后面了http原创 2017-07-17 09:48:54 · 367 阅读 · 0 评论 -
位操作基础和技巧
转载自: http://blog.csdn.net/morewindows/article/details/7354571Title: 位操作基础篇之位操作全面总结Author: MoreWindowsE-mail: morewindows@126.comKeyWord: C/C++ 位操作 位操作技巧 判断奇偶 交换两数 变换符号 求绝对值 位操转载 2017-07-17 09:52:37 · 373 阅读 · 0 评论 -
C++知识点:double型和float型判断相等
由于计算机表示小数(包括float和double型小数)都有误差,我们不能直接用符号(==)判断两个小数是否相等,如果两个小数的差的绝对值很小,比如,小于 0.0000001,就可认为他们相等。bool equal(double a, double b){if((a-b<0.0000001) && (b-a<0.0000001))return true;elsereturn fals原创 2017-07-17 10:57:34 · 1709 阅读 · 0 评论 -
位操作相关题目-数组中某数字只出现了一次及多种进阶版本
原题:有一个数组,其中有一个数字只出现了一次,其余的数字均出现了两次,请找到该数组.class Solution {public: int FindNumber(vector vec) { int len = vec.size(); if (len == 0) return -1; int res = 0; for (int i = 0; i < len; i++) {原创 2017-07-20 17:08:42 · 241 阅读 · 0 评论 -
和为S的数字及进阶
题目:在一个递增排序的数组中,找到两个数字和为S,如果有多组,则返回乘积最小的那两个数字。思路:排序好的数组。用两个指针p,q分别指向首尾两个数字。如果和小于S,则指针p向右移动一位继续比较。如果和大于S,则指针q向左移动一位继续比较。如果相等,则p和q分别向右和左移动一位寻找下一组数字。class Solution {public: vector FindNum原创 2017-07-20 19:55:10 · 283 阅读 · 0 评论 -
剑指offer--树的子结构(牛客网)
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {原创 2017-07-17 16:29:18 · 281 阅读 · 0 评论 -
环形链表约瑟夫问题(可参考剑指offer面试题62)
约瑟夫问题:0,1,2,...n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。可以通过环形链表(经典算法)或者一个递推公式实现原创 2017-07-21 11:35:08 · 476 阅读 · 0 评论 -
从上往下打印出二叉树的每个节点,同层节点从左至右打印(剑指offer,面试题32)
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。题目思路:采用一个例子说明:8,6,10,5,7,9,11.对于第一层,只有根节点 “8”,第二层有节点“6”和“10”。从根节点分析,为了能够接下来打印节点为8的两个子节点,我们应该在遍历到该节点时把值为6 和 10 的两个节点保存到一个容器里。按照从左向右打印的要求,取出6,保存其两个子节点“5”和“7”原创 2017-07-18 11:36:14 · 3097 阅读 · 0 评论 -
N个鸡蛋从M楼层摔(2个鸡蛋从100层摔)
转载自: http://blog.csdn.net/wolinxuebin/article/details/47057707http://www.cnblogs.com/yangai/p/5391533.html一、题目: 有一栋楼共100层,一个鸡蛋从第N层及以上的楼层落下来会摔破, 在第N层以下的楼层落下不会摔破。给你2个鸡蛋,设计方案找出N,并且保证在最坏转载 2017-08-12 12:29:01 · 2233 阅读 · 0 评论