数据结构OJ
Date(类与对象)题目描述:下面是一个日期类的定义,请在类外实现其所有的方法,并在主函数中生成对象测试之。
注意,在判断明天日期时,要加入跨月、跨年、闰年的判断
例如9.月30日的明天是10月1日,12月31日的明天是第二年的1月1日
2月28日的明天要区分是否闰年,闰年则是2月29日,非闰年则是3月1日
输入:测试数据的组数t第一组测试数据的年 月 日……….要求第一个日期的年月日初始化采用构造函数,第二个日期的年月日初始化采用setDate方法,第三个日期又采用构造函数,第四个日期又采用setDate方法,以此类推。
输出:输出今天的日期输出明天的日期
输入样例一12345642012 1 32012 2 282012 3 312012 4 30
输出样例一12345678Today is 2012/01/03Tomorrow is 2012/01/04Today is 2012/02/28Tomorrow is 2012/02/29Today is 2012/03/31Tomorrow is 2012/04/01Today is 2012/04/30Tomorrow i ...
Notion知识体系管理工具
一.简介 Notion在建立知识体系,年度计划,待办事项等都比较的方便,本篇将简单的解释这款软件
二.正文一、Notion是什么
1. Notion介绍内容 Notion是一个用于工作管理或者日常生活行动管理的网站,拥有网页、PC端软件、手机端软件(Android、IOS)等不同运行环境,可以实现在任意设备上的工作管理,并且所有运行环境都是实时同步的。
2. Pages:兼任笔记和笔记本无限层级Notion 则采用了无限层级 Pages设计,有下面几个特点:
每一个 Page 中都可以正常书写内容。
如果需要嵌套关系时,可以让一个 Page 中包含多个 Page。
Notion 没有标签体系,通过 /Link to Page 来实现 Pages 之间的跳转,或用 /Create Linked Database 来连接到数据库。这让Pages 既是笔记、又是笔记本。
Notion 的层级
分享权限 Notion 支持页面公开分享,有两种级别可选:允许评论和仅允许阅读。然后复制 Page Link 即可让所有人访问这个页面。
如果需要和别 ...
Java刷题笔记(三)
一.简介 本系列是用来分享在洛谷,LeetCode的有趣的题目,使用Java编写且代码解释以注释为主。
本篇涉及:哈希表,双指针
二.题目1. 无重复字符的最长子串题目描述: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
输入输出样例:示例 1:
123>输入: s = "abcabcbb">输出: 3 >解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
123输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 3:
1234输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
提示:
0 <= s.length <= 5 * 104
s 由英 ...
Java刷题笔记(二)
一.简介 本系列是用来分享在洛谷,LeetCode的有趣的题目,使用Java编写且代码解释以注释为主。
本篇涉及:双指针,哈希表,原地交换
二.题目1. 移动零题目描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
输入输出样例:示例 1: 输入: nums = [0,1,0,3,12] 输出: [1,3,12,0,0]
示例 2: 输入: nums = [0] 输出: [0]
提示:1 <= nums.length <= 104-231 <= nums[i] <= 231 - 1
解法一:双指针123456789101112131415161718192021222324252627282930313233343536//AC代码/** * 使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。 * 右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数 ...
线性表(下)
2. 线性表的链式存储结构链式存储: 用一组任意的存储单元来存储线性表的数据元素,这组存储单元可以在内存中的任意位置。也就是说这组存储单元,可以是连续的,也可以是不连续的,可以是部分连续的也可以是部分不连续的。
在链式存储结构中除了要存储数据信息外,还要存储它的后继元素的**存储地址(指针)。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中的信息称为指针或链。这两部分信息组成的数据元素称为结点(Node)**。
采用链式储存结构的线性表称为链表。 链表中每个结点的存储地址存放在其前驱结点的next域中,然而首元结点(即第一个结点)无直接前驱,因此,我们需要设置一个头指针(head)用来存放首元结点的存储地址。由于,尾元结点(即最后一个结点)无直接后继,故尾元结点的指针域为空(NULL)。有时为了在对链表进行操作时能够统一处理空表和非空表的情况,或者能够统一对首元结点和其他结点的处理过程,我们在链表的首元结点之前增设了一个结点,我们称为头结点(Head Node)。相对于头结点而言,其余结点称为表结点。
头指针与头结点的异同:头指针
头指针是指链 ...
线性表(上)
一.定义线性表(List):零个或多个数据元素的有限序列。
线性表首先它是一个序列,也就是说元素之间是有先来后到的。
若元素存在多个,则第一个元素无前驱,而最后一个元素无后继,其他元素都只有一个直接前驱,和只有一个直接后继。
线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。
二.线性表的存储结构
1. 线性表的顺序存储结构(1)顺序存储: 用一组地址连续连续的存储单元来依次存放线性表中的数据。
顺序存储结构示意图
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
顺序表:可动态增长的数组,要求数据是连续存储的
(2)顺序表的定义1. 静态顺序表:使用定长数组存储元素缺陷:给小了不够用,给大了可能浪费,非常不实用
12345678#define N 10typedef int SLDataType;typedef struct SeqList{ SLDataType array[N]; //定长数 ...
时间复杂度
一.简介 时间复杂度可以用来简单的估计代码的运行时间,这对于以后我们评估算法的优劣提供帮助。
二.时间复杂度
基础知识:
定义:
记T(n)为代码的总运行时间,把每一条语句(全部语句记作n)的执行时间都看做是一样的,记为一个时间单元,
若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。
记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
时间复杂度用大写O来表示,所以也被称为大O表示法。
假设一共有100条语句,那可以认为T(n)=100n;时间复杂度取T(n)的最大阶数: n,即时间复杂度为T(n)=O(n);
例一:1234567891011121314//代码一:void print(int n){ //i+=i相当于i=i*2,设x次后for循环停止即:2^x=n,即x=log2(n) for (int i = 1; i < n; i += i) // ...
Java刷题笔记(一)
一.简介 本系列是用来分享在洛谷,LeetCode的有趣的题目,使用Java编写且代码解释以注释为主。
本篇涉及:输入输出,if判断,for循环,方法(即函数),数组,AscII码
二.题目1. P5704 【深基2.例6】字母转换【深基2.例6】字母转换题目描述输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。
输入格式无
输出格式无
样例 #1样例输入 #11q
样例输出 #11Q
12345678910111213141516//AC代码//导入util包import java.util.*;class Main { public static void main(String args[]) throws Exception { // 创建一个Scanner对象 Scanner cin = new Scanner(System.in); // 读取用户输入的字符 char a = cin.next().charAt(0); // 关闭Scann ...
MATLAB快速入门(七)
一.简介 本篇参考官方入门文档编写
前提准备:
MATLAB
二. 快速入门(七)1. 创建网格图和曲面图关于网格图和曲面图MATLAB® 在 x-y 平面中的网格上方使用点的 z 坐标来定义曲面图,并使用直线连接相邻的点。mesh 和 surf 函数以三维形式显示曲面图。
mesh 生成仅使用颜色来标记连接定义点的线条的线框曲面图。
surf 使用颜色显示曲面图的连接线和面。
MATLAB 通过将索引的 z 数据值映射到图窗颜色图来标记曲面图颜色。
可视化包含两个变量的函数要显示包含两个变量的函数 z = f (x,y),
在此函数的域中,生成分别由重复行和重复列组成的 X 和 Y 矩阵。
使用 X 和 Y 计算此函数并绘制其图形。
meshgrid 函数将一个向量或两个向量(即 x 和 y)指定的域转换为矩阵 X 和 Y,以便用于计算包含两个变量的函数。X 的行是向量 x 的副本,Y 的列是向量 y 的副本。
绘制正弦函数尝试此示例Copy Command Copy Code
此示例说明如何计算和绘制 x 和 y 方向之间的二维 sinc 函数 si ...
Markdown数学公式
建议点我查看PDF版本一.简介 当我们想在文档中输入数学公式简直是噩梦,本篇我会介绍一下在Typora用Markdown的语法书写数学公式的办法。
二.常用的语法1. 固定语法==单独显示:==
123$$代码$$
==单行显示:==
1$代码$
==案例:==
单独显示:$$\begin{Bmatrix} a & b \ c & d\end{Bmatrix}$$
单行显示:
==这是$x^2$单行的显示==
2. 上下标,正负无穷
数学表达式
LaTeX代码
$x^2$
x^2
$y_1$
y_1
$\infty$
\infty
$-\infty$
-\infty
3. 加减乘,分式,根号,省略号
数学表达式
LaTeX代码
$a+b-c*d$
a+b-c*d
$a\div{b}$
a\div{b}
$a\pm{b}$
a\pm{b}
$\frac ...