刷题日记
CodingNoStop
这个作者很懒,什么都没留下…
展开
-
1078 字符串压缩与解压 (20 分)
蛮不错的一道题,没什么难度,但是对基本功有要求1.scanf("%[^/n]",s);读入char*字符串;2,char*字符串到string字符串变换3.sstream;原创 2021-05-19 12:01:29 · 96 阅读 · 0 评论 -
leetcode 86 分割链表 经典
struct ListNode* partition(struct ListNode* head, int x){ struct ListNode* sml_now=(struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* big_now=(struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode* sml_b原创 2021-05-04 21:49:06 · 88 阅读 · 0 评论 -
leetcode61-旋转链表
struct ListNode* rotateRight(struct ListNode* head, int k){ if (!head) return head; int length=0; struct ListNode*temp=head; while(temp) {temp=temp->next; length++;} temp=head; if (k%length==0) return head原创 2021-04-28 21:43:22 · 121 阅读 · 0 评论 -
leetcode-82. 删除排序链表中的重复元素 II
这道题写了很久,也的确是写的很难受很难受,先上一下我的代码,说明思路。struct ListNode* deleteDuplicates(struct ListNode* head){ if (!head||!head->next) return head;//剔除掉无需操作的过短链表 //因为采用快慢指针,考虑链表相对较短情况的边界情况。 //链表长度为2的特殊情况 if (!head->next->next)原创 2021-04-28 21:03:34 · 74 阅读 · 0 评论 -
习题4-5 换硬币 (20 分)
这道题特别注意的是for循环输出的值是最后那个不能满足条件的变量,与for循环并不会检查第二个条件是否符合,第一个数是无条件的#include <stdio.h>int main(){ int money,sum5,sum2,coin_1,coin_2,coin_5,num=0; scanf("%d",&money); for(int fen_5=money/5;fen_5>0;fen_5--){ sum5=money原创 2021-04-15 18:15:06 · 128 阅读 · 0 评论 -
练习2-12 输出华氏-摄氏温度转换表 (15 分)
难度都没有什么,注意要写成%.6f 而不是空三格#include <stdio.h>int main(){ int lower,upper; float celsius; scanf("%d %d",&lower,&upper); if (lower>upper) printf("Invalid.\n"); else{ printf("fahr celsius\n"); int原创 2021-04-14 12:25:40 · 118 阅读 · 1 评论 -
1034 有理数四则运算 python
没有什么难度,题目本身也没有设置刁难的考察点。但是就很麻烦,细节挺多的。第三个测试点超时了,不管了1.学习了一下fraction库的使用from fractions import Fraction#numerator and denominatordef solve(p): if p.numerator==0: p=0 return p elif p.denominator==1: p=p.numerator if s原创 2021-04-08 20:58:27 · 132 阅读 · 0 评论 -
1050 螺旋矩阵 (25 分) python
这道题写了非常非常久,主要是不懂数组的基本方法。先输出一个基础数组,后续不断更改其中对应位置的数据,显得省力又轻松。而不是将list来回倒,左右添加元素。这道题第二个关键点是-循环,先输出外围,再输出次外围,以此类推,注意不断改变起始点的位置。注意内围里只有一个元素,一个竖行等个别特殊情况即可。先输出外围,再输出次外围。本来想用迭代的方法,但是数组在函数中的传递,显得并不轻松,不好处理。import matha = int(input())b = [int(i) for i in input().sp原创 2021-04-06 21:49:58 · 155 阅读 · 0 评论 -
1045 快速排序 (25 分) python
这道题一开始看错了题目,以为是主元(左边都小于主元,右边都大于主元)或者(左边都大于主元,左边都小于主元)两种情况,没想到其实只需要解第一种情况就够了,这样其实简单很多。但是这道题用python写很慢,不能暴力解,需要将算法优化.int比eval好!!这是第一遍写的代码num=eval(input())text=input().split()lis=[text[0],text[-1]]for x in range(1,num-1): xiao=da=False key=True原创 2021-04-06 21:39:30 · 222 阅读 · 0 评论 -
1049 数列的片段和 python
number=eval(input())text=input().split()plus=0for i in range(0,number): plus+=eval(text[i])*(i+1)*(number-i)print('%.2f' %plus)没什么难度倒还是,只是暴力解超时,这道题不像是编程基本功题目,倒像是简单算法入门题...原创 2021-03-19 15:12:26 · 80 阅读 · 0 评论 -
1044 火星文
这道题写了非常非常久,不管是思路还是bug都有问题,还有一些语法易错点,但也增长了一些知识debug:1.左边赋值2.想好变量的各种名字,避免变量太多,导致重复定义,出bug3.在使用循环时注意到底是循环索引还是循环文本,在下文引用的时候不要弄混了1.知识点int可以将任意进制的数转换为十进制,其次是用abcd来表示大于十的数2.进制的表示法,循环相除字符串不断加余数,最后右边加余数3.insert可以指定在列表的某处添加元素...原创 2021-03-17 20:21:48 · 90 阅读 · 0 评论 -
1091 N-自守数 python
data_num=eval(input())def panduan(k): for n in range(1,10): number=str(n*k*k) if number[::-1][:len(str(k))]==str(k)[::-1]: key=n print(f'{n} {number}') break else: print('No')text=li.原创 2021-03-13 19:58:52 · 315 阅读 · 0 评论 -
1092 最好吃的月饼 python
#18:45-56#统计b个城市数中的每一种月饼最大销量,并输出最大注意并列问题,要输出所有并列月饼text=input().split()food_kind,city_num=eval(text[0]),eval(text[1])lis,lis1=[0 for i in range(food_kind)],[]for p in range(city_num): text=input().split() for i in range(len(text)): l.原创 2021-03-13 19:02:03 · 143 阅读 · 0 评论 -
1093 字符串A+B python
这道题很简单没有什么难度,无非是加一个伴随iterable,用来判断语句。只是有一个时间复杂度的问题需要注意。lis=[]for p in (input()+input()): if p not in lis: print(p,end='') lis.append(p) 这样的算法时间复杂度为(两倍总输入文本的长度)+(两倍输出文本长度)超时了,于是修改为lis=''for p in (input()+input()): if p not原创 2021-03-13 18:45:20 · 182 阅读 · 0 评论 -
1002 写出这个数 python&c语言
一.题目二.题目分析这道题非常简单。主要有二个步骤,第一步将输入数据处理并求和。用for循环遍历求和即可。第二步,将数据对应转化并输出。利用和数据的特性,恰好作为索引,索引列表里的特定数据。输出的时候由于末尾没有空格,使用text.rstrip(‘ ‘)去除末尾空格text=input()num=len(text)con=0text0=['ling','yi','er','san','si','wu','liu','qi','ba','jiu']text1=''for p in text:原创 2021-03-09 11:14:04 · 72 阅读 · 0 评论 -
1028 旧键盘 *****
de两次bug:一个是set集合莫名不分开。第二次是,删除多余数字,其他没什么了—*注意集合是乱序的原创 2021-03-06 23:19:21 · 71 阅读 · 0 评论 -
1026 程序运行时间
text=list(map(int,input().split()))number=(text[1]-text[0])/100hh,mm,ss=0,0,0while number>0: if number>=3600: hh+=1 number-=3600 elif number>=60: mm+=1 number-=60 else: ss=int(number+0.5)原创 2021-03-06 17:04:14 · 68 阅读 · 0 评论 -
1024 科学技术法
import retext=input()fir,text=text[0],text[1:]if re.match(r'\d+(\.)\d+(E\+)\d+',text): text=text.split('E+') text3=text[0].split('.') a=int(text[-1]) if len(text3[-1])>a: text3[-1]=list(text3[-1]) text3[-1].insert(a,'.')原创 2021-03-06 14:54:45 · 273 阅读 · 0 评论 -
1022 D进制的A+B
这个题目代码没什么难度,就是思路不太好想。注意例如八进制的100=十进制64。100=88=8*8.逢八进一。text=list(map(int,input().split()))a,b=text[0]+text[1],text[-1]def jinzhi(a,b): number='' if a==0: number=0 else: while a!=0: yushu=a%b a=a//b number=s原创 2021-03-06 12:31:53 · 69 阅读 · 0 评论 -
1021个位数统计
sort 与 sorted 区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。故sorted需要赋值很简单没什么好说的。text=input()text1=list(set(text))text1=sorted(text1,key=lambda x:int(x),reverse=False)原创 2021-03-05 10:06:52 · 110 阅读 · 1 评论 -
1020月饼 难
1.这道题主要涉及到排序算法,和前面两道题部分相关,但是还是不会写,应该做一个专题,学习相关知识点,专门训练一下。涉及成绩排序,列表里嵌套列表2.列表里不能有小数3.整型与浮点数—float,int4.思路:利用字典,保存索引5.a={i:c for i in range()}6.’%.2f’ %f7.c=(‘%.2f’ %(a/b)8.sorted(text,key=lambda x:x[0],reverse=True)...原创 2021-03-04 00:11:03 · 104 阅读 · 1 评论 -
1010 一元多项式求导
经过优化后的代码结构。首先利用input().split()函数处理数据,其次利用for循环,当p为偶数时,如果索引p与p+1的乘积不为零(p不为零,p+1不为零)索引p经过相应变化后,成为索引p。p为奇数时,如果乘积不为零,索引p=p-1。for循环if加空格,elselen(xx)-1就不加。其次是if not 包含00与10两种情况。对于10考虑到另外列表,即可忽略。问题分析:这个代码写了很久,第一个原因是对零多项式,单个常数,多项式中的常数三种情况处理不到位。第二个原因是对‘’,‘ ’,None.原创 2021-03-01 11:44:47 · 83 阅读 · 0 评论 -
1013 数素数
def zhishu(num): global Num if num >1: for p in range(2,num): if num%p==0: break else: text.append(str(num)) return numtext=[]text0=input().split()text1=''a=0min,max=int(text0[0]),int(text0 [1原创 2021-02-28 01:00:23 · 152 阅读 · 1 评论 -
1003 我要通过 pta 重打
一.题目二.题目分析这道题太坑爹了,首先是对第三个条件理解错误导致写了一堆错的代码,其次是输入例子和输出例子不对应,判断某个数据是否是纯数据也折腾了好久,后来发现是题目理解错了。最后弄完结果代码输出有问题。再者是在自己的编辑器上没问题,输出到pta上测试,测试又失败了。num=int(input())for p in range(num): text = input("") timep,timet,num,nump,numt=0,0,0,-1,-1 for p in text:原创 2021-02-27 23:17:46 · 346 阅读 · 0 评论 -
1006 换个格式输出整数
一.题目二.题目分析本题相对简单,但容易出现逻辑不周密导致代码出问题。第一部分是输入数据处理,如何识别百位十位个位数字的大小。其次是代码输出,使用end=’'或者是text+=‘B’。代码书写时由于输入个位数不同,注意考虑位数不同带来的代码细节差异。text=input()number=len(text)text0,text1,text2='','',''for p in range(number): if p==0: str0=int(text[-1]) if p==1:原创 2021-02-26 19:41:33 · 77 阅读 · 0 评论 -
1016 部分A+B
·一.题目内容二.题目分析第一步是数据处理,提取出所要信息部分。这步相对简单,用split()函数即可第二部是检测字符串中特定元素的个数。本来是写了一段代码,但其实是多余了,将问题弄复杂了,用count()函数即可。import mathtext=input().split()a,b=text[1],text[3]m,n=0,0def math(message): global a global total num,total=0,0 x=int(a) for p in mess原创 2021-02-26 01:10:10 · 74 阅读 · 0 评论 -
Pat 1009 说反话
一.题目二.题目分析本题很简单,主要是两个函数split与reverse函数text=input().split()text.reverse()message=''for p in text: message=message+p+' 'message=message[:-1]print(message)三.拓展知识点1.python切片公式如下:object[start_index : end_index : step]例:text[4:6:-1]四到六步长为负一,text[:原创 2021-02-23 22:53:41 · 79 阅读 · 0 评论 -
PAT 1004成绩排名
**一.题目内容****二.题目分析**本问题分为两个部分。1.输入数据处理2.进行数据排序,找到最大最小值第一个部分,本来采用的是空格判定方法,但是并不理想,似乎无法判定,折腾了一番后变放弃了。for i in range(int(number)): single=input() for p in single: num,n=1,2 while n>0: if p=='': num+=1 n-=1 else: num+=1 numbe原创 2021-02-23 21:38:02 · 90 阅读 · 0 评论