C++
WYXHAHAHA123
这个作者很懒,什么都没留下…
展开
-
C++ 三
C++中的结构体struct和联合体unionC++中的结构体与C语言中的结构体有重要区别,C语言中的结构体,其中的成员只能是数据成员,而不能是函数成员,而C++中的结构体则是一种特殊的类,其中的成员如果没有说明则是public成员,且可以包含成员变量或者成员函数。C++中的联合体,联合体中的所有成员共用同一块内存空间,同一时刻,只能有一个成员起作用。且系统为联合体所分配的内存空间是联合体...原创 2019-05-20 16:34:06 · 283 阅读 · 0 评论 -
C++ 高度最小的BST
#include<iostream>#include<vector>using namespace std;/**对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。**/class MinimalBST {public: int b...原创 2019-07-26 16:44:00 · 290 阅读 · 0 评论 -
C++ 清除行列
#include <vector>#include<iostream>using namespace std;class Clearer {public: vector<vector<int> > clearZero(vector<vector<int> > mat, int n) { // ...原创 2019-07-22 21:34:46 · 784 阅读 · 0 评论 -
C++ 翻转子串
接下来将阅读 程序员面试金典 这本书,从而复习相应的编程题。1.数组和字符串:数组问题和字符串问题其实是相通的,因为字符串通常可以看作是字符数组,2.哈希表:与字符串和数组很相关的常常考的数据结构是哈希表,它将key映射为数组的一个索引,将对象的value存储到该索引所对应的位置上。#include<string>using namespace std;#in...原创 2019-07-22 22:05:36 · 335 阅读 · 0 评论 -
C++ 输出单层结点
#include<iostream>using namespace std;/**对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表。给定二叉树的根结点指针TreeNode* root,以及链表上结点的深度,请返回一个链表ListNode,代表该深度上所有结点的值,请按树上从左往右的顺序链接,保证深度不超过树的高度,树上结点的值为非负整数且不超过...原创 2019-07-26 19:52:58 · 199 阅读 · 0 评论 -
C++ 检查是否为BST
#include<iostream>using namespace std;#include<vector>/**请实现一个函数,检查一棵二叉树是否为二叉查找树。给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树。算法:二叉树是否是二叉搜索树的充分必要条件是:它的中序遍历序列是单调非递减序列用vecto...原创 2019-07-26 20:53:39 · 200 阅读 · 0 评论 -
C++ 机器人走方格
#include <iostream>#include<vector>using namespace std;/**题目描述有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。**/clas...原创 2019-08-01 08:51:39 · 1717 阅读 · 0 评论 -
C++ 链表中倒数第k个结点
/**输入一个链表,输出该链表中倒数第k个结点。涉及到链表的数据结构,通常使用指针(指向链表节点的指针)使用双指针,pointer1和pointer2,初始情况下,pointer1指向链表的首节点pointer2将会比pointer1快k步,则当pointer2走到链表尾端的时候,pointer1指向的就是链表中的倒数第k个节点**/#include<iostream&...原创 2019-07-23 15:01:38 · 303 阅读 · 0 评论 -
C++ 访问单个节点的删除
#include<iostream>using namespace std;/**实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true**/struct ListNode { int val; struct ListNode *next; Li...原创 2019-07-23 15:19:43 · 585 阅读 · 0 评论 -
C++ 魔术索引
#include<iostream>using namespace std;#include<vector>/**题目描述在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。给定一个int数组A和int n代表数组大小,请返...原创 2019-08-08 14:43:37 · 305 阅读 · 0 评论 -
C++ 魔术索引2
#include<iostream>using namespace std;#include<vector>/**在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个不下降序列,元素值可能相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。给定一个int数组A和int n代表数组大小,请返回一个...原创 2019-08-08 15:17:38 · 290 阅读 · 0 评论 -
leetcode part1 链表
#include<iostream>#include<stdio.h>using namespace std;#include<vector>/**leetcode 刷题教学视频https://www.bilibili.com/video/av29912609?from=search&seid=1017079244112293547第...原创 2019-08-18 19:43:45 · 172 阅读 · 0 评论 -
leetcode part4 递归、回溯、分治
/**part4 递归 回溯 分治递归函数基础: 函数体内部出现了再次调用当前函数的语句每个递归函数中都必须有递归结束/终止条件,当条件满足时,递归终止。如: 用递归算法实现 1+2+3**/#include<iostream>#include<vector>using namespace std;void compute_sum(i...原创 2019-08-25 19:10:03 · 347 阅读 · 0 评论 -
leetcode 200. 岛屿数量
#include<vector>#include<iostream>#include<string>using namespace std;/**leetcode 200. 岛屿数量图的深度优先遍历 DFS 使用栈的数据结构或者递归算法实现算法: 遍历二维矩阵中的每个元素,如果当前位置的字符是'1',则count_num++ ...原创 2019-08-20 21:07:01 · 235 阅读 · 0 评论 -
leetcode part3 贪心
/**贪心算法问题引入: 有1元、2元、5元、10元、20元、50元、100元 的钞票无穷多张,现使用这些钞票支付X元 求问最少需要多少张钞票贪心法:遵循某种规律,不断贪心的选取当前最优策略的算法设计方法**/#include<iostream>#include<vector>using namespace std;int mai...原创 2019-08-22 21:23:32 · 257 阅读 · 0 评论 -
leetcode part7 哈希表与字符串
#include<iostream>#include<vector>#include<string>using namespace std;/**哈希表和字符串哈希表(hash table),是根据关键字值(key)直接进行访问的数据结构它通过把关键字值映射到表中一个位置(数组下标)来直接访问以加快查找关键字值的速度(python中的字典...原创 2019-08-27 21:36:04 · 238 阅读 · 0 评论 -
leetcode part9 动态规划
/**动态规划(设计动态规划算法以解决问题)动态规划题目的代码量都不大leetcode 198. 打家劫舍写出动态规划方程,迭代方程如下(1)初始条件 dp[0]=nums[0] dp[1]=max(nums[0],nums[1])(2)迭代公式 dp[i]=max(dp[i-1],nums[i]+dp[i-2])**/#include<vec...原创 2019-08-31 20:53:30 · 199 阅读 · 0 评论 -
C++ 二叉树平衡检查
/**关于二叉树与图1.从无到有实现二叉树和图2.在二叉树和图中检索/查找target value二叉搜索树:binary search tree所要满足的条件:对于二叉搜索树中任意一个节点它的左子树中的所有数值都比当前节点的关键码小它的右子树中的所有节点的关键码都比当前节点的关键码大二叉搜索树的结构在一定程度上能够提高搜索效率平衡二叉树是指:对于二叉树中的任意一个节点...原创 2019-07-26 16:26:28 · 479 阅读 · 0 评论 -
C++ 集合栈
/**请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。给定一个操作序列int[][2] ope(C++为vector<vector<int>>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的...原创 2019-07-26 14:47:11 · 259 阅读 · 0 评论 -
C++ 双栈排序
/**请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到最后一个元素。算法:题目中说只能使用一个额外的栈解决问题,则说...原创 2019-07-25 15:57:59 · 723 阅读 · 0 评论 -
C++连续子数组的最大和
/**题目描述给定一个数组a[0,...,n-1],求其最大子数组(长度>=1)和输出描述输出一个整数表示最大子数组和*/#include<iostream>using namespace std;int main(){ int n; cin>>n; int *a=new int[n]; for(int i=0;i...原创 2019-05-26 20:21:19 · 1315 阅读 · 0 评论 -
C++中的字符串
/**字符串常量例:"program"各字符连续、顺序存放,每个字符占一个字节,以‘\0’结尾,相当于一个隐含创建的字符常量数组“program”出现在表达式中,表示这一char数组的首地址首地址可以赋给char常量指针:const char *STRING1 = "program";将常量字符串的首地址赋值给常量字符指针,这意味着字符指针所指向的地址中的数据是常量常量的地址必须由...原创 2019-05-26 20:21:31 · 230 阅读 · 0 评论 -
C++数组
#include<iostream>using namespace std;/**数组的存储与初始化数组的存储:数组元素在内存中顺次存放,它们的地址是连续的。元素间物理地址上的相邻,对应着逻辑次序上的相邻数组的名字是指针类型/地址类型,数组名字是数组首元素的内存地址一旦定义好数组后,数组名是地址类型的常量,不能再被赋值对数组初始化,即定义数组时,需要给数组初始值...原创 2019-05-22 20:26:46 · 1100 阅读 · 0 评论 -
C++中的类和对象
/**C++中的类和对象面向对象程序设计的基本特点:抽象,封装,继承和多态(1)抽象:对同一类对象的共同属性和行为进行概括,形成类 抽象包括:数据抽象和代码抽象(2)封装:将抽象出来的数据和代码封装在一起,形成类,用class {}实现封装 类的封装使得用户在调用类的外部接口时只需要关心接口的功能即可,而不需要关注具体的代码实现(3)继承:在已有类的基础上,进行扩展形...原创 2019-05-23 15:24:06 · 161 阅读 · 0 评论 -
C++中的多态性
/**运算符重载对于自定义的数据类型(即C++中的类),如果需要使用系统中已经定义好的运算符,比如系统中定义的加法操作都是仅仅对于实数进行的加法运算,而如果需要对于自定义的复数类别进行加法运算,则需要对于加法运算符进行重载运算符的重载就是将C++语法中预定义好的运算符针对新的数据类型而赋予新的含义运算符重载的语法规则: C++ 几乎可以重载全部的运算符,而且只能够重载C++...原创 2019-06-06 22:39:47 · 181 阅读 · 0 评论 -
C++ 查找数组中第k小的数
/**题目描述给定一个整数数组a[0,...,n-1],求数组中第k小数输入描述首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n然后输出n个整形元素,每个数的范围[1, 5000]输出描述该数组中第k小数样例输入4 21 2 3 4样例输出2**/#include<iostream>using names...原创 2019-06-03 13:34:11 · 5219 阅读 · 1 评论 -
C++中的继承和派生
/**继承与派生概述继承与派生是同一过程从不同的角度看保持已有类的特性而构造新类的过程称为继承在已有类的基础上新增自己的特性而产生新类的过程称为派生。被继承的已有类称为基类(或父类) base class派生出的新类称为派生类(或子类) derived class继承的目的:实现设计与代码的重用。(充分利用原来已经有的类和代码)派生的目的:当新的问题出现,原有程序无法解...原创 2019-06-04 14:16:22 · 642 阅读 · 0 评论 -
C++ 二维数组中的查找
/**C++中的vector容器int size() const:返回向量中元素的个数题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。算法思路:从二维数组的左下角或者右上角开始进行查找/搜索以从数组的左下角开始查找的过程为例...原创 2019-07-11 14:14:27 · 1486 阅读 · 0 评论 -
c++ 链表分割
#include<iostream>using namespace std;/**编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。算法:涉及到链表的问题一定要使用到指针(指向链表节点的指针)指针c...原创 2019-07-23 16:33:21 · 1116 阅读 · 0 评论 -
C++ 链式A+B
#include<iostream>using namespace std;/**有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)算法:使用两个指针分别指向链表A和链表B的...原创 2019-07-23 20:21:06 · 293 阅读 · 0 评论 -
C++ 回文链表
/**请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。**/#include<iostream>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) :...原创 2019-07-23 20:50:54 · 338 阅读 · 0 评论 -
C++ 寻找下一个结点
#include<iostream>using namespace std;#include<vector>/**请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继)。给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值。保证结点的值大于等于零小于等于100000且没有重复值,若不存在后继...原创 2019-07-29 20:53:00 · 270 阅读 · 0 评论 -
C++ 二进制插入
/**C++中的位运算位运算是进行代码优化经常会用到的操作(1)将一个数乘以2的n次方,相当于将这个数左移n位有两个32位整数n和m,请编写算法将m的二进制数位插入到n的二进制的第j到第i位,其中二进制的位数从低位数到高位且以0开始。给定两个数int n和int m,同时给定int j和int i,意义如题所述,请返回操作后的数,保证n的第j到第i位均为零,且m的二进制位...原创 2019-07-24 22:04:59 · 535 阅读 · 0 评论 -
C++ 二叉树中和为某一值的路径
#include<iostream>using namespace std;#include<vector>/**输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意:在返回值的list中,数组长度大的数组靠前)**/struct TreeNode {...原创 2019-07-29 21:38:35 · 373 阅读 · 0 评论 -
C++ 猫狗收容所
/**题目描述有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。给定一个操作序列int[][2] ope(C++中为vector<vector<int>>)代表所有事件。若第一个元素为1,则代表有动物进入收容所,第二个元素为...原创 2019-07-25 15:10:20 · 1196 阅读 · 0 评论 -
C++面试关键点
1.虚函数#include<iostream>using namespace std;/**C++中的虚函数**/class Base{// 基类public: virtual void func(){ cout<<"Base Function"<<endl; }};class Derived:p...原创 2019-09-18 00:46:32 · 232 阅读 · 0 评论