自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

守正笃实 久久为功

要得到真正快乐,只需拥有三样东西:想做的事,有爱的人和美丽的梦

  • 博客(49)
  • 资源 (2)
  • 收藏
  • 关注

原创 代码随想录算法训练营第十一天 | 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

思路: 根据对题目的理解,核心就在于括号对的匹配,遇到左括号就需要入栈,遇到右括号就需要对比栈顶元素是否能够与括号对匹配成功,若成功则可消除,否则保留。思路:消除相邻重复项使用栈来解决是最合适的场景,一旦发现当前元素与已经入栈的栈顶元素相同则直接出栈表示消除即可,然后继续遍历后续元素执行同样的操作,最后得到消除的结果。最后需要注意的点在于,即使所有的括号对都能匹配成功,但也还是存在,入栈元素未全部消除的情况,这时候需要判断栈内元素的数量,不等于零则表示无效的括号,否则表示有效。

2023-05-20 23:01:05 220 1

原创 代码随想录算法训练营第十天 | 232.用栈实现队列,225. 用队列实现栈

思路: 也是利用两个队列来实现栈的若干属性,其中比较关键的是如何拿到“栈顶”元素,解决方法是其中一个是输入队列,另一个作为可腾挪队列,需要得到栈顶原始时,将输入队列的N-1个元素都转移到腾挪队列中,即可在输入队列中得到栈顶元素。思路:用两个栈模拟队列的push、pop、peak等行为,其中一个是输入栈一个是输出栈,其中比较关键的是需要把输出栈都操作完所有元素之后,输入栈里面的元素才可以转入到输出栈中。LeetCode 225. 用队列实现栈。LeetCode 232.用栈实现队列。

2023-05-19 21:59:50 113

原创 代码随想录算法训练营第八天 | 344.反转字符串,541. 反转字符串II ,剑指Offer 05.替换空格,151.翻转字符串里的单词,剑指Offer58-II.左旋转字符串

思路: 这道题虽然是简单题,但我却不会。按照题目要求去写,代码又臭又长,整体思路上先按照答案的思路走一遍,留个印象后边再二刷。思路:这道题用了一个比较讨巧的思路,也就是复制连接目标字符串,然后subString从K到目标字符串长度的新字符串,得到结果。思路:直接按照题目要求遍历替换即可。感觉有时候这题目难度忽上忽下,跟题目难度标签出入有点大啊。思路: 利用Java内置API完成链接处理步骤解决问题。LeetCode 剑指Offer58-II.左旋转字符串。思路: 首尾双指针遍历交换。

2023-05-18 00:05:34 90

原创 代码随想录算法训练营第七天 | 454.四数相加II,383.赎金信 ,15. 三数之和,18. 四数之和

直接的方式就是遍历ransomNote中每个字母,将字母出现次数存储在哈希表中,然后遍历magazine中的字母,减去对应字母出现的次数,完成后检查哈希表中各元素的次数,若存在某个元素大于0,则表示ransonNote中的元素并不完全在magazine中。思路:四数之和可以看成两两一组的两数之和,将nums1和nums2数组作为numsA,将nums3和nums4作为numsB,遍历numsA并将元素存入哈希表中,然后查询哈希表中是否存在numsB中的元素即可。LeetCode 18. 四数之和。

2023-05-17 20:59:07 88

原创 代码随想录算法训练营第六天 | 242.有效的字母异位词,349. 两个数组的交集 ,202.快乐数 ,1. 两数之和

思路:维护一个以元素值为Key,元素所在索引为Value的哈希表,在遍历数组的过程中,只需要访问哈希表查询是否存在target - Key的记录是否存在即可,当存在则返回当前元素索引和target - Key对应Value的值即可。可以直接用哈希表记录所有字母的数量,只要两个字符串中每一个字母出现的次数都一样,则是有效的字母异位词。思路:想要通过这道题,最核心的是判断无限循环的条件,使用哈希表保存在处理过程中已经出现过的整数,当下一次还出现这个整数时就表明已经进入无限循环了,需要直接终止返回。

2023-05-16 00:05:19 98

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,07. 链表相交,142.环形链表II

(1)遍历两个链表得到各自链表长度,将长链表设置快指针多跑长链表与短链表长度之差个节点,也就是分别将两个链表上的遍历指针都对齐在同一个长度节点上。(3)利用快慢指针,其中快指针多跑N个节点,快慢指针之间的距离是N + 1个节点,这样当快指针遍历到链表末尾时,慢指针正好处于需要删除的节点之前,然后进行删除操作。然后从相遇节点和链表头节点同时出发,再次相遇的节点就是环的入口。(2)将链接遍历两次,第一次是为了得到链表的长度,方便定位倒数第N个节点,其实是正数第M个节点,其实也是转换问题思考的角度;

2023-05-15 00:10:44 210

原创 代码随想录算法训练营第三天 | 203.移除链表元素 ,707.设计链表,206.反转链表

定义pre节点为null,定义next节点为head,然后将next的下一个节点用中间值保存,next的下一个节点更改指向为pre节点,这样就完成了局部翻转。遇到的问题:一开始想不起来如何解决要删除的点正好在头结点的情况,代码存在局限性不能通过所有的case,然后就想到了利用哨兵节点,这样就能够保证在用同一种删除模式下删除原有头节点;思路:使用一个哨兵节点作为头节点head的前一个节点,这样能够解决需要删除的元素在头结点的情况,最后返回哨兵节点的下一个节点next即可。关于链表删除部分是可以直接利用的。

2023-05-13 00:13:39 315

原创 代码随想录算法训练营第二天 | 977. 有序数组的平方,209. 长度最小的子数组

遇到的困难:在对移动左右指针的判定条件这块,存在一些迷惑的点,如何做到当右指针已经不能移动的时候,左指针还需要继续逼近target值同时满足题目给出的条件。思路:这道题其实还是利用双指针思想去解决问题,不同的是,在一个区间内需要保存元素之和,也就是一种状态,同时为了满足题目给出的“>= target”长度最小的连续子数组,所以状态还需要改变,改变的方式就是在一定条件下,移动左右指针进而达到改变状态的目的。思路:利用双指针思想,观察给到的输入数组,发现首尾平方都是比较大的,越往中间去就是越小的。

2023-05-11 23:50:15 110

原创 代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素

遇到的困难:实现的时候while条件里面写的是`left < right`,这样就导致没有覆盖到一个边界case,当数组中只有一个元素,同时val不在数组中,这个时候left不会更新,导致返回的left为0,leetcode检查结果的时候就会判错。遇到的困难:实现的过程比较直接,首先定义递归函数的参数和返回值;正确的做法是,`while (left <= right)`,这样就可以在只有一个元素的基础上也能都移动left。思路:题目直接指定了查找的方式是“二分查找”,那么就直接使用二分查找解决问题即可。

2023-05-10 22:41:57 288

原创 运行Scala程序时的若干问题

形如:“ Error:(1, 8) Demois already defined as object Demo”问题 解决方法:File--Project Structures--Project Settings--Modules--*your project*--Sources--Sources将自己所建工程底下的*src*文件夹取消*Sources*标记,仅将*scala*文件...

2020-03-03 22:01:08 568

原创 Spark基础(5)文件数据读写

本地文件系统的数据读写scala> val textFile = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")scala> textFile.saveAsTextFile("file:///usr/local/spark/mycode/wordcount/writeback.txt")分布式文...

2020-03-02 22:40:37 505

原创 Spark基础(4)共享变量

广播变量广播变量(broadcast variables)允许程序开发人员在每个机器上面缓存一个只读的变量,而不是为机器上的每个任务都生成一个副本。spark的“行动”操作会跨越多个阶段(stage),对于每个阶段内的所有任务所需要的公共数据,Spark都会自动进行广播。可以通过SparkContext.broadcast(v)来从一个普通变量v中创建一个广播变量。这个广播变量就是对普通...

2020-03-02 17:52:49 201

原创 Spark基础(3)PairRDD-reduceByKey、groupByKey、sortByKey、sortBy、mapValue和join

PairRDD的创建可以采用多种方式创建Pair RDD,其中一种主要的方式是使用map()函数来实现。scala> val lines = sc.textFile("pathToFile")scala> val pairRDD = lines.flatMap(line => line.split(" ")).map(word => (word, 1))scal...

2020-02-25 20:33:17 580

原创 Spark基础(2)分区

当涉及到对程序性能有要求的时候,一定会使用分区技术。RDD是弹性分布式数据集,通常RDD很大,会被分成很多个分区,分别保存在不同的节点上。增加并行度,减少通信开销。分区原则:RDD分区的一个分区原则是是得分区的个数尽量等于集群中的CPU核心(Core)数目。如何手动设置分区(1)创建RDD时:在调用textFile和parallelize方法时手动指定分区个数即可,语法格式:sc...

2020-02-24 19:15:52 182

原创 Spark基础(1)RDD操作和持久化

RDD创建Spark采用textFile()方法来从文件系统中加载数据创建RDD 从文件系统中加载数据创建RDD。该方法把文件的URI作为参数,这个URI可以是:本地文件系统的地址;分布式文件系统HDFS的地址;Amazon S3的地址等等通过并行集合(数组)创建RDD调用SparkContext的parallelize方法,在Drive中一个已经存在的集合(数组)上创建。sca...

2020-02-21 12:51:21 411

原创 Scala基础(8) 模式匹配(增)

scala中的模式匹配最常用关于match语句中。下面是一个简单的整型值的匹配实例。val colorNum = 1val colorStr = colorNum match{ case 1 => "red" case 2 => "green" case 3 => "yellow" case _ => "Not Allowed"}...

2020-02-20 14:58:21 91

原创 Scala基础(12)Spark命令参数及独立应用程序

--master这个参数表示当前Spark Shell要连接到哪个master,如果是local[*],就是使用本地模式启动spark-shell,其中中括号内的型号表示需要使用几个CPU核心(core),也就是启动几个线程模拟spark集群。--jars这个参数用于把相关的JAR包添加到CLASSPATH中,如果有多个jar包,可以使用逗号分隔符连接它们。比如,要采用本地模式,在4个...

2020-02-20 14:56:40 422

原创 Scala基础(11) 运行基本流程及RDD

Spark和Hadoop的比较MapReduce Spark 数据存储结构:磁盘HDFS文件系统的split 使用内存构建弹性分布式数据集RDD,对数据进行运算和cache 编程范式:Map+Reduce DAG:Transformation+Action 计算中间结果写入磁盘,IO及序列化、反序列化代价大 计算中间结果在内存中维护,存取速度比磁盘高几个...

2020-02-19 18:24:05 313

原创 Scala基础(10) 函数式编程

函数式编程实例import java.io.Fileimport scala.io.Sourceobject WordCount{ def mian(args: Array[String]): Unit{ val dirfile = new File("path to files") val files = dirfile.listFiles()...

2020-02-18 16:20:16 129

原创 Scala基础(9) 针对集合的操作

列表的遍历val list = List(1,2,3,4,5)for (elem <- list){println(elem)}也可以使用foreach进行遍历val list = List(1,2,3,4,5)list.foreach(elem => println(elem)) // 这是一个匿名函数 (elem:Int) => println(elem)...

2020-02-18 15:56:07 703

原创 Scala基础(8)函数定义

函数的类型字面量包括整数字面量、浮点数字字面量、布尔型字面量、字符型字面量、字符串字面量和符号字面量、函数字面量和元组字面量。函数字面量:我们可以像定义变量那样去定义一个函数,由此导致的结果就是函数也会和其他变量一样,开始有“值”在函数式编程中,函数的“类型”和“值”也成为两个分开的概念,函数的“值”,就是“函数字面量”按照大家比较熟悉的定义变量的方式,采用Scala语法来定义一个函...

2020-02-18 11:46:02 242

原创 Scala基础(7) 特质(Trait)

特质的定义特质定义使用关键字traittrait CarId{ var id: String def currentId():Int}上面定义了一个Trait,里面包含一个抽象字段id和抽象方法currentid。注意,抽象方法不需要使用abstract关键字,特质中没有方法体的方法,默认就是抽象方法。trait定义好之后,就可以使用extends或with关键...

2020-02-14 18:08:59 198

原创 Scala基础(6) 单例对象和伴生对象

单例对象Scala并没有提供Java那样的静态方法或者静态字段,但是,可以采用object关键字实现单例对象,具备和Java静态方法同样的功能。⚠️注意:在Scala中需要对值进行返回可以使用:1. return value;2. 直接写在方法的最后面一行。object Person{ private var lastId = 0 def newPersonId()={...

2020-02-14 17:23:09 198

原创 Scala基础(5) 构造器

利用主构造器传递参数class Counter(val name:String, val mode:Int){ private var value = 0 def increment(step:Int):Unit={value += step} def current():Int={value} def info():Unit={printf("Nama:%s...

2020-02-14 12:25:35 89

原创 Scala基础(4) 面向对象编程基础

4.1 类类的定义和创建对象最简单的类的定义形式是:class Counter{ // 这里定义类的字段和方法}可以使用new关键字来创建对象new Counter // 或者new Counter()给类增加字段和方法class Counter{ private var value = 0 def increment():Unit = {v...

2020-02-13 19:13:47 127

原创 Scala基础(3) 基础语法

3 数据结构3.1 容器(Collection)Scala提供了一套丰富的容器(Collection)包括List、Array、Set和Map等;容器可以分为有序和无序,可变和不可变等不同容器类别。Scala用了三个包来组织容器,分别是scala.collection、scala.collection.mutable(可变容器)和scala.collection.immutable(不...

2020-02-12 19:26:38 342

原创 Scala基础(2) 基础语法

2. 控制结构2.1 if条件表达式val x = 6if (x>0){ println("Positive Number.")} else{ println("Negative Number.")}2.2 while循环var i = 9while(i > 0){ i -= 1 printf("i is %s\n",i)}...

2020-02-12 13:57:39 119

原创 Scala基础(1) 基本语法

(来自于Spark编程基础,厦门大学林子雨老师教学视频)1. scala有两种类型变量:其中val是不可变的,在声明时必须被初始化,而且初始化后便不可再赋值;var是可变的声明时候需要进行初始化,其后还可以进行再赋值。2. 在scala中默认存在:import java.lang._ // 默认导入java.lang包里面所有的东西2.1 声名值和变量(如下结果均一致)...

2020-02-11 19:43:08 223

原创 关于Leetcode的琐碎记录

在应对秋招刷题的过程中,如何在短时间内能够将复习的重点覆盖到互联网大厂会考察到的大部分知识点上,会直接影响到复习的节奏以及避免做些无用功,不在某些极少会考察到的知识点上钻无畏牛角尖。Leetcode官方推荐程序员在面试中需要掌握的算法和数据结构:算法排序算法:快速排序、归并排序、计数排序等 搜索算法:回溯、递归、剪枝技巧 图论:最短路径、最小生成树、网络流建模 动态规划:背包问题、...

2019-07-31 11:25:12 98

原创 保存高分辨率图像--Matplotlib

使用savefig()保存图像文件plt.savefig('filename.png',dpi=600) 将图像保存为SVG的无损质量 plt.savefig('graph.svg')

2019-03-28 10:30:24 13176 2

原创 Python学习笔记(四)

数据可视化小实例import matplotlib.pyplot as plt input_value = [1,2,3,4,5]squares = [1,4,9,16,25]plt.plot(input_value,squares,linewidth=5)plt.title('Test graph',fontsize=24) #设置图标标题plt.xlabel('Valu...

2019-01-14 15:09:15 108

原创 Python学习笔记(三)

关于文件和异常 读取文件时,使用read()函数(该函数是全文读取)时在到达文件末尾时返回一个空字符串,解决方法是:rstrip()删除字符串末尾的空白 with open('text.txt') as file_object: contents = file_object.read() print(contents.rstrip())  逐行读取读取文件时,常常...

2019-01-12 18:59:31 99

原创 Python学习笔记(二)

对于一个函数而言,调用函数传递参数的有两种方式:(1)位置传递。传入的实参跟形参位置一一对应。(2)关键字传递。直接在实参传递的过程中将名称和值关联起来,不会混淆。def describe_pet(animal_type,pet_name): print(animal_type,pet_name)# 位置传递describe_pet('harry','hamster')# 关...

2019-01-11 16:08:35 77

原创 MATLAB基础知识

常用数学函数 (1)函数名(函数自变量的值)             函数的自变量规定为矩阵变量,当然也可以是标量,标量本身就是矩阵的一种特例。             函数在运算时是将函数逐项作用于矩阵的每个元素上,所以最后运算的结果就是一个与自变量同型的矩阵。 (2)常用函数的应用             1. 三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函...

2019-01-10 16:42:25 247

原创 Anaconda安装SPAMS(Python版本)

SPAMSSPAMS(SPArse Modeling Software),它是用来解决各种稀疏估计问题的优化工具箱。字典学习和矩阵因子分解(NMF,sparse PCA,....) 使用LARS,坐标下降法,OMP,SOMP ,最近邻方法解决稀疏分解问题 解决结构化稀疏分解问题(L1/L2,L1/linf,sparse group lasso,tree-structured regul...

2018-07-26 12:52:58 5591 5

原创 A Content-aware Metric for Stitched Panoramic Image Quality Assessment [ ICCV 2017 ]

关于图像质量评价,很早之前就有前辈在该领域做出卓越的贡献,推动该方向的进步。图像质量评价的重要性自然不言而喻,而且对于世界上很多事物,人们都想着站在某个或多个角度进行一系列评价,或主观或客观。最开始是针对于单幅照片的一系列评价,从主观评价和客观评价两个大的角度来较为精确评估一幅照片的质量好坏。其中,主观评价分为:绝对评价和相对评价客观评价分为:全参考评价、部分参考评价和无参考评价主观评价又以打分评...

2018-05-14 22:07:29 638 5

转载 markdown编辑器

Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用...

2018-05-08 15:18:05 95

原创 Matlab若干基础语法

Matlab向量向量是数字的一维数组,在MATLAB中,允许创建两种类型的向量:行向量、列向量。行向量 And 列向量r = [1 2 3 4 5] #行向量c = [1; 2; 3; 4; 5] #列向量引用向量的元素v = [1;2;3;4;5] 1.向量v的第i个分量叫做v(i)     如:v(3)2.引用带冒号的向量,将列出向量的所有组件     如:v(:)3.可以选择向量中...

2018-05-08 00:03:18 1997

原创 CUDA并行计算若干基础知识(未完)

同步性和屏障同步性synchronisation和屏障barrier。不同的线程在共享和全局内存中读写数据需要有先后的控制。屏障的作用:用来控制多个线程的停止与等待,当所有线程都到达了屏障点,程序才继续运行。CUDA负责完成的事情1.从CPU同步数据到GPU2.从GPU同步数据到CPU3.(1、2使用cudaMemcpy)4.给GPU分配内存5.加载Kernel到GPU上,并开始计算。...

2018-04-18 21:27:16 213

原创 关于OpenGL的一些基础概念(未完)

声明:该文章只作个人知识笔记,以备查阅,如存在结构混乱、阐述浅显或单薄,请见谅。存储着色器在OpenGL核心框架中,并没有提供任何内建渲染管线。在提交一个几何图形进行渲染之前,必须制定一个着色器。在文件源的开头部分声明一个着色管理器的实例(也可称为对象)GLShaderManager shaderManager;GLShaderManager 在使用前必须进行初始化shaderManager.In...

2018-04-18 18:46:58 143

SPAMS相关函数

这是 SPArse Modeling Software中涉及到的相关函数的解释说明

2018-07-26

MATLAB Machine Learning-Apress (2017)

英文原版书籍PDF,通过MATLAB学习机器学习的各种算法实践。

2018-05-16

空空如也

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

TA关注的人

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