自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 Map、Set容器(LeetCode 242.有效的字母异位词 、349两个数组的交集、202快乐数、两数之和)

map 容器中存储的各个键值对一般都选用 string 字符串作为键的类型,默认按键值队中的键进行排序,map的一个元素为pair结构,pair.first和pair.second表示为某元素的键值在创建 map 容器的基础上,还能够手动修改 map 容器的排序规则。map 容器默认调用 std::less 规则,根据容器内各键值对的键的大小,对所有键值对做升序排序。

2022-11-07 02:42:23 2425

原创 @哈希表@

哈希表概述

2022-11-06 03:41:10 335

原创 LeetCode 24 两两交换链表节点、 19删除链表的倒数第 N 个结点、链表相交(面试)、142环形列表

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。正在上传…重新上传取消[2,1,4,3]head = [][]head = [1][1]此题微微有点绕,所以一定要理清思路,尤其注意 某些节点的暂保存,因为在cur指针的操作过程中,很多指针的指向已经变化:可以参考以上的步骤进行交换;

2022-11-01 12:42:47 3021

原创 Leetcode203移除链表元素 206反转链表

给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。[][][0, 104]要开始非常纠结为什么一直是cur指针在操作,但是却改变了原来的链表:后来得出结论是:比方说如上面的链表,当指针cur指向B节点时,cur->next就相当于(等于)B->next,所以 cur->next=cur->next->next表面是操作cur,实际上是操作了B节点,而cur=cur->next就是cur指针自身的移动,移动到B节点的指针域next指向的对象处。

2022-10-30 17:39:56 3037

原创 Leetcode977 有序数组的平方、209. 长度最小的子数组

给你一个按排序的整数数组nums,返回组成的新数组,要求也按排序。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]上面是正解~自查犯傻错误一:刚开始的写法是用了容器,但是没有给vector初始化空间,众所周知,vector可以看作是一个动态数组,一般情况下不需要初始化空间大小,但是本题采用了双指针的思想解题,vector没有初始化空间直接vector[x--]肯定就报错了,很简单的问题,可能是太久没写代码了,刚开始还没意识到这个呜呜呜呜....

2022-10-28 23:09:32 3218

原创 Leetcode 704 二分查找、27 移除元素

给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。

2022-10-27 22:38:54 3731

原创 C++ 银行账户(静态成员与友元函数)

题目描述银行账户类的基本描述如下:要求如下:实现该银行账户类为账户类Account增加一个友元函数,实现账户结息,要求输出结息后的余额(结息余额=账户余额+账户余额*利率)。友元函数声明形式为 friend void Update(Account& a);在main函数中,定义一个Account类型的指针数组,让每个指针指向动态分配的Account对象,并调用成员函数测试存款、取款、显示等函数,再调用友元函数测试进行结息。大家可以根据实际需求在类内添加其他方法,也可以修改成.

2022-01-12 18:15:25 915

原创 问题 C: DS静态查找之顺序索引查找

题目描述给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始要求使用顺序索引查找算法,其中索引表查找和块内查找都采用不带哨兵、从头开始的顺序查找方法。输入第一行输入n,表示主表有n个数据第二行输入n个数据,都是正整数,用空格隔开第三行输入k,表示主表划分为k个块,k也是索引表的长度第四行输入k个数据,表示索引表中每个块的最大值第五行输入t,表示有t个要查找的数值第六行起,输入t个数值,输入t行输出每行输出一个要查找的数值在队列的位置和查找次数,数据之间用

2022-01-02 10:15:39 1214

原创 问题 B: DS静态查找之折半查找

题目描述给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始要求使用折半查找算法输入第一行输入n,表示队列有n个数据第二行输入n个数据,都是正整数,用空格隔开第三行输入t,表示有t个要查找的数值第四行起,输入t个数值,输入t行输出每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error样例输入811 22 33 44 55 66 77 883228899样例输出28error#include

2022-01-02 09:02:50 890

原创 问题 A: DS静态查找之顺序查找

题目描述给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始要求使用带哨兵的顺序查找算法输入第一行输入n,表示队列有n个数据第二行输入n个数据,都是正整数,用空格隔开第三行输入t,表示有t个要查找的数值第四行起,输入t个数值,输入t行输出每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error样例输入833 66 22 88 11 27 44 553221199样例输出35error#inc

2022-01-02 08:47:10 1143

转载 问题 D: 扑克排序

题目描述一叠数值不同的扑克牌(不超过13张),每次只能拿最顶端的一张插入到任意位置。至少操作多少次,扑克牌能够从上到下是从大到小的顺序。输入多组数据,每组第一行为n,扑克牌个数。第二行n个空格隔开的正整数,(这些数是1~13),为这叠扑克牌从下到上的数值。输出每组数据输出一行,至少按规则操作的次数。样例输入3 1 3 25 1 3 5 2 6样例输出12#include<iostream>#include<cstdio>

2022-01-02 08:29:41 289

转载 火车站问题

题目描述火车站只有一条铁路,所有的火车都停在那里。所以所有的火车都是从一边进站,从另一边出站。如果A列先进入铁路,然后B列在A列离开之前进入铁路,那么A列在B列离开之前不能离开。下图说明了问题所在。车站里最多有9列火车,所有的火车都有一个ID(编号从1到N),火车按照O1的顺序进入火车,火车是否3可以按照O2的顺序驶出。输入输入包含几个测试用例。每个测试用例由一个整数(列车数)和两个字符串组成。两个字符串分别为列车入站顺序和列车出站顺序。输出如果不能按照指定顺序出站,输出“No”。...

2022-01-02 07:48:06 465

原创 冒泡,快速,基数,堆,希尔,插入,简单,归并排序

#include<iostream>using namespace std;//冒泡排序/*int main() { int* Arr; int n; cin >> n; Arr = new int[n]; for (int i = 0;i < n;i++) { cin >> Arr[i]; } //最外层循环表示总共需要循环的次数n-1次,每次将一个最大值排到最后 for (int...

2022-01-02 04:43:09 107

原创 问题 C: 基数排序(内部排序)

主页 讨论版 问题 名次 状态 统计 !!请使用学号注册用户名!!题目描述给定一组数据,对其进行基数升序排序。输入测试次数t每组测试数据一行:数字个数n,后跟n个数字(整数)注:如果序列中有负数,则每个数字加上最小负数的绝对值,使序列中的数均大于等于0。排序后再减去最小负数的绝对值。输出对每组测试数据,输出每趟分配、收集的结果。若分配中该位没有数字,输出NULL。具体输出格式见样例。每组测试数据间以空行分隔。如果序列中有负数,

2021-12-30 02:07:25 523

原创 DS二叉树——二叉树之父子结点

题目描述给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构。编写程序输出该树的所有叶子结点和它们的父亲结点输入第一行输入一个整数t,表示有t个二叉树第二行起,按照题目表示的输入方法,输入每个二叉树的先序遍历,连续输入t行输出第一行按先序遍历,输出第1个示例的叶子节点第二行输出第1个示例中与叶子相对应的父亲节点以此类推输出其它示例的结果样例输入3AB0C00D.

2021-12-21 20:56:46 489

原创 【无标题】

给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果输入第一行输入一个整数t,表示有t个二叉树第二行起输入每个二叉树的先序遍历结果,空树用字符‘0’表示,连续输入t行输出输出每个二叉树的先序遍历、中序遍历和后序遍历结果样例输入2AB0C00D00AB00C00样例输出ABCDBCADCBDAABCBAC

2021-12-21 19:06:04 108

原创 问题 A: DS二叉树——二叉树之数组存储

题目描述二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示。,如下图所示从上图可以看出,右边的是一颗普通的二叉树,当它与左边的完全二叉树对比,发现它比完全二叉树少了第5号结点,所以在数组中用0表示,同样它还少了完全二叉树中的第10、11号结点,所以在数组中也用0表示。结点存储的数据均为非负整数输入第一行输入一个整数t,表示有t个二叉树第二行起,每行输入一个数组,.

2021-12-21 16:03:24 643

原创 二分查找法

#include<iostream>using namespace std;int main() { int t; int* arr; int len; int low, hight, mid; int target; int index = -1; cin >> t; while (t--) { cin >> len;//输入数组长度 arr = new int[len];//给数组动态分配内存空间 //初始化数组 for (int.

2021-12-15 18:48:17 1022

原创 图综合练习--构建邻接表

题目描述已知一有向图,构建该图对应的邻接表。邻接表包含数组和单链表两种数据结构,其中每个数组元素也是单链表的头结点,数组元素包含两个属性,属性一是顶点编号info,属性二是指针域next指向与它相连的顶点信息。单链表的每个结点也包含两个属性,属性一是顶点在数组的位置下标,属性二是指针域next指向下一个结点。输入第1行输入整数t,表示有t个图第2行输入n和k,表示该图有n个顶点和k条弧。第3行输入n个顶点。第4行起输入k条弧的起点和终点,连续输入k行以此类推输入下一个图

2021-12-01 20:14:23 325

原创 DS图—图的邻接矩阵存储及度计算

题目描述假设图用邻接矩阵存储。输入图的顶点信息和边信息,完成邻接矩阵的设置,并计算各顶点的入度、出度和度,并输出图中的孤立点(度为0的顶点)--程序要求--若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对象或函数实现本题的要求输入测试次数T,每组测试数据格式如下:图类型 顶点数 (D—有向图,U—无向图)顶点信息边数每行一.

2021-11-30 22:53:45 387

原创 学习前端——对网页,浏览器等的理解(pink老师课堂笔记)

一.网页1.网页是什么?网页通常是HTML格式的文件,通过浏览器阅读,由图片,文字,声音,视频等元素组成;网站是网页的集合,多个网页构成一个网站;网页本质是以.html或者.htm为后缀的文件2.什么是HTML?HTML是一种超文本语言,非编程语言,属于标记语言的一种3.浏览器浏览器的内核:用于读取网页内容,整理讯息,计算并显示页面;常见的浏览器有:谷歌(程序员必备),火狐,IE,Safari,Opera等4.web标准(由W3C——万维网联盟设定):1)结构:H

2021-10-31 20:20:01 252

原创 DS堆栈--字符替换

题目描述在一个行编辑处理程序中,用户将输入一行字符。若用户输入#,表示将#之前的字符替换为@,#本身不算字符输入。请使用C++自带的stack栈进行编程。必须使用堆栈来实现,其他方法0分!stack类使用的参考代码包含头文件<stack> : #include <stack>创建一个堆栈对象s(注意stack是模板类):stack <char> s;//堆栈的数据类型是字符型把一个字符ct压入堆栈:s.push(ct);把栈顶元素...

2021-10-17 15:12:27 224

原创 DS队列之银行排队

题目描述在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个客户都有类型和办理业务时间。每个窗口按照客户到来的顺序进行服务。编程实现它们的办理流程,请使用C++自带的queue必须使用队列实现,其他方法0分!队列queue的用法如下:1.包含头文件:#include <queue>2.定义一个整数队列对象:queue<int> myQe;3.定义一个整数队列对象数.

2021-10-17 15:09:41 397

原创 前驱后继(线性结构)

题目描述在双向链表中,A有一个指针指向了后继节点B,同时,B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。对于给定的一列数据,按照给定的顺序建立双向链表,按照关键字找到相应节点,输出此节点的前驱节点关键字及后继节点关键字。输入第一行两个正整数n(代表节点个数),m(代表要找的关键字的个数)。接下来输入n个整数为关键字key(数据保证关键字在数列中没有重复)。接下来有m个要查找的关键字,每个占一行。

2021-10-13 00:16:10 2175

原创 DS线性表—多项式相加

题目描述对于一元多项式 p(x)=p0+p1x+p2x2+…+pnxn,每个项都有系数和指数两部分,例如p2x2的系数为p2,指数为2。编程实现两个多项式的相加。例如5+x+2x2+3x3,-5-x+6x2+4x4,两者相加结果:8x2+3x3+4x4其中系数5和-5都是x的0次方的系数,相加后为0,所以不显示。x的1次方同理不显示。可用顺序表或单链表实现。输入第1行:输入t表示有t组测试数据第2行:输入n表示有第1组的第1个多项式包含n个项第3行:输入第一项的系数...

2021-10-08 17:29:27 782

原创 DS单链表--合并

题目描述假定两个单链表是递增有序,定义并实现以下函数,完成两个单链表的合并,继续保持递增有序int LL_merge(ListNode *La, ListNode *Lb)输入第1行先输入n表示有n个数据,接着输入n个数据第2行先输入m表示有M个数据,接着输入m个数据输出输出合并后的单链表数据,数据之间用空格隔开样例输入3 11 33 554 22 44 66 88样例输出11 22 33 44 55 66 88#include<iostr

2021-10-07 20:33:05 304

原创 DS单链表--类实现

题目描述用C++语言和类实现单链表,含头结点属性包括:data数据域、next指针域操作包括:插入、删除、查找注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据类定义参考输入第1行先输入n表示有n个数据,接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除的位置第6行输入要查找的位置第7行输入要查找的位置输出数据之间用空格隔开,第1行输出创建后的单链表的数据每成功执行一次操作(

2021-10-07 14:55:53 236

原创 DS顺序表--连续操作

题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)该类具有以下成员函数:构造函数:实现顺序表的初始化。插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。删除多个数据的multidel(int i, int n)函数,实现从第i个位置开始,连续删除n个数据,即从位置i开始删除多个数据。编写main函数测试该顺序表类。输入

2021-10-07 13:39:53 118

原创 DS顺序表之循环移位

题目描述顺序表的移位是循环移位,例如顺序表:1,2,3,4,5,6。如果左移1位,即原来的头元素移动到末尾,其它元素向左移1位,变成2,3,4,5,6,1。同理,如果右移1位,即原来的尾元素移动到头,其它元素向右移1位,变成6,1,2,3,4,5。以下是移位的多个例子:原数据:1,2,3,4,5,6左移3位:4,5,6,1,2,3,与原数据对比右移4位:3,4,5,6,1,2,与原数据对比请编写程序实现顺序表的循环移位操作输入第1行输入n表示顺序表包含的·n个数据

2021-10-07 13:32:38 398

原创 DS单链表--结点交换

题目描述用C++实现含头结点的单链表,然后实现单链表的两个结点交换位置。注意不能简单交换两个结点包含数据,必须通过修改指针来实现两个结点的位置交换交换函数定义可以参考:swap(int pa, int pb) //pa和pb表示两个结点在单链表的位置序号swap (ListNode * p, ListNode * q) //p和q表示指向两个结点的指针输入第1行先输入n表示有n个数据,接着输入n个数据第2行输入要交换的两个结点位置第3行输入要交换的两个结点位置...

2021-10-07 13:29:15 238

原创 复杂度分析

度量一个程序的执行时间一般有两种方法:1.事后统计法:计算机内部有计时功能甚至可以精确到毫秒级别。但这种方法有两个明显的缺陷:(1)必须先运行程序(2)依赖计算机硬件,软件等环境因素,容易遮盖算法本身的优劣(ps:测试结果受数据规模的影响很大,比如:对同一个排序算法,待排序数据的有序度不一样,排序的执行时间会有很大的差别,极端情况下,若数据已经是有序的,那么排序算法不需要做任何操作,执行时间会非常短,其次,若数据规模太小,测试结果也无法真实地反映算法的性能,比如,对于小规模数据,插入排序

2021-09-29 17:25:05 198

原创 DS顺序表合并操作

题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序输入第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等输出顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开第1行输出创建后的顺序表内容样例输入3 11 33 555 22 44 66 8

2021-09-26 18:28:16 243

原创 指针与地址

Int *iptr;//声明一个整型的指针,指针名称为iptr,int 表示整型,*表示指针(因为int* iptr,int *iptr和int * iptr的含义相同,因此为了方便,我们不妨都以Int*来表示指针)Int a;a=12;Iptr=&a;//指针变量用于存放地址,把a的地址放在iptr指针中,或者说指针指向这个内存的地址cout<<*iptr;//输出为12,这里的*iptr中的“*”是间接引用操作符,意为输出指针iptr指向的内容;!!!“*

2021-09-14 16:27:41 274

原创 离散数学。

第一章非真即假的陈述句称为命题(真命题,假命题) 不能被拆解为更简单命题的命题称为简单命题或原子命题(真值确定的原子命题在复合命题中又称为命题常项或命题常元,真值不确定元的称为命题变项或命题变元) 由多个简单命题通过联结词联结而成的命题成为复合命题 否定联结词(非p,或p的否定) 合取联结词(p且q,p与q) 析取式(p或q):相容或(二者可同时为真),排斥或(一者为真,一者为假) 蕴涵式(如果p,则q),p为前件,q为后件。只有当p为真,q为假时才为假,其余都为真 等价联结词(pq互为充

2021-09-05 10:51:14 5014

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除