自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 575、分糖果

解题思路从题意可知,一人最多分一半的糖果,这样即使有大于一半的种类,也只能得到一半的种类。如果达不到一半的种类,则每个种类要获取一个,这样才能满足最大种类。用set得到总的种类,然后与能得到的最大种类(一半)比较,如果大于,则最多获取一半的种类,否则获取总的种类。代码class Solution: def distributeCandies(self, candyType: List[int]) -> int: maxtype = len(candyType)

2021-11-01 09:32:44 4486 1

原创 260、只出现一次的数字II

1、位与异或根据相同数异或为零以及零与任何数异或仍是其本身的性质,可以得到两个只出现一次数字的异或值,且两个数的二进制位中必然有一位是不相同的,因为其不能为0。将列表中的值遍历与其中低位第一个为1的数进行与运算,可以将其分为两组。将两组分别进行异或,最后得到两个只出现一次的数字。低位第一个为1的位数可以通过其与其反值进行与运算得到。代码class Solution: def singleNumber(self, nums: List[int]) -> List[int]

2021-10-31 14:10:44 3571

原创 496、下一个更大元素

解题思路既然要找元素后面更大的元素,如果从nums1遍历找,我们不知道nums1中元素在nums2中的位置,所以直接从nums2遍历查找,另外需要一个临时列表存放未找到更大值的元素以及一个字典存放元素及其对应最大值。如果当前列表中值小于遍历值,将其与遍历值存入字典,然后移除,不断循环。否则将遍历值存入列表,进行下一次比较。最后遍历nums1,通过字典找到其对应的最大值。代码class Solution: def nextGreaterElement(self, nums1: Lis

2021-10-26 12:02:57 2789

原创 240、搜索二维矩阵II

1.暴力破解这种就是一个个比较矩阵中的值与目标值,相等返回True;否则返回False。代码class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: for row in matrix: for v in row: if v == target: retur

2021-10-26 10:52:25 118

原创 492、构造矩形

1、遍历判断遍历1到area,判断整除后的数是否大于当前数,如果是,判断两者之差是否为最小;如果不大于当前数,返回结果。代码class Solution: def constructRectangle(self, area: int) -> List[int]: diff = area minlength, minwide = 0,0 for wide in range(1, area+1, 1): leng

2021-10-23 09:15:37 89

原创 229、求众数II

1、使用字典遍历列表,将每个不同的元素存入字典,如果已经在字典中,则加1;最后判断哪个元素的次数大于n/3。代码class Solution: def majorityElement(self, nums: List[int]) -> List[int]: total_dict = {} length = len(nums) for i in range(length): if nums[i] in to..

2021-10-23 08:18:11 85

原创 136、只出现一次的数字

1、遍历筛选遍历列表,如果没有在临时列表中,添加到临时列表中;如果出现在临时列表中,移除临时列表中相应的值,此步骤耗时多。最后临时列表剩下的就是只出现一次的数字。代码class Solution: def singleNumber(self, nums: List[int]) -> int: total = [] for i in range(len(nums)): if nums[i] in total:

2021-10-21 14:09:33 62

原创 121、买卖股票的最佳时机

解题思路此题如果换种说法,应该是找出列表中递增子序列中最大值与最小值之间差的最大值。那就从列表0出发,不断与0位置的数进行比较,如果大于的话,就不断比较利润值;直到找到下一个比0位置小的数,开始计算这个递增子序列的利润值,比较利润值,直到列表最后一个元素。如果感到难理解,可以这么想,如果后面还有更大的值,那么如果有一个元素比当前元素小,那么这个元素与那个更大值的差,比当前元素与那个更大值的差,更大。代码class Solution: def maxProfit(self, pric

2021-10-21 12:14:32 53

原创 58、最后一个单词的长度

1、使用内置函数直接使用python内置函数,首先用strip去除首尾空格,然后进行分割,得到全是字符串的列表,最后一个列表元素的长度就是最后一个的单词的长度。class Solution: def lengthOfLastWord(self, s: str) -> int: new_s = s.strip().split(" ") return len(new_s[-1])2、使用倒序遍历计算使用倒序遍历计算,从字符串末尾开始遍历,为空格时,

2021-10-21 10:52:01 92

原创 125、验证回文串

1、 解题思路1.首先将字母转换为统一格式2.遍历字符串,如果是字母或数字,加入列表3.将添加完的列表进行反转,然后与原列表比较,得出结果官方的这个思路和我的一样,直接用字符串,比我的简洁。class Solution: def isPalindrome(self, s: str) -> bool: letters = [] s = s.lower() for i in s: if i.isalpha()

2021-10-21 10:21:03 61

原创 66、加一

解题思路加1是在最后一位加1,如果最后一位为9,就会向前进位;如果前面一位还是9,继续向前进位;如果不为9,就会停止。所以从列表最后一位开始向前判断,如果加上1小于10,循环停止,即为最后结果;极端情况是全为9,此时会不断进位,在循环结束时,在列表索引0处插入1即可。代码class Solution: def plusOne(self, digits: List[int]) -> List[int]: flag = 1 for i in range

2021-10-21 08:44:56 76

原创 453. 最小操作次数使数组元素相等

1、逆向思考n-1个数加1相当于1个数减1,操作一定次数后,n个数相等,即所有数减1直到所有数都为最小值,所以可以得出公式为n个数的和,减去最小值乘以n。操作次数m = n个数的和 - 最小值min_val * 数组长度n。2、数学计算假设操作了m次,则增加了m * (n-1);假设经过m次操作后,相同的数为x,则操作后的总和为n * x;假设操作前的总和为sum;即可以得出:n * x=m * (n-1)+sum;a经过m次操作,最小值变成x,一共增加了m,假设最小值为m...

2021-10-20 11:12:25 290

原创 231. 2的幂

1.解题思路第一种最棒的方法,是运用位运算。我自己使用的是n右移一位后与n-1做与运算,不变得返回true;官方的两种是n与n-1做与运算,结果为0的返回true;n与补码做与运算,结果与n相同的返回true。class Solution: def isPowerOfTwo(self, n: int) -> bool: return n > 0 and (n&(n-1))==02.解题思路第二种使用循...

2021-10-19 11:35:36 72

原创 Sklearn的Tf-Idf的向量计算

对于TF-IDF的计算,我们都知道是TF与IDF的乘积,但sklearn中计算的结果和我们手动计算的不太一样,究竟是什么原因呢?TF计算为词在文档中出现的频数。IDF为总文档除以词出现在文档中的文档数,再求对数,再加1。即其中,n为总文档数,df(t, d)为出现词t的文档数d。为了防止df(t, f)为0,一般我们会将n和df(t, d)加1,进行平滑。即使用 TF * IDF即得到结果。但是,sklearn中的计算结果却与我们计算得到的不同。from sklearn.f

2020-09-10 09:39:54 605

原创 关于Dict2Anki插件不能导入欧路词典的问题

1.按照下面网址的介绍更改欧路词典处理文件看这里2.新建一个模板新建一个模板,名称为“Dict2Anki-v6.1.3”,后面的版本换成自己的版本。如图所示:3.添加字段包含字段包含如下:['term', 'definition', 'sentenceFront', 'sentenceBack', 'phraseFront', 'phraseBack', 'image', 'BrEPhonetic', 'AmEPhonetic', 'BrEPron', 'AmEPron']其

2020-09-08 17:47:29 2558

原创 使用tar解压gz文件出现 “not in gzip format”错误解决办法

我在解压.gz文件时使用的下面命令:tar -zxvf *.tar.gz然后出现下面的提示:gzip: stdin: not in gzip formattar: Child returned status 1tar: Error is not recoverable: exiting now解决办法:tar -xvf *.tar.gz

2020-09-07 15:12:58 7328

原创 机器学习算法之感知机

1、基本定义1.基本介绍感知机是由两层神经元组成的,输入层接收外界输入信号号传递给输出层,输出层是M-P神经元,也称为"阈值逻辑单元"。其中x1、x2为输入神经元,y是输出神经元。w1,w2分别为x1,x2的权重,权重代表着该神经元的重要性。b为偏置,表示输出神经元激活的容易程度。感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机对应于特征空间中将实例划分为正负两类的分离超平面,属于判别模型。2.定义假设输入空间(特征空间)是,输出空

2020-07-17 15:17:29 769

原创 机器学习之模型评估与选择(一)

1、模型评估现实中,可供选择的算法有很多,参数不同,每个算法也有不同的形式,我们应该如何选择最优的那个?如果按照泛化误差最小来选择是最好,但我们又不能得到未知的数据,不能直接计算泛化误差。如果仅仅使用训练集来选择,我们不能知道该模型是否对于泛化误差也最小。1.验证方法与采样为了能够在训练集中获得泛化误差的近似,我们需要将训练集划分为训练集和测试集,用测试集误差近似泛化误差,但要保证测试集是从样本真实分布中独立同分布采样而得,且尽可能与训练集互斥,即测试样本不曾在训练样本中出现过。如何对数据集

2020-07-16 16:13:37 976

原创 机器学习的分类

1、一般分类机器学习的一般分类为:监督学习、无监督学习、强化学习、半监督学习、主动学习。1.监督学习监督学习是从<x, y>这样的示例对中学习统计规律,然后对于新的X,给出对应的y。输入空间、特征空间、输出空间、假设空间输入、输出所有可能的取值的集合分别称为输入空间、输出空间。一个具体的输入是一个实例,通常由特征向量表示,特征向量组成的空间为特征空间。特征空间与输入空间可以为同一空间,也可以为不同空间。输入输出的随机变量一般用大写X、Y表示,具体实例使用小写表示。输

2020-07-14 20:02:51 4915

原创 机器学习之基本定义

什么是机器学习?

2020-07-14 11:26:05 449

原创 ValueError: Unicode strings with encoding declaration are not supported.

在写爬虫爬取网页时遇到题目中的问题,完整错误如下:def getXpath(req, xpath): sourcehtml = etree.HTML(req.text) print(sourcehtml) nodes = sourcehtml.xpath(xpath) return nodesValueError:Unicodestringswithencodingdeclarationarenotsupported.Pleaseusebyt...

2020-06-26 20:11:21 4673

原创 Type Error:an integer is required的解决方法

TypeError: an integer is required 的解决方法在执行open函数操作文件时,会出现题目中的错误。看其他博客说由于从os模块引入了所有的函数导致的!我之所以造成这样的原因是因为在执行open函数时,在参数操作模式后直接传入了“utf-8”。具体解决方法:在“utf-8”前加上“encoding=”即可解决!...

2020-06-26 16:18:11 19025

原创 hive中数据的几种加载方式

1、从linux fs和hdfs中加载load data [local] inpath 'path' [overwrite] into table tblName [partition_sepc];[local]:如果加上表示本地地址,如果没有表示HDFS上的地址。[overwrite]:如果加上表示覆盖之前的数据,如果没有表示追加之前的数据。[partition_

2017-04-19 23:05:22 3238

转载 metadata远程存储和hive.metastore.local属性的说明

官网上对hive.metastore.local属性的解释为:local or remote metastore (Removed as of Hive 0.10: If hive.metastore.uris is empty local mode is assumed, remoteotherwise);即本地或者远程的元数据(在hive0.10版本上删除列这个属性;如果hive.me

2017-04-19 23:02:31 1991

原创 hive的metastore的选择

metastore是hive元数据的集中存放地,Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。Hive将元数据存储在数据库中(metastore),目前只支持 mysql、derby。metastore默认使用内嵌的derby数据库作为存储引擎,但是我们一般选择使用mysql作为meta的存储位置。

2017-04-19 22:59:08 546

原创 调用Hadoop时遇到的一个问题:could not find or load main class

最近在使用其他框架调用Hadoop时,执行命令出现错误,查看UI界面的日志发现,如下:导致错误的原因应该是,在程序运行时,找不到Hadoop中的MRAppMaster的主类,导致程序无法进行下去。解决方法:在yarn-site.xml文件中name为yarn.application.classpath对应的value中配置Hadoop的相关jar需求等,如下:

2017-04-19 22:41:31 11317

原创 集群运行spark时出现的问题

在运行spark时遇到一个问题,spark程序在集群上运行了一段时间后,突然挂掉了,查看日志发现了下面的错误信息,如下图所示:spark程序是提交到yarn上运行的,而在yarn中,container是程序最终运行的容器,从上面的日志上我们可以看到是在container启动时出现了异常,也就是说container容器没有能够正常启动,直接退出了。后来查看提交程序时的命令,如下:

2017-04-19 22:38:01 998

原创 hive表的DDL操作

查看表hive> show tables;创建表hive> create table t1(id int);查看表结构hive> desc [extended] t1;extended是可选的,是扩展的表的信息删除表hive> drop table t1;重命名表的名称h

2017-04-19 22:23:28 941

转载 hive常用语句示例

1/ DDL1.1 内部表和外部表(external)create table t_2(id int,name string,salary bigint,add string)row format delimitedfields terminated by ',';create external table t_3(id int,name string,sala

2017-04-19 22:22:14 512

原创 数据的两种加载模式

读模式数据库加载数据的时候不进行数据的合法性校验,在查询数据的时候将不合法的数据显示为NULL,好处:加载速度快,适合大数据的加载。写模式数据库加载数据的时候要进行数据的合法性校验,在数据库里面的数据都是合法的好处:适合进行查询,不会担心有不合法的数据存在。hive使用的就是读模式,而mysql等数据库使用的则是写模式。

2017-04-19 22:15:30 714

原创 hive的三种复合数据类型array、map、struct以及自定义分割符示例

Hive的数据类型主要有int、boolean、date、array、map、struct等,在这只描述array,map,struct三种。1.array(等同于数组,可以使用下标来操作相应的元素)默认分割符下的array,示例如下:有一群学生,id,name,hobby(多个)create table t3_arr(id int,na

2017-04-19 22:04:21 8115

原创 hive的四种表类型

Hive表有受控表(内部表)、外部表、分区表、桶表四种。内部表,就是一般的表,前面讲到的表都是内布标,当表定义被删除的时候,表中的数据随之一并被删除。外部表,数据存在与否和表的定义互不约束,仅仅只是表对hdfs上相应文件的一个引用,当删除表定义的时候,表中的数据依然存在。创建外部表,external是外部表的关键字,也是和内部表有区别的地

2017-04-19 22:02:46 10366

原创 hive视图和索引的简单介绍

Hive和mysql等数据库一样,也有视图的概念,视图实际上是一张虚拟的表,是对数据的逻辑表示,只是一种显示的方式,主要的作用是:1、视图能够简化用户的操作2、视图使用户能以多钟角度看待同一数据3、视图对重构数据库提供了一定程度的逻辑独立性4、视图能够对机密数据提供安全保护5、适当的利用视图可以更清晰的表达查询如何创建一个视图?create

2017-04-19 22:01:10 668

原创 数据的导出

这个是数据装载的反向过程,有两种方式1°、在hdfs的直接上操作hadoop fs -cp src_uri dest_uri或者hive> export table tblName to'hdfs_uri';2°、在终端使用directoryinsert overwrite [local] directory'linux_fs_path' selec

2017-04-19 21:42:34 254

原创 hive中的本地模式

hive中的hql语句的执行大部分最后转化为了mr,但是执行的过程非常的慢,可以使用本地模式提高效率,不过不适合大数据量的时候。需要开启本地模式:sethive.exec.mode.local.auto=true;这时再去执行相同的hql时,会发现速度提高很多。但是,本地模式主要用来做调试,不能配置到hive-site.xml中,因为本地模式,会只在当前机器上执行mr,如果

2017-04-19 21:40:54 426

原创 sqoop从mysql迁移数据到hive中遇到的问题

INFO mapreduce.Job: Counters: 12        Job Counters                 Failed map tasks=1                Killed map tasks=3                Launched map tasks=4                Rack-lo

2017-04-19 21:22:44 5638 1

原创 spark的持久化存储

Spark RDD是惰性求值的,而有时由于业务需要,我们要复用一个RDD。对于这种情况,如果我们只是简单地对RDD调用行动操作,Spark 将会每次都重算RDD 以及它的所有依赖。这在迭代算法中消耗格外大,因为迭代算法常常会多次使用同一组数据。例如:Scala 中的两次执行val result = input.map(x => x*x)println(resul

2017-04-13 22:54:00 360

原创 惰性求值的简单介绍

惰性求值意味着当我们对RDD调用转化操作(例如调用filter() )时,操作不会立即执行。Spark会在内部记录下所要执行的操作的相关信息。所以我们这时不应该把RDD看作存放着特定数据的数据集,而要把每个RDD当作我们通过转化操作构建出来的、记录如何计算数据的指令列表。把数据读取到RDD的操作也同样是惰性的。因此,当我们调用sc.textFile(...) 时,数据并没有被读取到内存中,而是要在

2017-04-12 22:14:21 1814

原创 spark的数据存储

Spark数据存储的核心是弹性分布式数据集(RDD)。RDD可以被抽象地理解为一个大的数组,这个数组中的每个元素是RDD逻辑上的一个分区(partition),每个分区分布在集群上的不同节点上。在spark的执行过程中,RDD经过transformation算子之后,最后由action算子触发操作。逻辑上每经历一次转换,就会将RDD转换为一个新的RDD,新的RDD和旧的RDD之

2017-04-12 22:13:35 2715

原创 RDD的两种操作算子

RDD支持两种类型的操作算子:Transformation(转换)与Action(行动)。1、Transformation(变换)Transformation操作会由一个RDD生成一个新的 RDD。Transformation操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换操作不是马上执行,需要等到Actions操作时,才真正开始运算。

2017-04-12 22:12:40 6390

空空如也

空空如也

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

TA关注的人

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