OJ刷题
PTA、牛客、LeetCode、剑指offer刷题总结
顾道长生'
时人不识凌云木,直待凌云始道高。
展开
-
【LeetCode刷题】26. 删除有序数组中的重复项
删除有序数组中的重复项给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = remo..原创 2021-09-24 21:09:13 · 132 阅读 · 0 评论 -
L1-028 判断素数 (10 分)
本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231 的需要判断的正整数。输出格式:对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例:211111输出样例:YesNoAC:#include<bits/stdc++.h>using...原创 2019-10-13 12:44:40 · 669 阅读 · 1 评论 -
L1-049 天梯赛座位分配 (20 分)
天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的...原创 2019-10-17 10:33:26 · 439 阅读 · 0 评论 -
L1-017 到底有多二 (15 分)
一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。输入格式:输入第一行给出一个不超过50位的整数N。输出格式:在一行中...原创 2019-10-11 20:39:15 · 977 阅读 · 0 评论 -
L1-008 求整数段和 (10 分)
给定两个整数A和B,输出从A到B的所有整数以及这些数的和。输入格式:输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。输出格式:首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。输入样例:-3 8输出样例: -3 -2 -1 0 1 2...原创 2019-10-07 19:56:33 · 423 阅读 · 0 评论 -
L1-025 正整数A+B (15 分)
题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。输入格式:输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。输出格式:...原创 2019-10-13 12:43:29 · 373 阅读 · 0 评论 -
L1-020 帅到没朋友 (20 分)
当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。输入格式:输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤100...原创 2019-10-13 12:39:08 · 378 阅读 · 0 评论 -
L1-031 到底是不是太胖了 (10 分)
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。输入格式:输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 <...原创 2019-10-17 10:26:38 · 815 阅读 · 1 评论 -
L1-009 N个数求和 (20 分)
本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。输出格式:输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写...原创 2019-10-08 22:26:13 · 395 阅读 · 0 评论 -
L1-011 A-B (20 分)
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。输入格式:输入在2行中先后给出字符串A和B。两字符串的长度都不超过104 ,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。输出格式:在一行中打印出A−B的结果字符串。输入样例:I love GPLT! It'...原创 2019-10-11 20:37:14 · 1425 阅读 · 3 评论 -
L1-043 阅览室 (20 分)
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪...原创 2019-10-17 10:30:21 · 311 阅读 · 0 评论 -
L1-002 打印沙漏 (20 分)
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给...原创 2019-10-04 09:44:04 · 340 阅读 · 0 评论 -
L1-056 猜数字 (20 分)————————效率不高,直接水过~~~~~~
//简单题#include<bits/stdc++.h>using namespace std;struct people{ string name; int digit;}a[20000];int main(){ int n,sum=0; cin>>n; for(int i=0;i<n;i++) { cin>>a[i].nam...原创 2019-03-22 22:40:22 · 707 阅读 · 0 评论 -
L1-006 连续因子 (20 分)
一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数 N(1<N<231 )。输出格式:首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1因子2……*因...原创 2019-10-05 16:23:50 · 370 阅读 · 0 评论 -
6-2 从抽象类shape类扩展出一个圆形类Circle (10 分)
请从下列的抽象类shape类扩展出一个圆形类Circle,这个类圆形的半径radius作为私有成员,类中应包含初始化半径的构造方法。public abstract class shape {// 抽象类public abstract double getArea();// 求面积public abstract double getPerimeter(); // 求周长}主类从键盘输入圆形...原创 2019-06-03 15:40:26 · 15593 阅读 · 0 评论 -
6-5 jmu-Java-03面向对象基础-clone方法、标识接口、深拷贝 (10 分)
**Object的clone方法可以帮助我们克隆对象。现在需编写一个类Car包含:1.属性:private String name;private CarDriver driver;private int[] scores;2.无参构造函数public Car() {}3.方法:@Overridepublic String toString() {return “Car [n...原创 2019-06-03 15:41:28 · 2689 阅读 · 1 评论 -
7-3 jmu-Java-02基本语法-08-ArrayList入门 (10 分)
本习题主要用于练习如何使用ArrayList来替换数组。新建1个ArrayList strList用来存放字符串,然后进行如下操作。提示:查询Jdk文档中的ArrayList。注意:请使用System.out.println(strList)输出列表元素。输入格式输入n个字符串,放入strList。直到输入为!!end!!时,结束输入。在strList头部新增一个begin,尾部新增一...原创 2019-06-03 15:38:55 · 3832 阅读 · 0 评论 -
L1-039 古风排版 (20 分)
/先根据字符串的长度s.length()和n计算出col列数,然后建立一个n行col列的字符数组,一开始都赋值为空格,然后根据从最后一列再倒数第二列依次向前,行数从0~n-1的顺序依次将s[index]的值填入vector中,直到s的所有字符都填完为止,最后输出这个字符数组/#include<bits/stdc++.h>using namespace std;int main()...原创 2019-03-12 20:01:47 · 970 阅读 · 0 评论 -
7-4 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 (25 分)
**现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。注1:单词之间以空格(1个或多个空格)为间隔。注2:忽略空行或者空格行。基本版:统计时,区分字母大小写,且不删除指定标点符号。进阶版:统计前,需要从文字中删除指定标点符号!.,:?。 注意:所谓的删除,就是用1个空格替换掉相应字符。统计单词时需要忽略单词的大小写。输入说明若干行英文,最后以!!!为结束...原创 2019-06-03 15:34:47 · 7559 阅读 · 0 评论 -
手写通用数组
实现一个通用的数组类,要求如下:可以对内置数据类型以及自定义数据类型的数据进行存储将数组中的数据存储到堆区构造函数中可以传入数组的容量提供对应的拷贝构造函数以及operator=防止浅拷贝问题提供尾插法和尾删法对数组中的数据进行增加和删除可以通过下标的方式访问数组中的元素可以获取数组中当前元素个数和数组的容量代码结构MyArray.hpp#pragma once#include<iostream>using namespace std;template<c原创 2021-01-21 10:16:57 · 124 阅读 · 0 评论 -
707. 设计链表
设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在原创 2021-01-11 18:39:46 · 113 阅读 · 0 评论 -
206. 反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * };原创 2021-01-11 19:30:32 · 131 阅读 · 0 评论 -
203. 移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解题思路删除结点的核心代码ListNode *temp=p->next; p->next=p->next->next; delete temp;设置一个虚拟头结点valHead便于操作代码/** * Definition for singly-linked lis原创 2021-01-11 12:16:59 · 96 阅读 · 0 评论 -
59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/spiral-matrix-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路此题就是模拟生成一个 n×n 空矩阵 res,随后原创 2021-01-11 10:04:27 · 206 阅读 · 1 评论 -
142. 环形链表 II
解题思路用一个无须集合来实现存储链表中节点,unordered_set基于哈希表实现,无自动排序功能,若此节点之前访问过,那么此节点为第一个开始入环的节点代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution原创 2021-01-12 10:26:53 · 93 阅读 · 0 评论 -
leetcode刷题——27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,3,0,4,2]原创 2021-01-10 18:46:30 · 163 阅读 · 0 评论 -
leetcode刷题——209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。进阶:如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。通过次数106,550提交次数238,357来源:力扣(LeetCode)链接:https://le原创 2021-01-11 09:15:18 · 172 阅读 · 1 评论 -
leetcode刷题——35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-原创 2021-01-10 15:31:19 · 179 阅读 · 0 评论 -
剑指Offer 二维数组中的查找
解题思路开辟一个动态数组se,然后遍历array,将array中的数存入se中,然后遍历se,判断是否有targetACclass Solution {public: bool Find(int target, vector<vector<int> > array) { set<int> se; for(int i=0;i<array.size();i++) { .原创 2021-02-05 15:36:21 · 138 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n
解题思路此题考点为高中数学中的等差数列求和,Sn=n(a1+an)/2故直接return n*(n+1)/2代码class Solution {public: int sumNums(int n) { return n*(n+1)/2; }};原创 2021-02-01 08:35:58 · 125 阅读 · 0 评论