- 博客(43)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 c++日常练习(18)-----轮转数组
题目给你一个数组,将数组中的元素向右轮转k个位置,其中k是非负数。实例输入: nums = [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]输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右轮转 1 步: [99,-1...
2022-04-18 19:08:55
940
1
原创 c++日常练习(18)----字典序排列
题目:给你一个整数n,按字典序返回范围[1, n]内所有整数。你必须设计一个时间复杂度为O(n)且使用O(1)额外空间的算法解体思路:首先,我们要知道什么是字典序排列。大家都使用过字典吧,应该知道字典的查询方法,而这些方法,就是字典序排列。以英文字典为例,在查询英语但单词时,首先查询它的第一个字母(a~z)然后查询第二个字母(a~z),以此类推,短字符的单词在长字符单词前面。例如:look就在looker前面。通过以上解说,我们就大致有了了解。举例:输...
2022-04-18 18:01:03
2296
原创 c++日常练习(17)----数组的查找和插入
给定一个已序的数组(升序),输入值target,返回数组中该值的坐标,若没查询,则输出插入数据的坐标值。要求:时间复杂度O(n^2)思路:查询数组比较,我们可以通过暴力查询得到,及for循环。而通过二分查找,则更为简洁,且时间复杂度仅为O(lngN)。二分查找思路:由题目可以知道,数组中并不一定拥有该数据,因此,我们可以结合题目,修改条件:返回第一个大于等于该数据的坐标,如此一来,无论是等于,还是插入,都可以找出其坐标。int FindAadApp(vector<int&g.
2022-04-17 20:20:28
1195
原创 【无标题】c++日常练习(16)——从中序与前序遍历序列构造二叉树
#从中序与前序遍历序列构造二叉树给定一个树的前序和中序遍历,请构造二叉树并返回其根节点。#include <stdio.h>#include<vector>using namespace std;struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};class Solution{private
2022-04-14 20:55:21
1222
1
原创 vector扩容
扩容原理申请一块更大的内存,让原内存数据拷贝到新内存里,再释放原内存。因此容器在进行内存的改变时,会导致迭代器失效。(注意,数据删除时并不会导致内存的改变,而是让被删除的数据无法访问,因此迭代器不会失效)扩容方式vector的扩容一般有两种方式:半步扩容法(即扩容1.5倍)和2倍扩容法(即扩容2倍)两者之间的区别重点表现在空间和时间两方面。2倍扩容时间快,但是不能使用之前的空间,造成空间上的浪费。而1.5倍扩容刚好相反,节省了空间,却因此消耗了更多的时间。扩充以半步扩充法为例:
2022-04-09 15:55:42
6424
原创 数据结构————希尔排序
希尔排序终点在于分组。分组的规律:数组长度除以2。即[low+(high-low)]/2;以此作为增量让每组的同号相互比较。(注意:如果数组是奇数,则会导致分组平均,会产生第三个组,则让这组数据与前一组相比较)数据6就和数据4相互比较。然后再次循环,并且以第一次分组数除以2取整,再次分组。直至增量为1。同时,希尔排序是在插入排序的基础上进行的。//递归排序void intsert_sort2(int arr[], int size){ int i, j, ...
2022-04-06 18:03:50
4642
原创 c++日常练习(15)----x的平方根
实现int sqrt(int x)的函数。计算并返回x的平方根,其中x是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被抹去。在计算的时候我们需要注意两点。1、x为0的时候,直接输出结果0;2、x不为零的时候,我们只需要确定num*num>x并且(num+1)*(num+1)<x的值即可。#include<iostream>using namespace std;int sqrt(int x){ if (x == 0) {..
2022-04-04 18:02:49
993
1
原创 c++日常练习(16)----报数游戏
首先,会给他们一人一个编号,并且每个人的编号都不相同。接下来的每一个回合,后悔给出一个数,编号超过这个数字的最好编号报数。如果没有人的编号大于这个数,那么编号最大的这个数报数,每个人可以重复报数。会按照一个列表舒顺序报出每回合的书,朋友们想知道每回合报出的编号应该是多少。首先:1、我们创建一个数组,并出入数据,作为每个人的编码。然后:2、我们需要找出最大值,并判断最大值与输入的数据的大小。 3、如果数据大,则直接输出最大值,反之则再次判断输入值与各个数据之间的大小,并且...
2022-04-04 18:02:13
4998
原创 c++日常练习(14)————杨辉三角
杨辉三角:给定一个非负整数numRows,生成{杨辉三角}的前numRows行。要求:输入n,打印出整个杨辉三角首先,我们知道,杨辉三角的左右两边都是数值一,二中心数据为左上侧和右上侧一位数之和。例如: 1 1 1 1 2 1 1 ...
2022-04-03 16:04:58
1298
原创 c++日常练习(13)-----数组加一
题目:给定一个数字由整数数组组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。例如:输入digits=[1,2,3]输出:[1,2,4]输入digits=[4,3,2,1]输出:[4,3,2,2]提示:1<=digits.length<=100;0<=digits[i]<=9;对于这一题的思路:我们只需要把数字一一输入到数组中,并且加一即可。唯一注意的是:数字的进位。#includ..
2022-03-30 20:18:32
2235
原创 c++日常练习(12)----国名排名
小李准备明天的广交会,明天有来自世界各过的客房跟他们谈生意,效力要尽快整理出名单给经理,你能帮她把客户来自的国家按照英语字母的典次排好吗?输入:第一行 位一个N(N<100)表示N个国家,第二行到第N+1行分别为N个国家的名字。输出:总计n行,为n个国家按照字典的顺序排列,每一行为一个国家。#include<iostream>#include<string>using namespace std;string country[1000];int m.
2022-03-29 21:08:41
1478
原创 c++日常练习(11)------分割链表
给你一个链表头结点head和一个特定值x;请你对链表进行分割,使得所有小于x的节点都出现在大于或者等于x的结点之前。并且,保留两个分区中每个节点的初始相对位置。即:在一个链表中,把所有小于x的术都放到X的前面,大于或者等于的放在后面,并且各节点之间的顺序不乱。思路:1、创建链表。2、遍历列表,分别让各个节点与x节点比较。大于或等于x的节点值与接下来第一个小于x的节点值互换。3、记录第一次和最后一次节点的位置。当再次寻找时无法找到符合条件节点,此时把大于x的节点插入到小于x的节点后..
2022-03-28 11:28:20
1028
原创 c++日常练习(10)---计算N的值
计算第N项的值。s=(1+1)+(1+2)+(1+2+3)+(1+2+3+4)+''''''+(1+2+3+'''+n)可以看成:s=1+(1)+(1+2)+(1+2+3)+'''+(1+2+3+'''+n);#include"stdio.h"int add(int n){ int s=1; for (int i = 1; i <= n; i++) { for(int j=1;j<=i;j++) s += j; } return s;}int..
2022-03-28 10:21:38
407
原创 C++日常练习(9)-------重复元素
给定一个整数数组,判断是否存在重复元素。如果一个值在数组中出现至少两次,函数返回true;否则返回false。例如:【1,2,3,4】输出:flase例如:【1,2,3,3】输出:true。#define _CRT_SECURE_NO_WARNINGS#define NUM 10#include"stdio.h"int Return(int*arr, int num){ for (int i = 0; i < num; i++) { for (int j = .
2022-03-28 09:58:23
1017
原创 c++日常练习(8)
输出回文字符串。例:输入“asdfgfdas”输出结果是“dfgfd”输入“addf”输出结果是“dd”解体思路:本题是对字符串的基本应用。在例题中,我们发现回文字符串又两种输出结果。1、ada形式;2、aa形式。因此,我们应该分别对两种形式都做出考量。1、首先确定中心值。ada形式为的。aa形式为第一个a。2、从中心坐标左右延伸,判断是否相等,是就继续判断左右第二个值。不相等就输出结果。注意:在判断左右值之前,要先判断左值坐标小于或者等于中心值坐标。并且右值相应..
2022-03-27 20:59:23
595
原创 小朋友过河(链表)
一天,7年纪三班的小朋友们在两位老师的陪同下去某座小山郊游。 时间刚到中午,天气突然骤变,无奈之下,老师只好陪同小朋友们下山。 途径一条小河,因为天气问题,老师要求小朋友们手拉着手,并且一个接着一个的过河。 两位老师会分别陪同因为天气阴暗,小朋友们都不敢作为第一个过河的人。 这时候,小强站了出来,要充当做勇敢的孩子。 于是,小强就离开小朋友们,站到两位老师的身边。小强因为是第一个小朋友,因此他就是首节点。 因为只有小强一个人的原因,小强后面不再有人,此时小强的下一位是空。 于是,小强也是尾节点.
2022-03-26 21:32:39
609
原创 汉诺塔游戏
一共a,b,c三个柱子,第一个柱子上从上到下依次串这n个从小到大的盘子,要求把盘子从a柱子移动到c柱子上,盘子顺序不变,依旧是从上到下依次变大。但是每次移动后结果都不能把大盘子放到小盘子上面。这是汉诺塔的基本规则,运用编程思维,就仅仅用递归思路能完美完成。第一步:首先,把A上除了最后一个(N)以外的所有盘子都移动到B上,然后N移动到C,在把B上所有盘子移动到C。第二步:对于A移动到B,B在移动到C。可以看成又一次重复步骤一,只是每个移动之后的柱子字母不同。第三步:一直重复步骤二,...
2022-03-25 20:43:37
3482
原创 从头开始学习英语(名词)
英语有十大词类:名词:一般是人或物品的名称,或者是抽象的事物。特指名词,普通名词,集体名词,个体名词,抽象名词,物质名词。可数名词:单变复数:1、一般加s,2、以s,x,sh,ch结尾的,加es.3、以辅音字母+y结尾的,变Y为i+es(元音字母:AEIOU)4、以f、fe结尾的,变f、fe为v加es。5、以o结尾的,一般加s,个别加es(黑人Negro)(英雄hero)(西红柿tomato)(土豆potato)(芒果Mango)(火山volcano)(回echo)。.
2022-02-27 23:11:29
405
原创 贪吃蛇(欢乐小游戏)
#include"墙.h"#include"标头.h"#include"蛇.h"#include"食物.h"#include <iostream>#include <string>#include<conio.h>#include<windows.h>#pragma comment(lib, "winmm.lib ")using namespace std;//墙class Wall{public: Wall(); ~.
2022-02-23 17:06:31
9179
3
原创 俄罗斯方块
大家好,我是作者:隐匿269,今天我带来的是小游戏:俄罗斯方块。俄罗斯方块是一个发行时间很长的游戏了,也是经典游戏之一,关于俄罗斯方块的游戏规则,相信大家都有一定了解,在这里,作者粗显的说明一下1、标准大小:行宽为10,列高为20,以每个小正方形为单位。2、组由4个小型正方形组成的规则图形,S、Z、L、I、O、T。3、:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。4、方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始..
2022-02-20 22:14:59
3730
1
原创 c++11新增细节
//1、初始化 int a=0; int b(6); int c{ 7 }; int d{ (int)8.2 }; cout << a << endl;cout << b << endl; cout << c << endl; cout << d << endl; //2、指针置空 int *p1 = NULL; int ...
2022-02-14 22:25:26
294
1
原创 c++日常练习(7)
给定整数数组nums和目标值target,返回下标package LiKou;public class demo1 { public static int[] twoSum(int[] nums, int target) { int ran = nums.length; //第一个for循环表示左边的数,所以它是长度不大于(ran-1) for(int i=0; i<ran-1;i++){ //第二个for循环表示右边的数,注意:它是左边数加一(i+1) for(in
2022-02-13 23:43:06
480
2
原创 推箱子(用图形库)
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include"conio.h"#include"graphics.h"#include <Windows.h>int map[][10][10] = { /*第一关*/ {{1,1,1,1,1,1,1,1,1,1},{1,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,1},{1,..
2022-02-11 22:02:04
555
1
原创 c++日常练习(6)
实现五则运算:设计一个可以完成任意五则运算(加法/减法/乘法/除法/输入格式多行输入,每输入一行数据对应输出一行。每行输入格式为a#b,其中#E(+一,*/,%a,b均为自然数输出格式每行输出对应的计算结果;当运算为除法/取余的时候,如果除数为0,输出WA。输入样例2+229:274*56/74%34%0输出样例42001WA#include<stdio.h>intmain()inta;intb;charoperation...
2022-02-10 23:27:45
647
2
原创 c++日常练习(5、模板)
#include <iostream>#include <string>using namespace std;template<class Type>class link{public: Type num; link *next;private:};//创建template<class Type>link<Type> *init(){ link<Type> *a = new link<Typ..
2022-02-09 22:51:18
894
1
原创 多态(二、虚函数)
在类里面,用virtual关键字修饰的函数(数据)被称为虚函数。虚函数的数据储存在属于自己的虚函数表,通过虚函数指针指向。在类被继承的时候,虚函数表内的数据也会别继承,但是虚函数表不会被继承。#include <iostream>#include <string>using namespace std;class A{public: A() { cout << "A带参构造调用" << endl; } A(int x)//带参构造
2022-02-07 20:50:49
6875
2
原创 多态(一)
大家好,我是作者隐匿269 ,众所周知:多态,继承和封装。是c++的三巨头,其中又以多态最为复杂。今天我们就开详细说一说多态。多态,其实也并不麻烦,往简单来说,多态就是实现统一方法的调用,完成不同的效果,方便程序的接口实现。多态相较于类和类之间派生关系,又多了几点不同1、函数名联编(与多态有所关联,又关联不大)2、兼容性3、虚函数(关键)1、函数名联编:可分为动态联编和静态联编。静态联编就是在编译时就已经确定函数指向,因此又称为早期联编。动态联编(晚期联编):..
2022-02-06 22:19:47
342
2
原创 教务管理系统(链表)
大家好,我是作者:隐匿269,今天我带来的是用链表制作教务管理系统。教务管理系统呢,其实就是一个个链表互相指向,所组成的链表网。我们只需要创建两个链表就行了,一个是具体数据,一个指向另一个链表。#include"Link.h"#include <iostream>#include <string>#include<math.h>using std::string;using std::cin;using std::cout;us...
2022-02-05 18:10:55
976
1
原创 C++日常练习(4)
18、实现一个对单链表进行冒泡排序的函数,以链表的头节点指针作为函数参数传递(头节点不存储数据)。#define _CRT_SECURE_NO_WARNINGS#include"stdio.h"#include"stdlib.h"typedef struct Linked{ int num; struct Linked *next;}S;typedef struct L{ S *head; S *end; int x; int lenght;}LL;LL *arr_in
2022-02-01 21:17:25
873
1
原创 c++日常练习(3)
编写一个数组,求出其最大值,最小值,并输出两者的下标,然后求出差值排序(从大到小) #define NUM 5#include <iostream>#include <string>using namespace std;int main(){ int arr[NUM]; int MAX = 0, MIN = 0; int num =0; cout << "请输入数组数据:" << endl; for (int i ..
2022-01-31 22:17:12
331
1
原创 C++日常练习(2)
创建一个类,并用公有化继承,输出子类class A{public:void drow(){return num;}void cin_x(int num){this->num=num;}private:int num;};class B:public A{pubilc:void cout_x(){cout<<num<<endl;}}int main(void){A a;B b;int num;cin>>num;a.c
2022-01-30 23:19:13
542
1
原创 c++日常练习(1)
设计一个程序,要求有以下功能:(1)声明一个长度为10的整型数组;(2)输入数组元素;(3)寻找数组中的最大值元素和这个元素的下标;(4)输出最大值元素的值和它的下标值。#include<iostream>#include<cstdlib>using namespace std;void sequence(int a[], int i){ for (int x = 0; x < i - 1; x++) { for (int w = 0
2022-01-29 22:40:02
685
1
原创 c++速成日记(多态)
大家好,我是作者:隐匿269。今天我来为大家介绍多态。继承,多态和封装是c++另类的三个重点,封装,顾名思义就是封装数据,保护隐私。继承则是加深了类之间的练习。那么,多态又是什么呢,有什么样的作用,形式规则又是什么呢?阅读这篇文章,相信你会对多态有一个深入的印象。如果喜欢我的文章。记得点赞加关注。当然,如果有什么不解或发现了什么错误,欢迎在评论区发言。 一、函数名联编 二、多态 三、纯虚函数 四、final 一、函数名联编1、什么是函数名联编c++语言拥有.
2022-01-24 22:54:52
342
1
原创 多态基础练习
#include"Windows.h"#include <iostream>#include<conio.h>#include <iostream>#include <string>#include<time.h>using namespace std;class hero_fathar{ //属性 public: hero_fathar(); ~hero_fathar(); string name; //.
2022-01-22 21:15:55
249
1
转载 飞机大战——有图片,有声音
大家好,我是作者:隐匿269,今天我带来的是用链表制作游戏,飞机大战(俗称:打飞机小游戏)。我会运用到图形库,没有图形库的伙伴不用着急,把打印图片的步骤省略,代码也能运行。一、准备(大纲)编程时,首先要做的就是整理好思路。我们要思考飞机大战的游戏规则,以及飞机的移动,敌机、子弹的创建和销毁等。总的可以分为一下几个环节。* 1、初始化地图窗口,加载图片,飞机链表结构体的实现,变量的定义 * 2、生成我放飞机,并移动 * 3、发射子弹、移动、销毁 4...
2022-01-21 15:42:19
470
2
原创 飞机大战(链表)
大家好,我是作者:隐匿269,今天我带来的是用链表制作游戏,飞机大战(俗称:打飞机小游戏)。我会运用到图形库,没有图形库的伙伴不用着急,把打印图片的步骤省略,代码也能运行。一、准备(大纲)编程时,首先要做的就是整理好思路。我们要思考飞机大战的游戏规则,以及飞机的移动,敌机、子弹的创建和销毁等。总的可以分为一下几个环节。* 1、初始化地图窗口,加载图片,飞机链表结构体的实现,变量的定义 * 2、生成我放飞机,并移动 * 3、发射子弹、移动、销毁 ...
2022-01-20 15:35:53
3017
2
原创 c++基础练习(单例)
首先介绍一下单例(单实例类):就是只能创建一个对象的类。废话不多少,先看代码。#include <iostream>#include <string>using namespace std;class hero{public: static hero*b(); void name2(string name) { this->name = name; } string name1() { return name; } void stras
2022-01-08 16:22:56
394
1
原创 c++基础练习(顺序表)
#include <iostream>#include <string>#include"cstdlib"using namespace std;class name{public: //构造函数 name() { lenght = 0; data = 0; } //析构函数 ~name() { delete[data]arr;//释放内存 arr = nullptr;//使其成为野指针 } void newName(int data)..
2022-01-07 21:20:43
559
1
原创 c++基础学习(第五节课 静态)
一、静态数据成员定义关键字 strtic二、静态数据成员的特点1、类中的静态数据成员,有一个共享的特点。这个数据只有一个内存,不属于任何对象。所有对象都可以用(这个类的对象)2、静态数据成员的初始化应该在类外面进行3、访问方式对象.静态数据对象类名::静态数据成员三、静态成员函数的定义在类内部,函数加入static,在外部,不用加。class MyClass{ public: //静态成员函数,内部定义 strtic void fun(){
2022-01-06 09:30:58
575
1
原创 c++基础学习第四节课(特殊构造函数)
众所周知,构造函数的作用是类在创建对象时的初始化,而拷贝构造函数则是构造函数里的一种特殊构造。构造函数上篇文章我已经做过介绍,详情请看:c++基础学习第二节课拷贝构造函数拷贝构造:是C++特有的,他是一种特殊的构造函数用于基于一个同一个类的的第一个对象去创造和初始化的一个对象第一的参数是本类的对象的引用(const)一、什么是拷贝构造函数一种特殊的构造函数,同一个类的一个对象去创造或初始化一个对象在没写的时候,是默认存在的,自己写了之后,系统默认的就会消失(这一点,就
2022-01-04 21:59:26
494
1
如何同时运行两个类,互不影响
2022-01-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人