PTA练习
Mrrr_Li
时间一直都在向前,你也应该一直向前。
展开
-
7-4 jmu-Java-04面向对象进阶-03-接口-自定义接口ArrayIntegerStack
// package test;// 4import java.util.*;interface IntegerStack{ public Integer push(Integer item); //如果item为null,则不入栈直接返回null。如果栈满,也返回null。如果插入成功,返回item。 public Integer pop(); //出栈,如果为空,则返回null。出栈时只移动栈顶指针,相应位置不置为null public Integer pe.原创 2020-11-25 16:50:44 · 447 阅读 · 0 评论 -
7-3 字符串替换 (10分)(Java,超长字符串替换创建快速输入流)
// package test;// 3//这输入输出就离谱import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main{ public static String exchange(String init, String target, String result){ retu.原创 2020-11-25 16:10:12 · 509 阅读 · 0 评论 -
6-2 顺序表操作集 (20分)
List MakeEmpty(){ List L; //只是单纯定义了一个指针 L = (List)malloc(sizeof(struct LNode)); //注意分配内存只能sizeof(struct LNode) L->Last = -1; return L;}Position Find( List L, ElementType X ){ for(int i = 0; .原创 2020-11-19 19:53:15 · 255 阅读 · 0 评论 -
L1-034 点赞 (20分)Java
我寻思是我没看懂题吗,按照他这个输入样例,应该输出4 2 吧?先是我写的0分代码。。。按照她那个输入,输出结果为4 2// package exercise;import java.util.*;public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); String n = input.nextLine(); ..原创 2020-11-12 20:53:27 · 362 阅读 · 0 评论 -
7-52 两个有序链表序列的交集 (20分)Java/C
先是Java写的,用ArrayList求交集,最后一个测试点内存超限// package exercise;import java.util.*;public class Main{ public static Object[] search(ArrayList<Integer> listA, ArrayList<Integer> listB){ boolean ans = listA.retainAll(listB); retu.原创 2020-11-11 21:11:04 · 820 阅读 · 0 评论 -
7-53 两个有序序列的中位数 (25分)Java/C++
点此进入该题拿Java做算法题,真的是一言难尽,要么内存超出,要么运行超时,同样的算法C/C++能ac,Java就不行,我是真的服了(唉,可能是我初学Java,还太菜了吧)以下是我自己写的,先合并两个有序数组。再找中位数,最后一个用例超时//package exercise;import java.util.*;public class Main{ public static int[] inOrderAdd(int[] a, int[] b){ int len =原创 2020-11-11 20:39:29 · 246 阅读 · 0 评论 -
7-1 最大子列和问题 (20分)
自己写的,用数组存或者用ArrayList存最后一个用例都是内存超了(按理说int[]比ArrayList占的内存少啊,唉,改天看看Java内存优化)自己写的Java代码,18分//package exercise;import java.util.*;public class Main{ public static int maxSubArray(ArrayList<Integer> arraylist){ Object[] array = arrayli.原创 2020-11-11 09:27:45 · 122 阅读 · 0 评论 -
6-12 二叉搜索树的操作集 (30分)
BinTree Insert(BinTree BST,ElementType x){ //二叉排序树插入时,只能插入到叶子结点 if(BST == NULL){ BST = (BinTree)malloc(sizeof(struct TNode)); BST->Data = x; BST->Left = NULL; BST->Right = NULL; }//插入到左子树 else ..原创 2020-11-10 20:16:30 · 99 阅读 · 0 评论 -
6-11 先序输出叶结点 (15分)
递归void PreorderPrintLeaves( BinTree BT ){ if (BT == NULL) return; if ( BT->Left == NULL && BT->Right == NULL){ printf(" %c", BT->Data); } PreorderPrintLeaves(BT->Left); PreorderPrintLeaves(BT->R.原创 2020-11-10 19:42:53 · 119 阅读 · 0 评论 -
6-10 二分查找 (20分)
Position BinarySearch(List L, ElementType X) { int low = 1, high = L->Last; //置区间初值(元素从下标1开始查找) while (low <= high) { //确保待查区间有意义 int mid = (low + high) / 2; if (L->Data[mid] == X) //找到待查元素X return mid; .原创 2020-11-10 19:31:51 · 260 阅读 · 0 评论 -
6-9 二叉树的遍历 (25分)
中序,先序,后序,按层遍历void InorderTraversal( BinTree BT ){ if (BT){ InorderTraversal(BT->Left); printf(" %c", BT->Data); InorderTraversal(BT->Right); }}void PreorderTraversal( BinTree BT ){ if (BT){ .原创 2020-11-10 19:20:05 · 187 阅读 · 0 评论 -
6-8 求二叉树高度 (20分)
这简洁的代码就很奶思int GetHeight( BinTree BT ){ if( BT == NULL) return 0; return (GetHeight(BT->Left) >= GetHeight(BT->Right) ? GetHeight(BT->Left) : GetHeight(BT->Right)) + 1;}原创 2020-11-10 19:05:15 · 150 阅读 · 0 评论 -
6-7 在一个数组中实现两个堆栈 (20分)
这道题就离谱,里面默认有IsEmpty函数,自己写就编译错误我也是服了。// bool IsEmpty(Stack S, int Tag) {// if (Tag == 1) {// if (S->Top1 == -1) return true;// else return false;// }// else {// if (S->Top2 == S->MaxSize) return true;// else return false;// }.原创 2020-11-10 17:55:18 · 202 阅读 · 1 评论 -
6-6 带头结点的链式表操作集 (20分)
好久没有一遍过了(逃List MakeEmpty(){ List L = (List)malloc(sizeof(List)); L->Next = NULL; return L;}Position Find( List L, ElementType X ){ while(L->Next){ if (L->Next->Data == X){ return L->Next; } .原创 2020-11-10 16:59:52 · 134 阅读 · 0 评论 -
6-5 链式表操作集 (20分)
Position Find( List L, ElementType X ){ while(L){ if (L->Data == X){ return L; } L = L->Next; } return ERROR;}List Insert( List L, ElementType X, Position P ){ List node = (struct LNode *)malloc(.原创 2020-11-10 16:20:22 · 166 阅读 · 0 评论 -
6-4 链式表的按序号查找 (10分)
注意判断非法输入时,0也算非法输入int listLength(List L){ int ans = 0; while(L){ ans++; L = L->Next; } return ans;}ElementType FindKth( List L, int K ){ int len = listLength(L); int cnt = 1; if (K <= 0 || K > len){.原创 2020-11-10 14:59:00 · 247 阅读 · 0 评论 -
自测-2 素数对猜想 (20分)Java
Object[] = toArray();集合变成数组 toArray(T[] ); 将集合元素放进T类型的数组中注意:Object[] 不能直接强制转换为Integer[],可抽取出他的每一个对象再转换。// package exercise;import java.util.*;public class Main{ public static boolean isPrime(int num){ if (num <= 1){ retu.原创 2020-11-10 14:39:10 · 594 阅读 · 0 评论 -
7-5 查找电话号码 (10分)
使用HashMap存储信息// package exercise;import java.util.*;public class Main{// public static String search(HashMap<String,String> hashMap){//// } public static void main(String[] args){ Scanner input = new Scanner(System.in); .原创 2020-11-08 10:59:20 · 673 阅读 · 0 评论 -
7-4 Remove duplicates (10分)
兜兜转转,又是一道数组去重import java.util.*;public class Main{ public static int[] delete(int[] array){ int len = array.length; int j = 0; int flag = 0; //没找到相同的 int[] rtn = new int[len]; for (int i = 0; i < l.原创 2020-11-08 10:58:12 · 243 阅读 · 0 评论 -
7-3 大数整除 (10分)
又是使用大整数存import java.util.*;import java.math.*;public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); int cnt = 3; String n = input.next(); BigInteger N = new BigInteger(n.原创 2020-11-08 09:55:28 · 420 阅读 · 0 评论 -
7-2 两个巨大素数(质数)的乘积 (10分)
我一看到这么长的数就想起了工具类中的大整数类,但是又有点不自信,觉得可能大整数类也处理不了这么长的数,于是试了一下,发现用BigInteger 和BigDecimal类都可以处理BigInteger类 大整数 long -2的63次方 ~ 2的63次方-1 (该类型的变量存储超过long范围的整数,底层用数组存的每一位) 1.所属的包java.math 需要import导入 2.继承自Number 3.如何创建对象 提供的构造方法全部都是带参数的 通常利用带String参数的构.原创 2020-11-08 09:26:12 · 1139 阅读 · 0 评论 -
7-2 求解给定字符串的前缀 (10分)(Java)
这道题有点离谱,我用while循环写,全是答案错误(可能是判断条件有问题或者其他),用do while就可以。以后需要用do while的时候就不能冷落她了import java.util.Scanner;public class Main{ public static int fun(String a, String b){ int k = 0; int len1 = a.length(); int len2 = b.length(); .原创 2020-10-28 17:11:06 · 901 阅读 · 0 评论 -
今天用Java刷PTA练习题遇到的一些问题
Scanner类下有两个读取字符串的方法,next和nextLine其实这两个方法的区别我在之前的博客中已经说明过了,但是今天刷题遇到了问题,经过我自己的测试,再说明一下String a = null; a = input.next(); System.out.print(a.equals(""));如果主函数中只有这些代码,如果你直接按Enter键,程序就一直会等你输入,因为next方法会以空格座位结束符,将空格之前的字符组成一个字符串。而如果你直接输入Enter,原创 2020-10-28 16:44:44 · 230 阅读 · 0 评论 -
L1-017 到底有多二 (15分)(Java)
好久没有一遍过了,记录一下(逃import java.text.DecimalFormat;import java.util.Scanner;public class Main{ public static String fun(String num){ double cnt = 0; double ans = 0.0; int len = 0; if(num.charAt(0) == '-'){ le.原创 2020-10-28 14:47:46 · 197 阅读 · 1 评论 -
L1-011 A-B (20分)
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Scanner;public class Main{ public static String fun(String a, String b){ char[] arrA = a.toCharArray(...原创 2020-10-27 15:44:04 · 195 阅读 · 0 评论 -
7-2 计算正五边形的面积和周长 (25分)
这道题不难,有一个坑点是Math.tan函数的参数注意单位是rad这使得我卡了半天,又没按照题目要求写,没全对,鉴借的别人的代码,特此记录import java.text.DecimalFormat;import java.util.Scanner;abstract class shape {public abstract double getArea(); public abstract double getPerimeter(); }class RPentagon extends原创 2020-10-21 15:08:13 · 3199 阅读 · 1 评论 -
7-1 使用公历类GregorianCalendar (25分)
就按照题目所说的使用那个类创建一个对象,然后设定毫秒值,再使用getTime方法返回一个Date类型的对象或者也可以直接自己创建一个Date对象,然后设定毫秒值,PTA也是检测不出来的再通过DateFormat类下的一个子类SimpleDateFormat类格式化date对象,最后记得将月份值减一(也是吃饱了撑的)详见代码!import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;impo.原创 2020-10-21 14:16:16 · 1352 阅读 · 1 评论