自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 Python数据分析——pandas

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)pandas基础操作(无输出版)(有输出的在下面):import numpy as npimport pandas as pddates = pd.date_range("20200806", periods=8) # 连续的8天# randn为标准正态分布,index为key值,columns为属性值df = pd.DataFrame(np.random.randn(8, 5), index=dates, columns=list("

2020-08-06 21:41:18 311

原创 Python数据分析——matplotlib(绘图)

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)首先是matplotlib最基础的操作的应用,有一个大概的认识:import numpy as npimport matplotlib.pyplot as pltx = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 横轴,-pi到pi之间,256个点c = np.cos(x) # c代表cosplt.figure(1)plt.plot(x, c) # 变量分别是自变量和因变量(必

2020-08-05 23:28:01 384

原创 Python数据分析——numpy

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)定义list数据结构:>>> L1 = [[1, 3, 5], [2, 4, 6]]>>> print('L1类型:', type(L1))>>> print('L1:', L1)L1类型: <class 'list'>L1: [[1, 3, 5], [2, 4, 6]]运算速度更快的数据结构:(ndarray只允许存放一种数据类型)>>> import

2020-08-04 20:58:57 280

原创 Python——列表生成式

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)Python特有的列表生成式:>>> L1 = range(1, 11) # L1 = [1,2,3,...,9,10]>>> print('L1:', L1)>>> L2 = [x * x for x in range(1, 11)] # L2 = [1*1,2*2,3*3,...,9*9,10*10]>>> print('L2:', L2)>>>

2020-08-02 18:45:21 162

原创 机器学习的典型应用和算法分类

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)机器学习的典型应用:1、购物篮分析(啤酒+尿片)关联规则2、用户细分精准营销(全球通、动感地带、神州行)聚类3、垃圾邮件朴素贝叶斯4、信用卡欺诈(风险识别)决策5、互联网广告CTR预估(点击率预估)6、推荐系统协同过滤7、自然语言处理情感分析、实体识别8、图像识别深度学习机器学习算法分类:分类1分类2:(按需要解决的问题类型分类)分类2分类与回归聚类标注分类3:(直指本质,重要)

2020-07-29 12:36:47 684

原创 Python——切片

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)对list进行切片:>>> L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> print(L[1:7]) # 包括L[1],但不包括L[7]>>> print(L[:5]) # 从头开始,到L[4]>>> print(L[:]) # 从头到尾>>> print(L[1::2]) # 从L[1]开始,每两个元素取

2020-07-29 10:36:20 132

原创 Python——函数

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)编写函数时,要在函数名前加def,参数后面有冒号。>>> def squareSum(L): #计算平方和>>> sum = 0>>> for x in L:>>> sum += x * x>>> return sum>>> L = [1, 2, 3, 4, 5]>>> pr

2020-07-28 21:13:28 513

原创 Python——set(集合)

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)set中元素无序且不重复,可以用来去除一大堆数据中的重复元素。>>> s = set(['A', 'B', 'C', 'B'])>>> print(s)>>> print(len(s)){'B', 'A', 'C'}3set中元素严格区分大小写:>>> s = set(['A', 'B', 'C'])>>> print('A' in s)>

2020-07-28 20:10:21 89

原创 Python——dict(字典)

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)dict定义时用花括号“{ }”表示,每组数据的key和value可以通过冒号“:”对应起来,最后一个数据后面不用逗号。使用len()可以获取字典长度。>>> dict = {>>> 'Alice': 95,>>> 'Bob': 93,>>> 'Carol': 91>>> }>>> print(dict)&gt

2020-07-28 11:56:07 380

原创 Python——判断和循环

(本专栏是我的慕课学习笔记,后续发现不足之处会更新)if-elif-if语句,注意和C++的不同之处(冒号)>>> score = 85>>> if score >= 80:>>> print('good')>>> elif score >= 60:>>> print('passed')>>> else:>>> print('fai

2020-07-26 20:43:16 117

原创 Python——tuple(元组)

(本专栏是我的慕课学习笔记,后续发现不足之处可能会更新)tuple和list很类似,但是tuple一旦创建完毕,就不能修改了。tuple在定义时用圆括号表示“( )”。t = ('Alice', 'Bob', 'Carol')print t[1] #访问第二个元素Bobprint t[-1] #访问倒数第一个元素Carolt[1] = 'Dave' #无法修改元素,会报错创建包含0个元素tuple,直接用()表示:t = ()print t创建包含1个元素tuple时,会发现打印出的t

2020-07-26 14:47:16 134

原创 Python——list(列表)

(本专栏是我的慕课学习笔记,后续发现不足之处可能会更新)list在python中是一种有序的集合,可以随时添加或删除其中的元素。定义时用中括号“[ ]”表示。L = ['Alice', 'Bob', 'Carol']其中,list包含的元素不要求同种数据类型,我们可以在list中包含各种数据:L = ['Alice', 100, True]空list:empty_list = []访问元素:L = ['Alice', 'Bob', 'Carol']print L[0] #访问第一个元

2020-07-26 14:28:21 508

原创 PAT A1150 Travelling Salesman Problem (25)

PTA跳转:原题链接本题考查旅行商问题(TSP)。给出一张图,问某条路径是否为TS环路,如果存在多条TS环路,求出最短路径的那条。修改了柳神的部分代码加以注释,思路是清晰明确的。#include <iostream>#include <vector>#include <set>using namespace std;int e[205][205], n, m, k, ans = 99999999, ans_id;vector<int> v;

2020-07-21 14:36:32 108

原创 STL——lower_bound()和upper_bound()

lower_bound()和upper_bound()这两个函数都是利用二分查找的方法在一个有序数组中进行查找。基本使用方法:#include <iostream>#include <algorithm>using namespace std;int main(){ int a[10] = {20, 21, 23, 24, 27, 28, 30, 32, 35, 38}; int pos; pos = lower_bound(a, a +

2020-07-19 21:07:11 128

原创 PAT A1064 Complete Binary Search Tree (30)

PTA跳转:原题链接题目大意:给出树各个结点的值,并且已知该树是完全二叉搜索树,输出树的层次遍历。解题思路:将树各个结点的值按递增排序,即得到这棵树的中序遍历。假设把树从上到下,从左到右依次编号。通过递归调用,找到按中序遍历顺序输出的各个位置,并依次赋值。从图中可以看出,中序遍历第1个数字0在[7]处,第2个数字1在[3]处,第3个数字2在[8]处…#include <iostream>#include <algorithm>using namespace std;

2020-07-18 12:55:02 90

原创 PAT A1043 Is It a Binary Search Tree (25)

PTA跳转:原题链接二叉查找树(BST),对于每棵子树而言,左子树任意结点都比根结点小,右子树任意结点都比根结点大。题目大意:现给出一串数字序列,如果满足一棵BST的前序遍历或镜像BST的前序遍历,输出“Yes”,并输出后序遍历。否则输出“NO”即可。(镜像BST指左子树任意结点都比根结点大,右子树任意结点都比根结点小。)(题目规定BST右子树结点可以等于根结点,即镜像BST左子树结点可以等于根结点)#include <iostream>#include <vector>

2020-07-18 08:20:39 96

原创 PAT A1101 Quick Sort (25)

PTA跳转:原题链接题目大意:输入一串数字序列,如果某个元素左边的数字都比它小,右边的数字都比它大,则称这个元素为“中心”。问该数字序列有多少个“中心”。如序列【1,3,2,4,5】,1、4、5可以作为“中心”。#include <iostream>#include <algorithm>#include <vector>using namespace std;int main() { int N; cin >> N;

2020-07-16 18:22:27 97

原创 PAT A1123 Is It a Complete AVL Tree (30)

PTA跳转:原题链接这题考查AVL树,按层输出,判断一棵树是否为完全二叉树。这题是对A1066的改进(A1066解决的是AVL树)。用一个队列即可实现按层输出,当某个结点出队之前,让它的左右孩子入队(如果有的话),直到队列为空。每个结点可能会出现4种情况:①左右孩子都存在。么在当前结点出队之前,让左右孩子入队。②只有左孩子。在当前结点出队之前,让左孩子入队。并将flag设为0,表示队列后续结点不应该再有孩子结点。③只有右孩子。在当前结点出队之前,让右孩子入队。直接判断这棵树不是完全二叉树。④左右

2020-07-16 17:38:43 114

原创 PAT A1066 Root of AVL Tree (25)

PTA跳转:原题链接AVL树,即平衡二叉树。对于每棵子树而言,左右子树的深度不超过1。题目大意:输入一串数字,创建AVL树。输出最终树的根的元素。AVL树一直是我心目中的难点,参考了这篇博客之后豁然开朗,对创建树时要考虑的情况也会更加周全。代码含有大量递归,编写时需要注意。#include <iostream>using namespace std;struct node { int val; struct node *left, *right;};node

2020-07-16 09:37:43 121

原创 数据结构——树的遍历(先序,中序,后序,层次)

通过先序方式创建树,通过简单的递归就可以实现先序,中序,后序遍历。层次遍历还需要用到队列,当某个节点出队时,它的左右结点要入队(如果有的话)。#include <iostream>#include <queue>using namespace std;typedef struct Node{ char data; struct Node *lchild, *rchild;}Node;//通过先序方式创建树,#表示空/* A

2020-07-15 15:46:55 461

原创 PAT A1086 Tree Traversals Again (25)

PTA跳转:原题链接题目大意:用栈模拟二叉树创建的过程。给出堆栈和出栈的指令,输出这棵二叉树的后序遍历。解题思路:堆栈指令可以理解成前序遍历,出栈指令可以理解成中序遍历。题目变成:给定二叉树的前序遍历和中序遍历,输出其后序遍历。#include <iostream>#include <vector>#include <stack>#include <string.h>using namespace std;vector<int>

2020-07-15 11:20:21 84

原创 PAT A1015 Reversible Primes (20)

PTA跳转:原题链接题是简单题,难点在于读题。题目大意:判断一个数和它转换成N进制后进行翻转再转换成10进制的数是否都是素数,如果是,输出“Yes”,否则输出“No”。例如“23 2”,23是素数,23转换成2进制后是10111,翻转后是11101,转换成10进制后是29,29也是素数,所以输出“Yes”。#include <iostream>#include <math.h>using namespace std;int isPrime(int n) //判断素数

2020-07-14 20:35:43 95

原创 PAT A1125 Chain the Ropes (25)

PTA跳转:原题链接题目大意:给出多段绳子的长度,要求把这些绳子连结在一起,求最终绳子的最大程度(向下取整)。其中,将绳子A和B连结在一起的长度为(A+B)/2。解题思路:由于每次结绳都要取平均数,那么要让较长的绳子少结绳。递增排序即可实现这个效果。做完之后想了一下,由于在输入中每段绳子的长度都是整数,在中间过程计算时,绳子的长度用int即可,并不会丢失精度。#include <iostream>#include <algorithm>using namespace st

2020-07-14 18:02:47 138

原创 PAT A1067 Sort with Swap(0, i) (25)

PTA跳转:原题链接题目大意:对于一个数组a[N],其元素分别为【0,1,2,…,N-1】(乱序)。将其按递增排列,求需要两两交换元素的次数。要求每次只能用数字0和其他元素做交换。#include <iostream>using namespace std;int main(){ int n, t, cnt = 0, a[100010]; cin >> n; for(int i = 0; i < n; i++) { cin &gt

2020-07-14 17:26:00 79

原创 PAT A1038 Recover the Smallest Number (30)

PTA跳转:原题链接题目大意:给定N组数字串,找出这些数字串中能组合出的最小数字。例如,给出【32, 321, 3214, 0229, 87】,可以得到很多类似【32-321-3214-0229-87】或【0229-32-87-321-3214】这样的数字串。其中,【0229-32-87-321-3214】是最小的,输出【22932132143287】即完成此题。(消去"-"和开头的0)想了很久如何排序,无解。看了柳神的代码,甘拜下风。#include <iostream>#includ

2020-07-13 20:25:33 670

原创 PAT A1037 Magic Coupon (25)

PTA跳转:原题链接题目大意:给出两个数组,分别给出1个元素进行相乘,每个元素只能使用1次。求相乘之和的最大值。解题思路:因为2个正数或2个负数相乘才能得到正数,先对两个数组进行递减排序,指针分别指向首元素,如果都为正数,相乘,指针同时后移,直到出现负数元素。同理,对两个数组进行递增排序,指针分别指向首元素,如果都为负数,相乘,指针同时后移,直到出现正数元素。对每个数组进行2次排序的好处是使用1个指针即可。也可以不进行递增排序,多设置一个指针,在递减排序扫描时出现负数元素的时候,分别将指针指向数组的最

2020-07-13 19:50:36 142

原创 PAT A1033 To Fill or Not to Fill (25)

PTA跳转:原题链接题目大意:给出油箱最大油量,目的地距离,每单位油行驶的路程和加油站数量。再给出某个加油站的单位油价和离起点的距离。输出达到目的地的最小消费。如果不能到达目的地,输出能到达的最远距离。解题思路:考查贪心算法。每一次行驶,考虑当前状态下加满油能到达的加油站,(1)如果找到比当前油价还低的加油站,把油加到恰好能到达那个加油站即可。(2)如果能到达的每个加油站都比当前加油站的油价高,去能到达的加油站中油价最低的加油站。(3)如果加满油也到达不了下一个加油站,把油用完,输出能行驶的最远距离。

2020-07-13 12:40:23 109

原创 PAT A1070 Mooncake (25)

PTA跳转:原题链接题目大意:给出月饼种类数量和市场需求量,然后给出每种月饼的数量和卖完这批月饼的总价。求最大利润。解题思路:因为没有月饼单价,需要先计算,再以单价递减排序。如果没有达到市场需求量,直接把目前单价最高的月饼卖完,否则卖出部分即可。#include <iostream>#include <algorithm>#include <iomanip>using namespace std;struct Cake{ double amount;

2020-07-13 11:59:05 125

原创 PAT A1085 Perfect Sequence (25)

原题链接:PTA跳转题目大意:输入数组长度N和参数p,并对数组a[N]元素逐个赋值。如果满足M≤m*p,则称这样的数列为完美数列。其中,M和m分别为这个数列的最大值和最小值。题目要求是从原数列中找出一个子数列能够满足完美数列的条件,输出这个子数列的长度。#include <iostream>#include <algorithm>using namespace std;int main() { int N; long long p; cin &

2020-07-11 17:49:47 116

原创 C++——大数计算(相加)

大数计算,即对两个限定长度的数字做运算。因为限定长度可以是10,20,也可以是100,200…就别想着用long long或者其他分配空间很大的数字类型来做了,老老实实用char数组吧。因为两个数字长度可能不一样,我编写了一个判断语句,如果第一个数字的长度小于第二个,则两个数做一下交换,并向右对齐较短的数字,前面用’0’补齐。如果两个数字长度相等,那就不用进行交换,补齐操作。有一个点卡了一段时间,后来发现给字符数组元素赋值时,“=‘0’”被我写成“=0”了,以后要注意一下。#include <i

2020-07-11 09:56:06 3287 1

原创 PAT A1023 Have Fun with Numbers (20)

PTA跳转:原题链接题目大意是:输入一个不超过20位的数字,输出该数*2后的数字,并判断该数字中每个数字的出现次数是否与原数字相同。做题总结:不要被这个“20位”误导从而思考能否使用像"long long int"这样的类型,老老实实用字符数组做题就好,因为题目可以随时改成"100位"的。解题思路已经写在可以通过运行的源代码中了。#include <iostream>#include <string.h> //需要得到字符串长度 using namespace std;

2020-07-10 16:50:12 92

原创 PAT A1149 Dangerous Goods Packaging (25)

PTA跳转:原题链接本题大意是:给出不能放在一起的物品的列表,判断箱子里的物品能否一起存放。(原题直译应该是集装箱,个人感觉箱子更好理解)输入:先输入整型N和M,接下来输入N对不能放在一起的物品。然后,输入M行数据(每行的第一个数字num表示该箱子里有num件物品,后面跟着num个数据)。输出:若箱子里的物品能放在一起,输出"Yes",否则输出"No"。本题考点是map映射,“map&lt...

2020-05-05 12:27:04 156

原创 PAT&ensp;A1129&ensp;Recommendation&ensp;System&ensp;(25)

PTA跳转:原题链接本题大意是设计一个推荐系统。举个实际例子,你在购物网站上浏览了多件商品,系统会给你推荐一些接下来你可能会点击的商品。输入:第一行输入点击数m和推荐数n,第二行输入m个商品编号。输出:输出除第一次点击之外每一次点击推荐的商品编号。(若浏览次数不同,则按浏览次数递减;若相同,则按商品编号递增)理解起来可能比较复杂,用样例举个例子。PTA上给出的样例输入:12 33 ...

2020-05-04 18:11:32 177

原创 PAT A1121 Damn Single (25)

PTA跳转:原题链接本题大意是:给出一些对象的id和到场者的id。在到场者中,有对象但对象没来,或者没对象的记为“单身”者。本题要求是寻找宴会上的“单身”者。输入:先输入一个数字n,接着输入n对对象的id。然后输入一个数字m,接着输入m个到场者的id。输出:先输出到场者中“单身”者的数量,然后按递增输出每个“单身”者的id。本题考点是set集合,利用set集合内部元素有序且不重复的特点,可...

2020-05-02 12:24:39 143

原创 PAT A1120 Friend Numbers (20)

PTA跳转:原题链接输入:先输入一个数n,接着输入n个数。输出:输出这几个数的每个数字之和,有相同的输出一次即可。本题考点是对set集合的简单应用,不难实现。由于set集合内部元素有序且不重复,直接将元素插入即可。第一次提交时,结果显示“格式错误”,是由于在输出的最后一个数的后面多了一个空格。这一点也容易修改,对set集合中第一个元素做特殊处理即可。代码如下:#include &lt...

2020-05-02 11:09:40 150

原创 PAT A1063 Set Similarity (25)

PTA跳转:原题链接题目大意是:比较两个集合的相似性。输入:先输入一个数字m,然后要输入m组数据。接着输入一个数字n,然后输入n对数字。输出:输出n个百分比数据。本题考点是set,因为set容器内部元素有序且不重复,不用担心输入数据时有重复的元素。我认为难点在于对题目,尤其是Nt的理解,原文“Nc is the number of distinct common numbers shar...

2020-05-01 17:49:43 110

原创 PAT A1047 Student List for Course (25)

PTA跳转:原题链接这道题大意是:输入学生数量和课程数量,输入每个学生选择的多种课程。对于每一个课程,先输出该课程的编号所选的学生数量,然后输出每个学生的姓名。这道题考点是vector(变长数组),难点是有一个测试点会运行超时。第一次把全部cin和cout都改成scanf和printf,在牛客网上显示的运行时间减少了20%左右,但在PTA中提交仍会运行超时。然后将vector容器从stri...

2020-04-19 22:44:54 118

原创 C++——最大公约数与最小公倍数

求解最大公约数和最小公倍数的算法不难实现,为避免忘记作此专栏。求解最大公约数的方法是辗转相除法(又叫欧几里得算法)。首先两数相除,得到一个余数。如果余数不为0,反复使用除数和余数做除法运算;当余数为0时,取当前算式除数为最大公约数。例如:49/14 = 3(余7)14/7 = 2(余0)此时余数为0,除数为7,则49和14的最大公约数为7。最小公倍数可以在求出最大公因数后得到。令...

2020-04-18 22:10:33 355

原创 C++——蛇形矩阵

这篇专栏记录的是如何打印蛇形矩阵,效果如下,用一个二维数组即可实现。输出结果: 1 2 6 7 15 16 28 29 45 46 66 67 91 3 5 8 14 17 27 30 44 47 65 68 90 92 4 9 13 18 26 31 43 48 64 69 89 93 114...

2020-04-17 22:05:53 4259

原创 PAT A1017 Queueing at Bank (25)

PTA跳转:原题链接这道题大意是:输入客户数量和窗口数量,然后输入每个客户的到达时间和服务时间。如果有空闲窗口,客户可直接办理业务;如果没有窗口,则需等待至其中一个窗口完成对前一个客户的服务才能进行业务办理。如果客户到达时间早于开始营业时间(8点),需等待至8点;如果到达时间晚于截止营业时间(17点),则不接受业务办理。最后输出客户的平均等待时间。我认为这道题难点在于:如何找到最快完成服务的窗...

2020-03-27 12:04:57 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除