
C++题目
C++题目
Hots3y
这个作者很懒,什么都没留下…
展开
-
最短无序连续子数组
题目:给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。找到的子数组应是最短的,请输出它的长度。示例 :输入: [2, 6, 4, 8, 10, 9, 15]输出: 5对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。class Solution {public: int findUnsorted...原创 2020-02-01 14:27:00 · 395 阅读 · 0 评论 -
验证回文串
题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:将空字符串定义为有效的回文串,需要注意测试用例:示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “0P”输出: false需要注意此测试用例(数字0的ASCLL为48, P的ASCLL为80)示例 3:输入: “.,...原创 2020-02-01 13:59:24 · 311 阅读 · 0 评论 -
在排序数组中查找元素的第一个和最后一个位置
题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。要求:算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。class Solution {public: vector<int> searchRange(vector<int>& nums, ...原创 2020-01-31 21:07:18 · 273 阅读 · 0 评论 -
字符串转换整数
题目:实现一个函数,使其能将字符串转换成整数。需要注意以下几点:①:该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。②:当第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。③:该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以...原创 2020-01-31 20:02:21 · 336 阅读 · 0 评论 -
二进制求和
题目:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。class Solution {public: string addBinary(string a, string b) { if(b.size() > a.size()) swap(a, b); int a_pos = a.size() - 1, b_pos = b.siz...原创 2020-01-30 21:38:46 · 165 阅读 · 0 评论 -
两数之和
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。说明:假设每种输入只会对应一个答案,但是,不能重复利用这个数组中同样的元素。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) {...原创 2020-01-30 20:47:37 · 140 阅读 · 0 评论 -
最后一个单词的长度
题目:给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:若字符串最后有空格,需要跳过空格找最后一个单词。class Solution {public: int lengthOfLastWord(string s) { int size = s.size(), num = 0; while (s[size ...原创 2020-01-30 20:13:53 · 199 阅读 · 0 评论 -
第三大的数
题目:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [1, 2]输出: 2示例 2:输入: [2, 2, 3, 1]输出: 1class Solution {public: int thirdMax(vector<int>& nums) { int i, size = nu...原创 2020-01-30 13:17:57 · 257 阅读 · 0 评论 -
非负整数加一
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。说明:最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。除了整数 0 之外,这个整数不会以零开头。class Solution {public: vector<int> plusOne(vector<int>& digits) { int pos = digits.si...原创 2020-01-29 13:08:22 · 434 阅读 · 0 评论 -
合并两个有序数组
题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,...原创 2020-01-28 20:13:17 · 177 阅读 · 0 评论 -
按奇偶排序数组
题目:给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。示例:输入:[3,1,2,4]输出:[2,4,3,1] ,[4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 都正确。class Solution {public: vector<int> sortArrayByParity(vector<int>&...原创 2020-01-28 12:45:32 · 224 阅读 · 0 评论 -
仅仅反转字母
题目:给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 :输入:“a-bC-dEf-ghIj”输出:“j-Ih-gfE-dCba”class Solution {public: bool IsLetter(char tmp){ return (tmp >= 'a' && tmp ...原创 2020-01-28 12:05:49 · 218 阅读 · 0 评论 -
有序数组的平方
题目:给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 :输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]class Solution {public: vector<int> sortedSquares(vector<int>& A) { int i; ...原创 2020-01-26 22:08:08 · 185 阅读 · 0 评论 -
长按键入
题目:你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = “saeed”, typed = “ssaaedd”输出:false示例 2:输入:name = “leele...原创 2020-01-26 21:51:32 · 220 阅读 · 0 评论 -
存在重复元素
题目:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。class Solution {public: bool containsDuplicate(vector<int>& nums) { set gather(nums.begin(), nums.end...原创 2020-01-26 20:56:32 · 190 阅读 · 0 评论 -
赎金信
题目:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。class Solution {public: bool canConstruct(string ransomNote, string magazine) { ...原创 2020-01-18 19:54:41 · 283 阅读 · 0 评论 -
搜索插入位置
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。class Solution {public: int searchInsert(vector<int>& nums, int target) { int i; for(i = ...原创 2020-01-16 21:01:56 · 210 阅读 · 0 评论 -
旋转数组
题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。要求输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]class Solution {public: vo...原创 2020-01-16 20:41:01 · 188 阅读 · 0 评论 -
移除元素
题目:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。要求:不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。class Solution {public: int removeElement(vector<int&g...原创 2020-01-16 20:31:18 · 156 阅读 · 0 评论 -
参数解析
题目描述在命令行输入如下命令:xcopy /s c:\ d:\,各个参数如下:参数1:命令字xcopy参数2:字符串/s参数3:字符串c:参数4: 字符串d:请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则:1.参数分隔符为空格2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files”...原创 2019-11-22 19:48:09 · 267 阅读 · 0 评论 -
Const参数,Const变量
const可以修饰变量,修饰函数的参数、返回值,甚至函数的定义体。1.const修饰函数的参数const可以修饰传入参数,防止传入参数被修改,起到保护的作用。但是如果是“值传递”,则无需用const修饰。因为函数会自动产生临时变量用于复制该参数。void func(int x){}//就不用写成void func(const int x)对于非内部数据类型的参数而言,像void fun...原创 2019-11-18 14:14:08 · 740 阅读 · 0 评论 -
野指针
野指针是指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为 NULL避免,只能通过养成良好的编程习惯来尽力减少。“野指针”不是NULL指针,是指向被释放的或者访问受限的垃圾内存的指针。“野指针”是很危险的,if无法判断一个指针是正常指针还是“野指针”。野指针的成因主要有三种:一、 指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL...原创 2019-11-17 20:45:09 · 305 阅读 · 0 评论 -
十进制进行转换
题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例输入 7 2输出 111#include <iostream>#includ...原创 2019-11-13 13:29:37 · 372 阅读 · 0 评论 -
统计回文
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。有两个字符串A,B,将字符串B插入字符串A使产生的字符串是一个回文串。请问有多少方法,可以使新串是一个回文串。例如:A = “aba”,B = “b”。这里有4种把B插入A的办法:在A的第一个字母之前: “baba” 不是回文在第一个字母‘a’之后: “abba” 是回文在字母‘b’之后: “...原创 2019-11-12 12:44:17 · 161 阅读 · 0 评论 -
计算糖果
题目描述:A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。解法一:int main(){ i...原创 2019-11-11 19:32:36 · 174 阅读 · 0 评论 -
在字符串中找出连续最长的数字串
输入描述:输入一个字符串。输出描述:输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度示例:输入 abcd12345ed125ss123058789输出 123058789#include <iostream>#include <string>using namespace std;string lo...原创 2019-11-17 21:49:36 · 171 阅读 · 0 评论 -
数组中出现次数超过一半
解题思路:数组中出现次数超过一半,将数组进行排序,如果存在这个数的话这个数一定出现在数组中间位置。取出中间数据,将数组遍历一遍,数出此数据出现的次数。若次数超过一半,则返回此数,否则返回0。class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { sort(numbers.begi...原创 2019-11-09 16:04:27 · 155 阅读 · 0 评论 -
倒置字符串
输入描述:I like beijing. 输入用例长度不超过100输出描述:依次输出倒置之后的字符串,以空格分割示例:输入 : I like beijing.输出 : beijing. like I#include <iostream>#include <string>using namespace std;int main(){ string st...原创 2019-11-09 14:18:55 · 207 阅读 · 0 评论 -
删除公共字符,输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如:输入“They are students.” 和 “aeiou”,则删除之后的第一个字符串变成“Thy r stdnts.”输入描述: 每个测试输入包含2个字符串。输出描述: 输出删除后的字符串 。示例:输入They are students. 和 aeiou 输出 Thy r stdnts.#include <iostream>#include <string...原创 2019-11-08 23:46:43 · 711 阅读 · 0 评论 -
牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i,现在要将这些选手进行组队,组成n个队伍,即每个队伍3人.该队伍的水平值等于该队伍中第二高水平值。
例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。如样例所示:如果牛牛把6个队员划分到两个队伍 如果方案为:team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总...原创 2019-11-08 23:04:14 · 738 阅读 · 0 评论 -
智能指针
智能指针当一个函数中出现大量的return,那么在每一次return前都要将new出来的变量进行delete,这种操作非常麻烦而且容易出错,还容易造成内存碎片,智能指针就是用来解决这种问题的。智能指针是一个类模板,主要功能是假装自己是一个指针,重载解引用和 ->,通过析构函数自动释放指针,解决上面的问题。智能指针就是更加方便,安全的使用临时new出来的变量或对象的。1、auto_pt...原创 2019-11-05 23:05:26 · 165 阅读 · 0 评论 -
逆波兰表达式求值
根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 :输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: ((2 + 1) * 3) = 9示例 :输入: [...原创 2019-10-11 21:28:23 · 174 阅读 · 0 评论 -
判断是否为栈的弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:容器pushV存放压入顺序,容器popV存放出栈顺序遍历容器pushV,使元素压入...原创 2019-10-11 20:56:24 · 212 阅读 · 0 评论 -
设计一个日期,返回该日期n天前的日期
三、设计一个日期类,包含以下功能:1、只能通过传入年月日初始化。2、可以加上一个数字n,返回该日期n天前的日期。方法:逐月相减//建立Date.h文件#pragma once#include <iostream>using namespace std;typedef unsigned int uint;class Date{ uint m_year; uint...原创 2019-09-07 23:09:26 · 464 阅读 · 0 评论 -
C++中的引用
一、引用引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。引用特性(引用代替指针完成跨栈)引用在定义时必须初始化一个变量可以有多个引用一个引用一旦引用了一个变量,就不能再引用其他变量引用比指针更安全(指针可能改变指向,可能为NULL或者为野指针)引用不改变指向,不能为空为野,操作引用就是操作变量本身注意...原创 2019-09-03 18:54:26 · 132 阅读 · 0 评论 -
初始化和explicit函数
初始化列表1、狭义初始化在定义变量的时候直接进行初始化的这种行为叫做狭义初始化:int a = 3;2、广义初始化第一次给变量赋值就叫做初始化的情况叫广义初始化int a;...//跟a无关的代码a = 3初始化列表相当于狭义初始化,而构造函数内部相当于广义初始化所以初始化列表可以解决一些只能用狭义初始化进行初始化的变量,例如:const变量引用没有无参构造的类的对...原创 2019-09-07 09:26:20 · 272 阅读 · 0 评论 -
C++--函数重载、名字修饰
一、函数重载C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或顺序)必须不同。函数重载的原理函数名,所在域和参数列表,以上三个必须完全相同,才会出现冲突。二、名字修饰在C语言中,名字修饰为_函数名,所以只要函数名相同,就会导致冲突在C++语言中:?函数名@域名1@域名2@@参数列表@Z的格式构成int func(int)?func@...原创 2019-09-03 18:46:50 · 279 阅读 · 0 评论 -
C++--缺省参数
一、缺省参数在C++中,缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。全缺省参数void TestFunc(int a = 10, int b = 20, int c = 30) {cout<<"a = "<<a<<endl;cout<<"b = "<<...原创 2019-09-03 18:33:52 · 184 阅读 · 0 评论 -
命名空间
一、名字空间命名空间用到关键字namespace,后跟命名空间的名字,然后加一对{},{}中为命名空间的成员。二、名字空间的规则1、名字空间可以解决函数、全局变量名重复的问题,包含在不同的名字空间里的重复函数是不同的。(包含了不同的名字空间,实际就是两个完全不同的函数)2、名字空间允许嵌套,嵌套内部和外部没有任何关系3、名字空间允许重名,重名的名字空间会被合并注意:1、一个命名空间就...原创 2019-09-03 18:28:32 · 152 阅读 · 0 评论 -
设计日期,求出将年月日向后推n天的日期
设计一个日期类,包含以下功能:1、只能通过传入年月日初始化。2、可以加上一个数字n,返回一个该日期后推n天之后的日期。方法:对日期实现逐月累加//建立Date.h文件#pragma once#include <iostream>using namespace std;typedef unsigned int uint;class Date{ uint m_yea...原创 2019-09-07 22:50:34 · 825 阅读 · 0 评论