OJ
文章平均质量分 91
菜饼同学
微信搜索【菜饼不菜】,关注我的公众号,一起学习~
展开
-
每日一题-根据数字二进制下 1 的数目排序
题目给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。示例 1:输入:arr = [0,1,2,3,4,5,6,7,8]输出:[0,1,2,4,8,3,5,6,7]解释:[0] 是唯一一个有 0 个 1 的数。[1,2,4,8] 都有 1 个 1 。[3,5,6] 有 2 个 1 。[7] 有 3 个 1 。按照 1 的个数排序得到的结果数组为 [原创 2020-11-06 12:43:26 · 1597 阅读 · 0 评论 -
【Leetcode】所有排列中的最大和
第35场双周赛第二题:有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] = [starti, endi] 。第 i 个查询求 nums[starti] + nums[starti + 1] + ... + nums[endi - 1] + nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。你可以任意排列 nums 中的数字,请你返回所有查询结果之和的最大值。由于答案可能会很大,请你将它对 10^9 + 7 取余 后返原创 2020-09-20 09:21:59 · 2315 阅读 · 0 评论 -
NOIP2003普及组—乒乓球
题目描述【问题背景】国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,他首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。【问题描述】华华通过以下...原创 2019-01-15 23:45:16 · 4498 阅读 · 3 评论 -
复习系列1-DS堆栈--逆序输出
这题着实有点bug,Java 用 StringBuffer 的 reverse 方法可以秒;当然,本着复习的初衷,还是用栈再写一遍。两种解法都给出。题目描述C++中已经自带堆栈对象stack,无需编写堆栈操作的具体实现代码。本题目主要帮助大家熟悉stack对象的使用,然后实现字符串的逆序输出输入一个字符串,按字符按输入顺序压入堆栈,然后根据堆栈后进先出的特点,做逆序输出...原创 2019-01-02 18:17:01 · 2445 阅读 · 0 评论 -
复习系列1-DS单链表--结点交换
DS单链表--结点交换这题简单粗暴,利用上一题的类实现,直接更换数据值。(当然这是取巧的办法,如果两个结点含的数据很多,还是用这种办法就显得臃肿笨重,交换做法如下:对于要交换的结点 n1 和 n2 ,找到其前一个结点 s1 和 s2:【此处交换了n1和n2的前驱】t = s1->next; (指向 n1) 【交换后继】 t = s1-&g...原创 2019-01-02 17:45:26 · 3469 阅读 · 0 评论 -
复习系列1-DS单链表--类实现
DS单链表--类实现题目描述与顺序表一样;一开始贪图方便用 List 直接A过,很轻松,想了想还是自己手动实现一遍,以对原理更加了解。代码写得一般,head指针为了方便还是存了数据,但是show 的时候不读取。【当然期末考试要是遇到要用链表,还是用List,方便快捷】题目描述用C++语言和类实现单链表,含头结点属性包括:data数据域、next指针域操作包括:插入、删除、...原创 2019-01-02 17:18:11 · 2285 阅读 · 0 评论 -
复习系列1-DS顺序表之循环移位
DS顺序表之循环移位感觉这几道题偏简单,没有必要单独写一个类,还是简单粗暴些,用最直接的方法A掉吧。本着简便直接,发现这题有个小trick,向右移动 trans 位,其实等价于向左移动 n - trans 位。题目描述顺序表的移位是循环移位,例如顺序表:1,2,3,4,5,6。如果左移1位,即原来的头元素移动到末尾,其它元素向左移1位,变成2,3,4,5,6,1。同理,如果右移1...原创 2019-01-02 16:11:03 · 2796 阅读 · 0 评论 -
复习系列2-DS二叉树——Huffman编码与解码
题目描述1、问题描述给定n个字符及其对应的权值,构造Huffman树,并进行huffman编码和译(解)码。构造Huffman树时,要求左子树根的权值小于、等于右子树根的权值。进行Huffman编码时,假定Huffman树的左分支上编码为‘0’,右分支上编码为‘1’。2、算法构造Huffman树算法:⑴根据给定的n个权值(w1, w2, …, wn)构成n棵二叉树的...原创 2019-01-06 20:54:53 · 2393 阅读 · 0 评论 -
复习系列2-DS二叉树——二叉树之父子结点
DS二叉树——二叉树之父子结点题目描述给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构。编写程序输出该树的所有叶子结点和它们的父亲结点输入第一行输入一个整数t,表示有t个二叉树第二行起,按照题目表示的输入方法,输入每个二叉树的先序遍历,连续输入t行输出第一行按先序遍历,输...原创 2019-01-06 20:52:04 · 2714 阅读 · 1 评论 -
复习系列2-DS树+图综合练习--二叉树高度
DS树+图综合练习--二叉树高度题目描述给出一棵二叉树,求它的高度。二叉树的创建采用前面实验的方法。注意,二叉树的层数是从1开始输入第一行输入一个整数t,表示有t个二叉树第二行起输入每个二叉树的先序遍历结果,空树用字符‘0’表示,连续输入t行输出每行输出一个二叉树的高度样例输入1 AB0C00D00 样例输出3 提示...原创 2019-01-06 20:50:39 · 2185 阅读 · 0 评论 -
复习系列1-DS顺序表--合并操作
DS顺序表--合并操作这题莫名奇妙卡了好久,看不到测试数据,无奈之下去了leetcode找到了这题,A了之后,在这边试了一下,ok。根据leetcode出错的几组数据来看,估计是忽略了某一个数组为0的情况(然而本地测试时之前的代码并没有什么异常)。题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)已知两个递增序列,把两个序列的数据合并到顺序表中,并使...原创 2019-01-02 00:01:30 · 2747 阅读 · 0 评论 -
复习系列1-DS堆栈--行编辑
题目描述使用C++的STL堆栈对象,编写程序实现行编辑功能。行编辑功能是:当输入#字符,则执行退格操作;如果无字符可退就不操作,不会报错本程序默认不会显示#字符,所以连续输入多个#表示连续执行多次退格操作每输入一行字符打回车则表示字符串结束注意:必须使用堆栈实现,而且结果必须是正序输出输入第一行输入一个整数t,表示有t行字符串要输入第二行起输入一行字符串,共输入t行...原创 2019-01-02 18:28:34 · 2128 阅读 · 0 评论 -
复习系列1-DS堆栈--括号匹配
DS堆栈--括号匹配这几题比较基础,A起来很舒服。这题思路也很明确,读取的时候只需考虑左括号和右括号两种情况,左括号直接入栈,右括号需要考虑栈顶元素是否匹配,匹配则弹出栈顶元素,不匹配则跳过。如果是其他字符,直接跳过。题目描述处理表达式过程中需要对括号匹配进行检验,括号匹配包括三种:“(”和“)”,“[”和“]”,“{”和“}”。例如表达式中包含括号如下:( ) [ (...原创 2019-01-02 18:40:13 · 2717 阅读 · 0 评论 -
复习系列1-DS队列之银行排队
DS队列之银行排队这题简单的运用了队列的知识,突然发现用 Object 的队列和栈都比较好用,需要什么类型直接强转即可。另外要注意一个点,switch 最好只用来选择 int 类型的数据,String 的话用 if-else吧。题目描述在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个...原创 2019-01-02 20:37:27 · 3171 阅读 · 0 评论 -
NOIP2004普及组 — 不高兴的津津
题目描述 津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且,上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。输入格式...原创 2019-01-15 22:41:37 · 2695 阅读 · 0 评论 -
NOIP2005普及组 -陶陶摘苹果
题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。输入格式 输入包括两行数据。第一行包含1...原创 2019-01-15 22:34:37 · 2396 阅读 · 0 评论 -
NOIP2006普及组—明明的随机数
题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。输入格式输入有2行,第1行为1个正整数,表示所生成的随机数的个数...原创 2019-01-15 21:20:55 · 4993 阅读 · 0 评论 -
寒假突破-C++
这篇文章留着坑位,等寒假慢慢填,作为寒假刷的题的一个索引。由于之前先学了Java,对C++不是太熟悉,打算寒假打打题,为下学期学习(虐师弟妹)做准备。在网上找到一个中文的 oj,为了带女票学会打题,就先用这个过渡一下,也适合没有刷过 oj 的同学使用哦。http://www.rqnoj.cn/problem目前的打算是先把 2001-2006 的普及组题目 A完,练练手感...原创 2019-01-09 18:32:44 · 2123 阅读 · 0 评论 -
复习系列1-约瑟夫环 (Ver. I - A)
约瑟夫环 (Ver. I - A)这题出了点玄学问题,一直时间超限50%;后来尝试了优化的输入输出,然并卵,估计问题出在某个情况下的死循环或者原算法本身的时间复杂度过高。(感觉因为算法效率过低的可能性不大,但是确实A不过);此外,记录下优化后的输入输出的用法。//1-3补充,找老师要了后台,发现确实是算法效率低了,之前的代码在删除head指向的元素的时候,需要遍历所有元素,让head...原创 2019-01-03 00:37:03 · 2471 阅读 · 0 评论 -
数据结构-复习题索引
疯狂A题的感觉还是不错的,虽然自己不打ACM,因为感觉太浪费时间了,人各有志,大学除了解题能力,大方向的解决问题的能力,处理人际关系,亲密关系,培养好的生活习惯在我看来更加重要。(虽然跟打不打ACM没什么关系,但ACM容易让我更像生活在高三,每天三点一线,A了n多题,只为一场带着些许运气成分的比赛,正如高考一般,令人不喜。)回归正题,数据结构机考前复习了一遍,系列1主要是顺序表、栈、队列,比...原创 2019-01-06 20:58:57 · 2173 阅读 · 0 评论 -
复习系列1-DS栈—排队游戏
DS栈—排队游戏果然这种简单题读题还是最重要的,一开始没注意到题目说的是两种字符,用括号去判断就WA了一发,考虑第一个字符一定是代表男孩子的字符,所以用first 存了s的第一个字符。题目描述在幼儿园中,老师安排小朋友做一个排队的游戏。首先老师精心的把数目相同的小男孩和小女孩编排在一个队列中,每个小孩按其在队列中的位置发给一个编号(编号从0开始)。然后老师告诉小朋友们,站在前边...原创 2019-01-02 21:49:41 · 2257 阅读 · 0 评论 -
复习系列1-DS队列--组队列
DS队列--组队列这题我还是WA了几次,一开始没注意要考虑不同组的顺序,以为按顺序输出;其次是最后一个输出后面没有空格,格式错误又WA了几发,确实不应该。为了方便,最后直接再加一个队列输出,解决格式问题,整个程序用了不少队列,还顺带复习了一下 map,感觉还有更好的方法。不过第一阶段以复习语法为主,细节就不深究了。此外,期末A题的时候还是不要写private了,节省时间,(平时写代码习惯...原创 2019-01-02 21:37:59 · 3275 阅读 · 0 评论 -
复习系列1-DS顺序表--连续操作
DS顺序表--连续操作本题应当注意边界问题,容易出错。题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)该类具有以下成员函数:构造函数:实现顺序表的初始化。插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。删除多个...原创 2019-01-01 17:56:19 · 2267 阅读 · 0 评论 -
复习系列1-DS顺序表--类实现
终于把手头的算法实验报告怼完了,可以安心复习数据结构了,接下来根据分类,希望能一天A个七八题吧。(所有题目基本之前都用C++ A过,现在打算用java机考,只好复习一遍,巩固一下。)DS顺序表--类实现本题关键,这题是非常非常基础的东西了,其实顺序表我们可以直接调用一些封装好的类,比如ArrayList等,但是这里再写一遍的时候还是发现一些小问题,一个是容易忽略题目中的细节,这里的逻...原创 2019-01-01 17:20:10 · 2659 阅读 · 0 评论 -
DS图遍历--深度优先搜索
复习题目描述给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始注意:图n个顶点编号从0到n-1代码框架如下: 输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开以此类推输入下一个示例输出...原创 2018-12-25 21:12:37 · 2670 阅读 · 0 评论 -
DS二叉排序树之创建和插入
DS二叉排序树之创建和插入时间限制: 1 Sec 内存限制: 128 MB 【Java有三倍的时间和内存限制】题目描述给出一个数据序列,建立二叉排序树,并实现插入功能对二叉排序树进行中序遍历,可以得到有序的数据序列输入第一行输入t,表示有t个数据序列第二行输入n,表示首个序列包含n个数据第三行输入n个数据,都是自然数且互不相同,数据之间用空格隔开第四...原创 2018-11-28 13:10:30 · 2510 阅读 · 0 评论 -
数据结构 OJ —— 用 Java 解题
用 Java 解决 OJ 题目时要注意格式:public 类为 Main 不能有包,否则会 WA。 注意jdk说明,不要使用最新特性,比如 lambda表达式等。 Java 的内存和时间限制是三倍。本博客环境说明,后续不再详解。学校OJ :java version "1.6.0_22"个人环境:java version "1.8.0_25"win10、IDEA//...原创 2018-11-27 23:37:49 · 2229 阅读 · 0 评论 -
哈希查找与增补
哈希查找与增补题目描述给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为11,哈希冲突用链地址法和表尾插入如果首次查找失败,就把数据插入到相应的位置中实现哈希查找与增补功能输入第一行输入n,表示有n个数据第二行输入n个数据,都是自然数且互不相同,数据之间用空格隔开第三行输入t,表示要查找t个数据从第四行起,每行输入一个要查找的数据,都是正整数输出...原创 2018-12-08 19:48:19 · 2269 阅读 · 0 评论 -
DS查找—二叉树平衡因子
DS查找—二叉树平衡因子题目描述二叉树用数组存储,将二叉树的结点数据依次自上而下,自左至右存储到数组中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点在数组中用0来表示。计算二叉树每个结点的平衡因子,并按后序遍历的顺序输出结点的平衡因子。--程序要求--若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若...原创 2018-12-08 19:48:33 · 2756 阅读 · 0 评论 -
DS内排—直插排序
DS内排—直插排序题目描述给定一组数据,使用直插排序完成数据的升序排序。--程序要求--若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对象或函数实现本题的要求输入数据个数n,n个数据输出直插排序的每一趟排序结果...原创 2018-12-08 19:46:33 · 2228 阅读 · 0 评论 -
DS哈希查找—二次探测再散列
DS哈希查找—二次探测再散列题目描述定义哈希函数为H(key) = key%11。输入表长(大于、等于11),输入关键字集合,用二次探测再散列构建哈希表,并查找给定关键字。输入测试次数t每组测试数据格式如下:哈希表长m、关键字个数nn个关键字查找次数kk个待查关键字输出对每组测试数据,输出以下信息:构造的哈希表信息,数组中没有关键字的位置输...原创 2018-12-08 19:47:36 · 3228 阅读 · 0 评论 -
DS哈希查找—线性探测再散列
DS哈希查找—线性探测再散列题目描述 定义哈希函数为H(key) = key%11。输入表长(大于、等于11),输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。--程序要求--若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对...原创 2018-12-08 19:47:56 · 2284 阅读 · 0 评论 -
DS查找——折半查找求平方根
DS查找——折半查找求平方根时间限制: 1 Sec 内存限制: 128 MB题目描述假定输入y是整数,我们用折半查找来找这个平方根。在从0到y之间必定有一个取值是y的平方根,如果我们查找的数x比y的平方根小,则x2<y,如果我们查找的数x比y的平方根大,则x2>y,我们可以据此缩小查找范围,当我们查找的数足够准确时(比如满足|x2-y|<0.00001),就可...原创 2018-11-29 22:21:01 · 2578 阅读 · 0 评论 -
DS二叉排序树之查找
DS二叉排序树之查找时间限制: 1 Sec 内存限制: 128 MB题目描述给出一个数据序列,建立二叉排序树,并实现查找功能对二叉排序树进行中序遍历,可以得到有序的数据序列输入第一行输入t,表示有t个数据序列第二行输入n,表示首个序列包含n个数据第三行输入n个数据,都是自然数且互不相同,数据之间用空格隔开第四行输入m,表示要查找m个数据从第五行起...原创 2018-11-29 00:18:48 · 2232 阅读 · 0 评论 -
DS内排—2-路归并排序
DS内排—2-路归并排序题目描述输入一组字符串,用2-路归并排序按字典顺序进行降序排序。输入 测试次数t每组测试数据:数据个数n,后跟n个字符串,字符串不含空格。输出 对每组测试数据,输出2-路归并排序的每一趟排序结果。每组测试数据的输出之间有1空行。样例输入26 shenzhen beijing guangzhou futian nansha...原创 2018-12-17 21:45:29 · 2559 阅读 · 0 评论 -
DS排序--快速排序
题目描述给出一个数据序列,使用快速排序算法进行从小到大的排序--程序要求--若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用第三方对象或函数实现本题的要求输入第一行输入t,表示有t个测试示例第二行输入n,表示第一个示例有n个数据第三行...原创 2018-12-17 21:45:12 · 2657 阅读 · 0 评论 -
数据结构机考-Java template准备
所谓磨刀不误砍柴功,考前还是有必要花几分钟写几个template,这样打题才会舒服些。Eclipse下,window --> Preferences --> Java --> Editor --> Templates name:plSystem.out.println(${cursor});name:forifor(int i${curs...原创 2019-01-05 09:32:06 · 2153 阅读 · 0 评论 -
DS二叉树--二叉树构建与遍历
题目描述给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果本题目的代码框架参考如下三种遍历的代码框架【图片莫名其妙不见了,也懒得再去找了】输入第一行输入一个整数t,表示有t个二叉树第二行起输入每个二叉树的先序遍历结...原创 2018-12-25 18:16:02 · 4021 阅读 · 0 评论 -
复习系列2-DS二叉树--层次遍历
DS二叉树--层次遍历这题比较简单,用上一题建好的树,直接A掉,不过要注意输出格式,输出一棵树的时候忘记换行了,结果oj显示答案错误,懵逼了一小会。题目描述层次遍历二叉树,是从根结点开始遍历,按层次次序“自上而下,从左至右”访问树中的各结点。建树方法采用“先序遍历+空树用0表示”的方法输入第一行输入一个整数t,表示有t个测试数据第二行起输入二叉树先序遍历的结果...原创 2019-01-04 22:39:26 · 2328 阅读 · 0 评论 -
复习系列2-DS二叉树--叶子数量
DS二叉树--叶子数量建树头秃了一会,本来想着用先序遍历的方式建,但感觉传的东西太多了,思路有点走偏,看了看之前发的建树过程,思路终于清晰了些。本来写个先序遍历想先验证下建树过程有没有问题的,跑完发现题目要求叶子结点,就直接暴力在先序遍历的基础上改了。题目描述计算一颗二叉树包含的叶子结点数量。提示:叶子是指它的左右孩子为空。建树方法采用“先序遍历+空树用0表示”的方法,即...原创 2019-01-04 22:26:44 · 2396 阅读 · 0 评论