- 博客(52)
- 收藏
- 关注
原创 c++ Algorithm
1、sortsort(iter1,iter2,comp);//第三个元素是用于排序的函数,返回值必须是bool类型的值,函数的参数必须和需要排序的容器的里面的基本数据类型一样(默认为基本数据类型自带的 < )2、reverse//将某一个容器倒序排列,和sort用法相同reverse(iter1,iter2);3、swap(T&a, T&b)#include <iostream>#include <algorithm>#include &l
2020-08-20 17:19:13
322
原创 C++ std
1、string可以用+直接连接string c;char a[20];c.size();strcpy(a[20],c.c_str());c.substr(1,3)//从下标1开始长度为32、mapmap是建立一种映射map<string , int >mapstring; map<int ,string >mapint;map<sring, char>mapstring; map< char ,string
2020-08-20 16:56:35
259
原创 CCF-CSP 2014-3前三道题
1、相反数问题描述 有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。输入格式 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。输出格式 只输出一个整数,即这 N 个数中包含多少对相反数。解:#include <stdio.h>int a[501];int isIn(int m,int len);int ma
2020-08-19 21:18:03
442
原创 CCF-CSP 2013-12前三道题
1、出现次数最多的数问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。 解:用struct构造字典用来计元素的重复个数。#include &
2020-08-18 15:17:54
254
原创 C语言enum、struct与数据结构
1、枚举enum COLOR {RED,YELLOW,GREEN};//red,yellow,green分别与0,1,2对应,即red的值为0//可以把enum理解成一种类型,其变量就是int//使用enum color t=red;//此时t为0//可以自动计数enum COLOR {RED,YELLOW,GREEN,NumCOLORS};//NumCOLORS的值就是颜色的数量#include <stdio.h>enum DAY{ MON=1, TUE, WED, T
2020-08-18 11:23:09
1047
原创 python数据处理(四)urllib
1、request解析网页#用get方式获取网址import urllib.requestresponse=urllib.request.urlopen("http://www.baidu.com",timeout=1)#有些网站会直接发现是爬虫,不会让访问,一直在加载,所以要加上时间限制print(response.read().decode('utf-8'))#读取内容,直接复制到.html文件里就是baidu的网页#也就是说获取到的是网页源码#获取post请求import urllib
2020-08-17 20:50:29
170
原创 C语言基础题6道
题目见链接北航机试题1、比较奇偶数个数题目描述第一行输入一个数,为n,第二行输入n个数,这n个数中,如果偶数比奇数多,输出NO,否则输出YES。输入描述:输入有多组数据。每组输入n,然后输入n个整数(1<=n<=1000)。输出描述:如果偶数比奇数多,输出NO,否则输出YES。#include <stdio.h>int main(){ int n,i,count1,even_num; scanf("%d\n",&n); int *l
2020-08-17 16:11:21
240
原创 C语言知识细节:浮点数和字符串
1、浮点数float与double都只能接近零,但无法表示0,有+inf,-inf表示无穷大和无穷小float有效数字是7位,scanf读取用%f,printf打印可以用%f或%edouble有效数字是15位,scanf读取用%lf,printf用%f,%e计算机表达的只是离散的数,要是赋值给一个没有的数它只能近似的赋给一个离它最近的数。...
2020-08-17 10:31:38
2382
原创 leetcode题解C语言版:1-5
1、两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。/** * Note: The returned array must be malloced, assume caller calls free(). */int* twoSum(int* nums, int numsSize, int target, int* returnSize){
2020-08-16 19:57:32
445
原创 C语言指针与数组的关系
数组是特殊的指针,及数组为type * const p类型,这也就解释了数组无法进行赋值即a=b是不合法的,因为数组的地址是不能改变的。反过来对于一个普通的指针int * p,p[0]是合法的,值为*p。借由以下两点可以加深对数组的理解和印象。1、在函数里 void f(int *a)void f(int a[])void f(int [])woid f(int )是等价的2、(a+n)=a[n],两者完全等价,在函数里给a[n]赋值也会改变函数外a[n]的值,因为函数传过来的是数组的地址,通过
2020-08-16 19:46:46
246
原创 python数据处理(三)python爬虫基础
一、爬虫简介1、网页结构了解一般由html代码编写,然后由浏览器读取显示。起始标签不会被显示在网页上,由浏览器读取结束body结尾python读取html源码from urllib.request import urlopen#复制网页链接html=urlopen("https://www.bilibili.com/video/BV1MW411B7rv?p=2").read().decode('utf-8')#中文网页要用decodeprint(html)选取html中的某
2020-08-15 18:32:35
367
原创 python正则表达式
是文本处理的强大武器,在网页爬虫中有大量的应用。1、简单的匹配#matching stringimport repattern1='cat'pattern2='bird'string="dog runs to cat"print(pattern1 in string)print(pattern2 in string)用正则表达式匹配#regular expressionimport repattern1="cat"pattern2="bird"string="dog runs
2020-08-14 11:58:17
173
原创 leetcode题解python版:101-105
101、对称二叉树给定一个二叉树,检查它是否是镜像对称的。解法一:按照进阶的提示用递归的办法来解决问题。一个树是否对称:如果只有root,或没有root,则肯定对称。如果有左右子树,则两者要对称,这意味着左子树的左子树与右子树的右子树对称,左子树的右子树与右子树的左子树相对应,这样就可以进行递归了# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val
2020-08-14 09:44:08
268
原创 python数据处理(三)matplotlib的使用
一、基本用法1、matplotlib的基本用法import matplotlib.pyplot as pltimport numpy as np#输出y=2x-1直线x=np.linspace(-1,1,50)#50个点y=2*x+1plt.plot(x,y)plt.show()2、figure图像import matplotlib.pyplot as pltimport numpy as np#画y=2x-1直线和y=x**2两个图x=np.linspace(-3,3,50)#
2020-08-13 16:51:13
541
原创 leetcode题解python版:96-100
96、不同的二叉搜索树给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?解:按照第95题的思路就可以,只不过要把集合换成计数,为了加快速度要储存中间结果class Solution: def numTrees(self, n: int) -> int: if n==0: return 0 def countTree(k,ans): if k==1: ans.a
2020-08-13 11:31:21
153
原创 sql基本操作实例(三)
一、练习题目(20道)26、 查询存在有85分以上成绩的课程Cno.select distinct Cno from Score where degree>8527、查询出“计算机系“教师所教课程的成绩表。select * from score where score.cno in ( select cno from course where course.tno in(select tno from teacher where Depart='计算机系'));28、查询“计算机系
2020-08-12 19:14:20
1098
原创 leetcode题解python版:91-95
91、解码方法一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数解:这道题用递归显然是没有问题的。这里要注意的是0,单独一个0显然无法解码,0只能变为10,20来解码,否则s是无法解码的。class Solution: def numDecodings(self, s: str) -> int: n=len(s) if
2020-08-12 11:14:17
266
原创 sql基本操作实例(二)
一、练习题目(25道)1、 查询Student表中的所有记录的Sname、Ssex和Class列。select sname,ssex,class from student;2、 查询教师所有的单位即不重复的Depart列。select distinct depart from Teacher;3、查询Student表的所有记录。select * from student;4、查询Score表中成绩在60到80之间的所有记录。select * from score where degre
2020-08-11 21:07:10
889
原创 python数据处理(二)pandas的使用
1、pandas基本介绍import pandas as pdimport numpy as nps=pd.Series([1,2,6,np.nan,44,1])#创建pd序列,np.nan代表空值。打印时会自动加序号和元素dtypedates=pd.date_range('20160101',periods=6)#从1号到6号的日期序列,也返回dtypedf=pd.DataFrame(np.random.randn(6,4),index=date,columns=['a','b','c','d
2020-08-11 12:56:51
354
原创 leetcode题解python版:86-90
86、分隔链表给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。解:笨方法是遍历两次,一次记录小于x的,一次记录其它的。好点的方法就是多准备几个变量同时记录大于等于x的和小于x的,最后再给他们连接起来。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val
2020-08-11 10:31:11
231
原创 python数据处理(一)numpy的使用
1、numpy的基本属性numpy是基于矩阵的计算import numpy as nparray=np.array(alist)#把列表转化为矩阵array.ndim#维数,返回len(alist)array.shape #行数和列数,返回(m,n),其中m=len(alist),n=len(alist[0])array.size#返回m*n2、创建数组import numpy as npa=np.arrry([2,3,4],dtype=np.int)#定义数据类型默认为64位,也可以n
2020-08-10 16:28:43
345
原创 leetcode题解python版:81-85
81、搜索旋转排序数组 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。解:这道题与33题相似,但33题中不存在重复元素,而本题中存在重复元素.这里我们有一种简便方法,即不去找最大的元素,而是直接找target。class Solution: def search(self, nums: List
2020-08-10 12:53:33
207
原创 sql基本操作实例(一)创建数据库和表,并填入数据
1.创建数据库create database pratice2.创建表use pratice;create table Student(Sno char(3) not null primary key,Sname char(8) not null,Ssex char(2) not null,Sbirthday datetime,Class char(5));create table Teacher(Tno char(3) not null primary key,Tname char(4
2020-08-09 20:06:18
16130
原创 leetcode题解python版:76-80
76、最小覆盖子串(Hard)给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串。解:用滑动窗口法,i代表左界,j代表右界。先增加j直到[i,j]中包含t中所有元素,再让i缩小,去除不在T中的元素,此时i只想T中的某个元素ss,向右移动j找到ss,再向右移动i,找到新的在T中的元素,记录长度,一直循环,直到j到达右端。class Solution: def minWindow(self, s: str,
2020-08-09 10:42:11
258
原创 leetcode题解python版:71-75
71、简化路径以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串
2020-08-08 11:41:22
320
原创 leetcode题解python版:66-70
66、加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。解:先对n-1项+1,然后从右向左遍历,同时记录进位值。遍历完如果还剩1就插到最前面。class Solution: def plusOne(self, digits: List[int]) -> List[int]: n=len(digits) jump=0
2020-08-07 10:25:40
208
原创 leetcode题解python版:61-65
61、旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。解:先求出链表的长度,让k<n,然后把链表变成一个圈,最后在n-k的地方截断。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def rotat
2020-08-06 11:07:49
150
原创 leetcode题解python版:56-60
56、合并区间给出一个区间的集合,请合并所有重叠的区间解:先排序,然后从左到右遍历,依次加入栈,再比较一下前后两个区间是否交叉即可class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: n=len(intervals) if not intervals or n==1: return intervals i=1
2020-08-05 10:17:48
279
原创 leetcode题解python版:51-55
51、N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。提示:皇后,是国际象棋中的棋子,意味着国王的妻子。皇后只做一件事,那就是“吃子”。当她遇见可以吃的棋子时,就迅速冲上去吃掉棋子。当然,她横、竖、斜都可走一到N-1步,可进可退。解:本题用深度优先算法,一行一行推进。可以设立三个列
2020-08-04 12:43:58
207
原创 leetcode题解python版:46-50
46、全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。解法一:用递归的方法,考虑n-1的情况,最后再加上nums[i]。停止条件为nums空或len(nums)<2。class Solution: def permute(self, nums: List[int]) -> List[List[int]]: n=len(nums) if not nums or n<2: return [nums]
2020-08-03 12:13:19
210
原创 leetcode题解python版:41-45
41、 缺失的第一个正数给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。解:先排序,然后从第一个大于零的数nums[i]开始往前走,如果它大于1,就返回一,否则不断+1,如果后面的数是前面的+1或+0,继续,否则输出前面的数+1即可。class Solution: def firstMissingPositive(self, nums: List[int]) -> int: if not nums: return 1
2020-08-02 12:16:17
241
原创 leetcode题解python版:36-40
36、有效的数独判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。解:遍历即可class Solution: def isValidSudoku(self, board: List[List[str]]) -> bool: column=[[] for i in range(9)]
2020-08-01 12:52:06
206
原创 leetcode题解python版:31-35
31、下一个排列实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1解:位置变动越靠后,变化前后两者的排列越接近,所以从n-2开始遍历,看后面有没有比它大的,有就找一个刚好比它大的交换位置,然后把后面改成顺序排列,这样就
2020-07-31 13:10:59
409
原创 leetcode题解python版:26-30
26、删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着
2020-07-30 15:01:36
249
原创 leetcode题解python版:21-25
21、合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。解:链表的基本应用# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def mergeTwoLi
2020-07-29 16:07:43
184
原创 leetcode题解python版:16-20
16、最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。解:思路和15题相同,都是在固定i时,j=i+1,k=n-1通过让j右移,让k左移来进行缩小范围。class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: n=len
2020-07-28 11:13:31
184
原创 leetcode题解python版:11-15
11、盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。解法一:最简单的思路是遍历法,但是会超时。解法二:用动态规划法对k=1,2,…n-1逐步递归计算j=i+k直线上的dp[i][j]。class Solution: def maxA
2020-07-27 11:59:28
307
原创 leetcode题解python版:6-10
6、Z字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:解答:本题只要找到相应的数学规律就十分容易,算法的时间复杂度和空间复杂度都能维持在O(n)。cl
2020-07-26 12:05:10
362
原创 leetcode题解python版:1-5
1、给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法一:暴力求解,利用两次遍历求结果,复杂度是O(n*2)结果是运行时间为3056 ms,内存消耗为13.4 MB,都十分可观,可
2020-07-25 16:31:26
367
原创 数据结构python版(八)图及算法
1、图的基本概念和相关术语顶点Vertex:顶点具有名称标识key,也可以携带数据项payload边edge:作为两个顶点之间的关系表示,边连接两个顶点,边可以是无向或者有向的,相应的图称为无向图和有向图权重weight:为了表达一个顶点到另一个顶点的代价,可以给边赋权。例如公交网络中两个站点的距离,时间和票价。一个图可以定义为顶点和边的集合,G=(V,E),V是顶点的集合,E是边的集合,E中的每条边e=(v,w),v,w都是V中的顶点。路径Path:图中的路径是由边依次连接起来的顶点序列,无权路
2020-07-24 12:54:56
745
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人