C++
SanfordZhu
从现在开始,就是最好的时间。
展开
-
C++学习记录之封装篇
C++问题记录之封装篇:1.为什么类中要有构造和析构函数?2.构造函数的规则和特点: 1.构造函数在对象实例化时被自动调用 2.构造函数与类同名 3.构造函数没有返回值 4.构造函数可以有多个重载形式 5.实例化对象时仅用到一个构造函数 6.当用户没有定义构造函数时,编译器自动生成一个构造函数默认构造函数:把实例化时不需要传递参数(无参数或全部参数都有默认值)的...原创 2018-05-10 19:36:04 · 252 阅读 · 0 评论 -
leetcode119 杨辉三角1和2(C++)
关于vector<vector<int>> 的初始化问题。如定义一个:vector<vector<int>> tmp;如果不初始化,直接使用:int i=0;tmp[i].push_back(0);会报错,这是因为该二维向量为空,寻找下标索引i第一行找不到,故而报错。二维vector的初始化一般用vector<vector<in...原创 2019-04-26 12:12:35 · 1141 阅读 · 0 评论 -
C++ int、char和string的互相转换
将int转化为char:如121转为['1','2','1'],由于int与char之间的转换需要借助ASC码实现,如1变为’1‘:int t=1;char(t+48);经典的做法是通过栈,从低位到高位逐位读取,存入栈中,再循环pop栈顶元素实现高位到低位的读取。今天看到一种做法:我们可以先把int通过to_string函数转为string类型,然后通过auto关键字遍历字符串,实现从高位...原创 2019-06-03 16:26:04 · 3761 阅读 · 0 评论 -
leetcode 925 长按输入
你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。示例 1:输入:name = "alex", typed = "aaleex"输出:true解释:'alex' 中的 'a' 和 'e' ...原创 2019-06-20 00:10:38 · 249 阅读 · 0 评论 -
leetcode 594 最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。示例 1:输入: [1,3,2,2,5,2,3,7]输出: 5原因: 最长的和谐数组是:[3,2,2,2,3].说明: 输入的数组长度最大不超过20,000.解题思路:用O(n)时间复杂度来实现,首先遍历一次数组,用map记录数字和出现的...原创 2019-06-20 12:25:36 · 258 阅读 · 0 评论 -
leetcode 459 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复...原创 2019-06-20 12:43:59 · 246 阅读 · 0 评论 -
leetcode 1 两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]//哈希表...原创 2019-06-08 16:32:13 · 216 阅读 · 0 评论 -
leetcode 2 两数之和
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2019-06-21 13:53:03 · 226 阅读 · 0 评论 -
leetcode 位运算小结
leetcode 136 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4解题思路:异或的计算性质:2 ^ 3 ^ 2 ^...原创 2019-05-24 16:29:42 · 1481 阅读 · 0 评论 -
leetcode 3 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"w...原创 2019-07-03 00:08:25 · 200 阅读 · 0 评论 -
leetcode 54 59 螺旋矩阵I和II
给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出: ...原创 2019-07-05 00:25:21 · 265 阅读 · 0 评论 -
leetcode 62 63 不同路径I和II
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和 n 的值均不超过 100。示例1:输入: m = 3, n = 2输出: 3解释:从...原创 2019-07-05 13:43:14 · 288 阅读 · 0 评论 -
leetcode 78 子集
给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]class Solution {public: vector<vector...原创 2019-07-05 14:59:45 · 239 阅读 · 0 评论 -
leetcode 90 子集II
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]解题思路:我们看到第 4 行黑色的部分,重复了,是怎么造成的呢?第 4 行新添加的 2 要加到第 3 行的所有...原创 2019-07-06 15:49:28 · 226 阅读 · 0 评论 -
C++浅谈STL容器迭代器失效
参考:https://blog.csdn.net/wangshihui512/article/details/9791517https://blog.csdn.net/petersmart123/article/details/53304437 序列性容器::(vector和list和deque) erase迭代器不仅使所指向被删元素的迭代器失效,而且使被删元素之后的...原创 2018-10-18 10:56:55 · 1243 阅读 · 0 评论 -
C++ float数据精度丢失问题
将float、double转换为字符过程中可能存在精度损失,但是通过%.8lf可以规避(1)float小数点前后加起来有效数字只有6位。当给定的float有效数在6位以内转换为字符不会丢失精度,当有效位数大于6位就会存在精度丢失 //精度没有丢失 char buf[100]={'\0'}; float aa=8000.25; sprintf(buf,"%f",aa...原创 2018-09-20 16:30:25 · 10764 阅读 · 1 评论 -
C++学习记录之继承篇
C++问题记录之继承篇:类的public和private数据成员可以通过public下的成员函数进行访问。实例化的对象无法直接访问到类内public和private数据成员。1.继承方式和数据类型:publicprotectedPrivate三种字符下数据表示的含义及其继承方式。经过public继承后,父类中各数据成员属性保持不变,private不可访问。经过protected继承后,父类中的:p...原创 2018-05-11 20:55:45 · 261 阅读 · 0 评论 -
C++关键字const总结
转自:https://www.cnblogs.com/chogen/p/4574118.htmlconst是一个C++语言的限定符,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。1. 修饰常量用const修饰的变量是不可变的,以下两种定义形式在本质上是一样的:const i...原创 2018-05-18 14:29:54 · 207 阅读 · 0 评论 -
C++学习记录之多态篇
C++问题记录之多态:多态: 相同对象收到不同消息或不同对象收到相同消息时产生不同的动作。静态多态(早绑定):就是在系统编译期间就可以确定程序执行到这里将要执行哪个函数,如:函数重载。动态多态(晚绑定):动态多态则是利用虚函数实现了运行时的多态,也就是说在系统编译的时候并不知道程序将要调用哪一个函数,只有在运行到这里的时候才能确定接下来会跳转到哪一个函数的栈帧。继承是子类使用父类的方法,而多态则是...原创 2018-05-12 13:20:23 · 289 阅读 · 0 评论 -
C++学习记录之模板篇
C++问题记录之模板: 关于友元的注意事项:1.友元关系不可传递。2.友元关系的单向性。3.友元声明的形式和数量不受限制。友元只是封装的补充。友元的使用破坏了封装性。友元函数没有this指针,为什么?因为this指针是在指向类成员本身,但是友元函数并不在类里面,而是在类外面友元函数是不能被继承的,就像父亲的朋友未必是儿子的朋友。友元包括:友元函数,友元类,友元成员函数。友元成员函数:普通成员函数:...原创 2018-05-12 13:26:29 · 229 阅读 · 0 评论 -
虚继承详解及其内存分布
什么是虚继承?根据百度百科:虚继承是面向对象编程中的一种技术,是指一个指定的基类,在继承体系结构中,将其成员数据实例共享给也从这个基类型直接或间接派生的其它类。虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如上图:假设类a是父类,b类和c类都继承了a类,而d类又继承了b和c,那么由于d类进行了两次多重继承a类,就会出现两份相同的a的数据成员或成员函数,...原创 2018-06-04 19:12:51 · 4800 阅读 · 1 评论 -
C++字符串转整型--atoi
先看一个例子:#include<iostream>#include <stdlib.h>#include <stdio.h>using namespace std;int main(){ string s ;cin>>s; int a = atoi(s); cout<<a<<endl...原创 2018-09-06 11:10:35 · 3020 阅读 · 1 评论 -
C++关键字之static和extern
针对static修饰的对象不同,static关键字主要有以下作用:1.延长生存期:一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用域并没有改...原创 2018-09-06 14:29:25 · 1099 阅读 · 0 评论 -
美团笔试--区间统计
基本思想:Map+窗口#include<iostream>#include<vector>#include<cmath>#include<cstring>#include<map>using namespace std;int main(){ int n,k,t;cin>>n>&g...原创 2018-09-10 16:00:09 · 1124 阅读 · 0 评论 -
vector<string>的输入输出问题以及stringstream的使用
一、将flower,flow,flight字符串存放进一个vector<string>中:vector<string> v; string s;getline(cin,s); string tmp; for(int k=0;k<s.size();){ if(s[k]==','||k==s.size()-1){ ...原创 2018-09-18 11:29:04 · 7333 阅读 · 0 评论 -
C++--数字转大写金额
#include<iostream>#include<string>#include<cmath>using namespace std;#include <stdio.h>char *pszNian[]={" ","十","百","千","万","十",&qu原创 2018-09-13 10:37:35 · 2725 阅读 · 5 评论 -
贪婪算法--n位数删除m个求最值问题
键盘输入一个高精度的正整数n(n<=240位),去掉其中任意s个数字后剩下的数字按照原来的次序将组成一个新的正整数。编程对给定的n和s,寻求一种方案,使得剩下组成的新数最小。如:178543 4输出:13178543 5输出:1 主要思想:由于正整数n的有效位数最大可达240位,所以可以采用字符串类型来存储n。那么,应如何来确定该删除哪s位呢?是不是只要删掉最大的...原创 2018-09-14 13:59:52 · 2462 阅读 · 0 评论 -
C++ 实现字符串压缩
字符串压缩:#include <iostream>using namespace std;string myZIP(string str);string myZIP(string str){ string zip; //"aaaabbndaa"压缩后a4b2nda2 int n = 1; for(int i=0;i<str.length(...原创 2018-09-14 14:10:57 · 8514 阅读 · 3 评论 -
leetcode 784 字母大小写全排列
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。示例:输入: S = "a1b2"输出: ["a1b2", "a1B2", "A1b2", "A1B2"]输入: S = "3z4"输出: ["3z4", "3Z4"]输入: S = "12345"输出: ["12345"]注意:S的长度不超过12。S仅...原创 2019-07-06 16:15:41 · 259 阅读 · 0 评论