自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(136)
  • 资源 (1)
  • 收藏
  • 关注

原创 GBDT原理

GBDT:GBDT的加法模型:yi^=∑k=1Kfk(xi),fk∈F \hat{y_i} = \sum^{K}_{k = 1}f_k(x_i), f_k \in{F}yi​^​=k=1∑K​fk​(xi​),fk​∈FGBDT可以看作是由K个基模型组成的一个加法运算式;GBDT采用CART回归树,在本次介绍中,采用平方损失函数作为损失函数值平方损失函数:L=∑i=1nl(yi,y^i)=12(yi−y^i)2L= \sum^{n}_{i = 1}l(y_i, \hat{y}_i) = \fra

2021-10-10 15:05:59 166

原创 Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记

Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记-----GCN在交通领域的应用(二)一、论文翻译:1、摘要: 及时准确地交通预测对于城市交通控制和指导具有至关重要的意义。由于交通流量的非线性和复杂性,传统的方法不能满足中长期预测任务的需求,并且往往会忽略时空数据的时间和空间依赖特性。在这篇论文中,为了处理在交通领域的时间序列预测问题...

2021-01-04 21:43:34 1481

原创 java的final,权限、内部类的用法(一)

一、final关键字代表最终、不可改变的。常见四种用法:可以用来修饰一个类可以用来修饰一个方法还可以用来修饰一个局部变量还可以用来修饰一个成员变量一旦使用final用来修饰局部变量,那么这个变量就不能进行更改。“一次赋值,终生不变”对于基本类型来说,不可变说的是变量当中的数据不可改变对于引用类型来说,不可变说的是变量当中的地址值不可改变例子:package cn.itcast.day11.demo01;public class Student { private St

2020-12-28 21:03:40 203

原创 java接口的使用(二)

在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接口的多实现。并且,一个类能继承一个父类,同时实现多个接口。注意事项:使用接口的时候,需要注意:接口是没有静态代码块或者构造方法的。一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。格式:public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB {// 覆盖重写所有抽象方法}如果实现类所实现的多个接口当中,存在重复的抽

2020-12-18 15:59:04 198

转载 Java接口的用法

相关定义接口就是多个类的公共规范接口是一种引用数据类型,最重要的内容就是其中的:抽象方法接口的定义格式:public interface 接口名称 { // 接口内容}备注:换成了关键字interface之后,编译生成的字节码文件仍然是:.java --> .class。如果是Java 7,那么接口中可以包含的内容有:常量抽象方法如果是Java 8,还可以额外包含有:3. 默认方法4. 静态方法如果是Java 9,还可以额外包含有:5. 私有方法接口使用步骤

2020-12-09 16:19:08 277

原创 java继承

java继承1. 在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有则向上找。间接通过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则向上找。(1)父类的定义package cn.itcast.day07.demo02;public class Fu { int numFu = 10; int num = 100; public void methodFu(){

2020-12-02 19:12:26 121

原创 matplotlib绘制直线

效果如下:import matplotlib# matplotlib.use('TkAgg')import matplotlib.pyplot as pltimport seaborn as sns%matplotlib inlinesns.set()x = range(0,200)y = range(20,220)plt.figure(figsize=(6.5, 5.4))tick = list(range(0,200))#设置坐标轴名称plt.xlabel('

2020-08-11 17:07:38 1448

原创 python的迭代器和生成器

迭代器我们把可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。判断一个对象是否是可迭代对象,利用isinstacnce()方法:在可迭代对象中记录每次迭代位置的是迭代器,可迭代对象通过__iter__方法提供一个迭代器,在迭代一个可迭代对象时,实际是获取该对象的迭代器,然后通过这个迭代器来获取可迭代对象中的每一个数据。即,一个具备了__iter__方法的对象,就是一个可迭代的对象。list、tuple等都是可迭代对象,我们可以通过iter()函数

2020-08-05 21:10:13 133

原创 科大讯飞提前批测试笔试

剪绳子:输入:6输出:9java代码:import java.util.Scanner;public class Main1111 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例 int n =

2020-07-31 18:57:16 1407

原创 赛码网python的输入输出模版

输入格式:3 1 11 2 3代码:a = []s = input()#####此处是输入for x in s.split(): a.append(int(x))cao = []s1 = input()for x in s1.split(): cao.append(int(x))n = a[0]m = a[1]x = a[2]#最高的高度,尝试用动态规划求解#当前最高的高度#对药水的个数进行循环for i in range(m): #

2020-07-31 11:59:40 3212

原创 从上到下打印二叉树系列(三道题)python+java

从上到下打印二叉树,可以看出是二叉树的广度优先搜索(bfs),bfs借助队列进行实现。java代码如下所示:class Solution { public int[] levelOrder(TreeNode root){ if(root == null) return new int[0]; Queue<TreeNode> queue = new LinkedList<TreeNode>(); ArrayList<.

2020-07-15 17:43:54 109

原创 剑指 Offer 66. 构建乘积数组(java)

思想:本题目的难点在于减少重复计算,建立上三角和下三角,可以避免重复计算的问题,时间复杂度为O(n)。代码如下:class Solution { public int[] constructArr(int[] a) { if(a.length == 0) return new int[0]; int[] b = new int[a.length]; int tmp = 1; //分别计算上三角和下三角矩阵.

2020-07-13 21:47:01 138

原创 剑指 Offer 60. n个骰子的点数(python+java)

思路:采用动态规求解,有以下理解:状态转移方程:把n个骰子分为第n个骰子和前n-1个骰子,求n个骰子的点数和S,等于第n个骰子的点数m+(S - m),s-m表示前n-1个骰子的点数和为s-m;因此求n个骰子的点数和的公式如下所示:n表示n个骰子,j表示n个骰子取得的点数和,i表示第n骰子的点数;初始化操作:一个骰子的时候点数为1到6,出现的和也为1到6;因此次数均为1;注意的点:n个骰子的和,其值最小为n, 最大为6*n+1,且是连续的,间隔为1;骰子的个数从1开始,因此dp[0].

2020-07-12 21:25:07 271

原创 剑指 Offer 59 - I. 滑动窗口的最大值

题目:理解:关键点:确认窗口的下标双端队列来简化每次查找窗口内最大值的时间复杂度(从O(k)变为O(1))实现窗口内O(1)的复杂度,通过建立一个单调递减的双端队列来实现在双端队列中,随着窗口的移动,队首元素出队来改变当前窗口内的最大值在双端队列中,随着窗口的移动,队尾元素出队来建立一个单调递减的队列代码:class Solution: def maxSlidingWindow(self, nums, k): queue = [] result = []

2020-07-12 17:35:54 131

原创 剑指 Offer 58 - I. 翻转单词顺序(简单)

思路一:双指针法实现思想是利用双指针来定位每个单词;即两个指针初始化时都指向字符串的末尾,然后移动首指针来定位最后一个单词的开始位置(即定位到空格即可);之后利用首尾指针即可取出当前的单词;然后移动首指针跨过空格,找到下一个单词的末尾,之后移动尾指针,使其等于首指针,两个指针都定位到下一个单词的末尾,之后移动首指针,找到这个单词的开始,然后依据首尾指针获取单词即可。’代码如下:class Solution: def reverseWords(self, s): s .

2020-07-09 21:51:40 203

原创 剑指 Offer 53 - II. 0~n-1中缺失的数字 python

明显数组有序,因此用二分查找,提高时间复杂度;判断当前数字是否等于下标,若等于,则继续代码如下:class Solution: def missingNumber(self, nums): low = 0 high = len(nums) - 1 n = len(nums) - 1 while low <= high: mid = (low + high) //2 if nums[mid] == mid: .

2020-07-09 20:18:18 195

原创 剑指offer 连续子数组的最大和

分析题意可以得出本题可以用动态规划求解,即求出数组中以每个元素结尾的最大和,然后最后去找最大的即可。注意:是否加上之前的结果,如果之前结果大于0,则可以加上,如果不大于0,则无需加上状态:以当前元素结尾的最大和,用dp[i]表示;状态转移方程:dp[i] = max(dp[i - 1], 0) + nums[i]代码如下:class Solution: def maxSubArray(self, nums): dp = [0] * len(nums) dp[0

2020-07-08 21:05:33 102

原创 python的对象引用、深拷贝、浅拷贝的区别

1、对于python对象的引用,即把一个对象直接赋值给另外一个对象;代码如下:b对象和a对象完全一样;创建一个新的变量,传递a的引用,内存地址,b和a完全一样,这就是引用传递的含义吧。即两个变量指向一个内存地址,参考大佬的图解如下:2、浅拷贝b变量会对a对象中的地址复制一份,但是不会拷贝内部的元素;可以看出c变量的地址和a的不同,但是内部元素存储的地址完全相同,对于浅拷贝来说,只会保存原有对象的内存地址,但是不会保存内部的元素;(即如果原有对象内部元素的内存地址改变,在浅拷贝后的变量中是看不出

2020-07-02 12:34:50 332

原创 leetcode 322 零钱兑换(动态规划,完全背包,打表法)

题目:我们利用 打表法来找出转移方程:方阵中每一个格子的值计算过程如下所示:行表示硬币的面值,列表示金额amnout的数量;我们对首先对每个格子的初始化值都为amnout + 1;每一行表示目前只能取到0到i个硬币,后面面值的硬币先不考虑;对于dp[i][j](即每个格的值所代表的含义:表示在凑出当前金额j所需要0到i个硬币的最小数量;很容易理解,我们的第一列值都应该为0;凑出金额...

2020-05-01 18:32:11 291

原创 leetcode 面试题56 - I. 数组中数字出现的次数(中等,位运算,python)

题目总结:首先考虑一个简单的问题:如果除了一个数字以外,其他数字都出现了两次,那么如何找到出现一次的数字?两个相同的数异或结果是0,任何一个数和0异或结果是它本身。因此,对于这个问题,我们只需要多所有的数组进行异或,最后的结果就是那个出现了一次的数字。在这个问题基础上,我们来解决本题,本题中有两个数字出现了一次,因此,如果按照第一题的思路对所有的数字进行异或,则最后的结果是两个不同的数...

2020-04-28 22:00:19 185

原创 leetcode 面试题14- II. 剪绳子 II(动态规划,中等,python)

题目:题解:分析题意:n > 1,m > 1;经过简单分析可以得出,当绳子的长度n为2时,2可以剪成1和1的两段,所以最大乘积为1;n为3时,3可以剪成1和2的两段,所以最大乘积为2;因此,在进行动态规划过程中,当绳子的总长度大于3时候,遇到长度为2和3的绳子就不再进行剪断;(2>1,3>2),以得到最大的乘积;状态转移方程:dp[i]表示绳子长度为i时,所能...

2020-04-27 11:50:56 266

原创 Linux 下 zip 文件解压乱码解决方案

由于zip格式中并没有指定编码格式,Windows下生成的 zip 文件中的编码是 GBK/GB2312 等,因此,导致这些 zip 文件在 Linux 下解压时出现乱码问题,因为Linux下的默认编码是 UTF8。ubuntu下安装p7zip convmv安装7zip:sudo apt-get install p7zip-full安装sudo apt-get install conv...

2020-04-14 16:15:12 419

原创 leetcode 739. 每日温度(单调栈)(中等,python)

题目:题目理解:对于气温列表中的每个元素,寻找大于当前元素的一个元素,计算两个元素之间的下标差,作为新的列表中当前元素的值。解题思路:本题我们利用单调递减栈进行求解:遍历气温列表,如果当前元素小于栈内的元素,就进行入栈当前元素对应的下标;否则,计算栈顶元素和当前元素对应的下标之间的差,保存在新的列表中。代码如下:class Solution: def dailyTemper...

2020-04-14 14:13:02 170

原创 leetcode题解84.柱状图中最大的矩形(困难)单调栈思想

题目:找出最大的矩形面积,首先要有一个较好的遍历方法。本题找最大面积的遍历方法可以依据依据以下策略:找出以每个矩形为高的最大矩形面积。因此我们需要遍历每一个矩形高度,找出以当前矩形高度作为高的最大矩形面积。最后遍历所有的矩形高度,最大的面积即为所求。依据上述思路,为了找到以当前柱子高度作为矩形高度的最大面积,我们需要寻找矩形的左右更边界来确定矩形的宽度,因此我们可以作出以下分...

2020-04-13 22:59:14 134

原创 leetcode 三月每日一题 695. 岛屿的最大面积(深度优先搜索中等python)

题目:题目思想:本题是求所有水平和垂直方向相连接的数字1的数量,我们利用深度优先搜索进行求解;我们需要遍历每个格子来进行查找岛屿的最大面积;并且,每个格子可以向四个方向进行遍历;并且为了避免重复访问的情况,我们设置访问过格子的数值为2;同时因为要求所有相连接1的数量,所以我们每次进行递归深度返回的时候需要对访问过的格子数量进行+1;代码如下所示:class Solution: ...

2020-04-09 12:16:11 285

原创 leetcode 三月每日一题:820. 单词的压缩编码

题目:本题思想:在本题中,关键在于小的单词是否是大的单词的后缀子集,对不是后缀的单词长度加一(#号),然后对所有符合条件的单词进行求和;暴力法思路:枚举每个单词的所有后缀,然后看是否存在于原单词列表中,如果存在,在原单词列表中进行删除。解法一(暴力法):(参考官方题解)代码如下:class Solution: def minimumLengthEncoding(self,...

2020-04-08 22:48:44 192

原创 leetcode 三月每日一题 365.水壶问题(中等)

题目:思想:根据题意,每次可以进入如下的操作,分别是:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空上述三种操作分别对两个水壶进行,则一共有六种操作,如下所示:装满水壶X装满水壶Y清空水壶X清空水壶Y把X的水倒入Y中,其中包含两种情况:(1). X的水倒入Y中还有剩余,(2). X的水倒入Y中没有剩余;把Y的水倒入X中,其中也包含两种...

2020-04-06 23:00:22 257

原创 leetcode 三月每日一题:409. 最长回文串(简单)

题目:思路:经过分析可以得到,在回文串中,如果是偶数长度的回文串,则每个字符出现的次数都是偶数,如果是奇数字符串,则除了中心字符出现次数是奇数,其他字符出现次数都是偶数。依据上述思路,有下述伪代码:1.首先利用字典计数每个字符出现的次数;2.然后遍历字典的value,如果是偶数次数,就算入回文串的长度temp,如果是奇数次数(odd),对temp 执行:temp+=(odd//2)*2...

2020-04-06 15:50:47 131

原创 leetcode三月每日一题(1160)拼写单词

题目:思路:原理:对于词汇表中的每个单词,只要单词中每个字符出现的次数只要小于等于字母表中每个字符出现的次数,那么单词就可以用字母表表示。因此,利用以下思路解决:建立两个字典进行存储,一个字典存储词汇表中的每个单词中每个字符出现的次数,一个字典存储字母表中每个字符出现的次数。代码如下:class Solution: def countCharacters(self, word...

2020-04-06 15:04:26 114

原创 leetcode 200.岛屿数量(中等,深度优先搜索+回溯)

岛屿数量:这一题与单词搜索一题思路相同;用深度优先搜索来解决本题;对于此类问题,需要两步,第一步需要需要遍历网格的每个位置,设置一个访问数组,防止元素被重复访问;第二步是对于每个访问到的位置,需要向四个方向进行寻找,因此向四个方向进行搜索;递归终止条件:如果访问到字符’0’,就行返回,(回溯)。代码如下:class Solution: def numIslands(se...

2020-03-27 19:30:36 212

原创 leetcode 32.最长有效括号(hard,动态规划)

本题用动态规划求解,通过积累计算过的有效括号的数量来找以当前字符结尾有效括号的数量。状态转移方程:动态规划是以时间换空间的做法,对于计算过的结果保存下来,不再计算;在本次中dp数组设置为以当前字符结尾的有效字符串的数量;这一题与最长递增子序列那一题dp数组表示的含义大致相同(异曲同工之妙);分析:如果当前字符s[i]为’(’,则很明显以该字符结尾的有效括号的数量为0;如果当前字符s...

2020-03-26 23:32:16 137

原创 leetcode 买卖股票的最佳时机(一,二简单,动态规划)

买卖股票的最佳时机(一):本题是获取最大利润;利用动态规划求解,自底向上,找出从以前到今天可以获取的最大利润;因此最后一天的就是最大利润;状态每天有三种选择,买入,卖出,什么也不做;每天的状态有两种,今天有股票,今天没有股票;因此状态是一个二维数组:第一维的状态表示第几天,第二维表示今天是否有股票状态转移方程:dp[i][0]dp[i][0]dp[i][0]=max(dp[i−1]...

2020-03-25 15:55:55 209

原创 简单eda+baseline二手车预测(改自天池baseline)

首先把训练集读进来简单看看各列的情况,主要看一下预测目标price的情况,发现均值在5900左右,标准差在7500左右,然而最大值居然有99999,可以看出事情不简单,回归题最怕存在离群点…import pandas as pdimport numpy as npimport warningswarnings.filterwarnings('ignore')pd.set_option('...

2020-03-24 21:56:29 749

原创 leetcode 5.最长回文子串(中等,动态规划)

中心扩展法:以例子"bababb"来介绍;找到回文串的中心,有两种情况,第一种是bab这种情况,第二种是bb这种情况;因此找的bab这种情况的中心有n个(中心为a),bb这种情况的中心个数为n - 1(中心为b与b之间的间隙), 因此中心数目一共是2n - 1;代码逻辑:遍历每一个中心点,查找回文子串;对于两种中心点,依次以中心点开始向两边扩展,判断中心点周围的值是否相等,如果相等,...

2020-03-24 14:38:38 122

原创 堆排序及代码实现

堆排序堆的先验知识:堆的实现通常是通过构造二叉堆实现。当不加限定时,堆通常指的就是二叉堆。二叉堆一般分为两种:最大堆和最小堆。最大堆: 最大堆中的最大元素在根结点(堆顶);堆中每个父节点的元素值都大于等于其子结点;最小堆: 最小堆中的最小元素出现在根结点(堆顶);堆中每个父节点的元素值都小于等于其子结点。二叉堆是一种完全二叉树,对于完全二叉树来说,只有树????的最后一层的节点不是满的,其他...

2020-03-22 21:57:57 504

原创 leetcode 面试题59 - II. 队列的最大值 (python)

题解:知识点:双端队列:在队列的两端都可以入队/出队的一种数据结构。在python中封装的包(deque):添加元素​ deque支持从任意一端添加元素。extend() 一次性从右端添加多个元素append() 从右端添加一个元素extendleft() 从左端添加多个元素,注意是逆序输入appendleft() 从左端添加一个元素获取元素pop() ...

2020-03-16 23:23:48 174

原创 leetcode 面试题 01.06. 字符串压缩(python)(简单)

题目:题解:设置一个额外的字符串变量temp1,来存储压缩后的字符串;设置一个来存储压缩后的字符串变量temp1,一个计算当前字母出现次数的变量count(初始值为0);对于原始的字符串S,如果S[i] == S[i-count](即当前字符和需要计数的字符相等),因此count加1;如果不等,则在temp1中加入前一个需要计数的字符出现的次数,并且加上当前字符,count置1;最后...

2020-03-16 14:43:26 295

原创 leetcode 58. 最后一个单词的长度 (python)

题解:本题用逆向遍历进行求解:看到本题想到两种情况;最后一个是单词最后一个是空格对于第一种情况,直接计算最后一个单词长度,然后返回即可;但是这种情况也分为两种小情况,最后一个单词前面还有单词,因此判断最后一个单词是否结束的条件是当前指针指向的元素是空格;最后一个单词前面没有单词,因此结束条件是当前指针指向的位置为-1;对于第二种情况,需要先滤除空格,然后进行计算;但是...

2020-03-14 22:41:34 264

原创 leetcode 面试题57 - II. 和为s的连续正数序列(python)

题解:此题可以用滑动窗口算法求解:滑动窗口算法首先设置两个指针,分别是left和right,left指针和rifght指针用来限制滑动窗口的范围(即排列的范围);在滑动窗口中,right指针和left指针都是向右边移动;在滑动窗口中可以找到所有的排列。本题是求连续的正整数序列,因此可以想到排列中的数字是1到target - 1范围;又由于对于目标target来说,组合它的序列不可能是...

2020-03-14 14:54:04 144

原创 leetcode 543. 二叉树的直径(python)

题解:本题用深度优先搜索我们通过画图来找寻本题的思路;容易分析得,本题需要两个dfs,一个是遍历左结点的子树,一个遍历右结点的子树;如图所示,首先遍历左边的结点一直到根;def dfs(node): if not node: return 0 dfs(node.left)此时需要进行回溯,回溯到结点2;但是路径长度需要+1;因此代码更改如下所示:def dfs(nod...

2020-03-10 17:38:01 244

C++双向链表删除,修改,插入,排序

C++双向链表删除,修改,插入,排序,全面,界面人性化

2018-04-29

空空如也

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

TA关注的人

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