自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ASN_forever的博客

记录技术小白的成长之路!

  • 博客(26)
  • 资源 (3)
  • 收藏
  • 关注

原创 LeetCode378题:有序矩阵中第k小的元素

思路:首先分析已知条件,即数组是每行从左到右递增,每列从上到下递增的(非严格递增)。要找到第k小的元素,那么最笨的方法就是将数组所有元素升序排序后,取第k个元素;或者是用优先级队列的思想,始终维持已遍历元素中的k个最小元素,直到遍历结束,取队列的最后一个元素;或者用小顶堆的数据结构,遍历数组并构建堆,构建完成后,找到第k小的元素。解法一:排序(最笨的) public int kt...

2018-12-25 23:23:03 2426

原创 LeetCode64题:最小路径和

思路: 题目要求的是从左上角即[0,0]位置开始,到右下角即[m-1,n-1]位置为止的最小路径和。倒过来思考的话,对于右下角[m-1,n-1]来说,它的上一步只有两个位置即[m-2,n-1]和[m-1,n-2],因此问题就可以转化为求从[0,0]到这两个位置的路径和的较小值,即状态转移公式为:min ( arr[m-1][n-1] ) = min ( arr[m-1][n-1]+min(...

2018-12-25 15:00:05 554

原创 LeetCode746题:使用最小花费爬楼梯

思路: 这题与LeetCode198题“打家劫舍”属于相同题型,都涉及到动态规划的思想。对于第i阶楼梯来说,有两种情况,要么走第i阶楼梯,要么直接跨过第i阶楼梯。而最终要求从1阶登过i阶的最小总花费cost(i)就可以用下面的公式表示:cost(i) = min(“走i阶时的最小总花费”,“跨过i阶时的最小总花费”) 接下来对这两种情况进行讨论。1)走i阶时的最小总花费...

2018-12-24 10:35:07 444

原创 LeetCode198题:打家劫舍

思路:每个房子都有两种结果,要么被抢要么不被抢。因此要计算从1号到i号房子最多能抢多少现金,可以用下面的公式表示:rob(i) = Max("i被抢","i不被抢")。因此,对于i号房子,需要同时分析被抢和不被抢两种情况,比较获取最大值即可。i被抢如果第i个房子被抢,因为相邻的房子不能同时被抢,所以i-1不能被抢,能被抢的只能是i-2及之前的房子,因此,当第i个房子被抢时,可以...

2018-12-23 23:19:46 316

原创 LeetCode938:二叉搜索树的范围和

思路一:中序遍历后遍历求和只要是关于二叉搜索树的问题,首先要想到二叉搜索树的特征以及中序遍历的特征。此题中的L和R指的是中序遍历排序后的前后两个结点。因此,要求L和R之间所有结点的值的和,就可以先中序遍历得到排序后的数组,然后遍历数组求和即可。 public int rangeSumBST(TreeNode root, int L, int R) { Array...

2018-12-22 21:35:39 652

原创 LeetCode783题:二叉搜索树结点最小距离

思路一:中序遍历然后循环比较这道题其实跟第530题是一样的。都是求二叉搜索树的任意两个结点之差的最小值。这时候关键要清楚二叉搜索树的原理,即当前节点大于其左子树小于其右子树。同时考虑到二叉搜索树的中序遍历实际上一个正序排序的过程,因此可以先对二叉搜索树中序遍历并保存到list中,然后循环比较前后两个元素之差找到最小差即可。public int minDiffInBST(TreeNod...

2018-12-22 17:18:18 353

原创 LeetCode106题:从中序与后序遍历序列构造二叉树

思路: 本题的思路与LeetCode105题:从前序与中序遍历序列构造二叉树的思路非常类似。只不过这里要根据后序遍历序列遍历当前节点而已。class Solution { public TreeNode buildTree(int[] inorder, int[] postorder) { return helpBuild(inorder,postorder,...

2018-12-21 22:23:49 285

原创 LeetCode105题:从前序和中序遍历序列构造二叉树

思路: 首先要清楚二叉树的前序遍历和中序遍历的过程。所谓的前序遍历,其遍历顺序为:当前节点-->左子树-->右子树;而中序遍历的遍历顺序为:左子树-->当前节点-->右子树。因此,中序遍历序列中某一节点的左右两侧则分别为其左右子树。这样思路就出来了,先在前序遍历序列中设定当前节点,然后在中序遍历序列中遍历找到当前节点,然后对其左右子树(即左右两侧的局部序列)分别进行...

2018-12-21 21:09:42 521

原创 LeetCode438题:找到字符串中所有字母异位词

原始思路1: 获取p串的全排列,与s暴力对比但这种方法时间复杂度太高,主要是因为全排列的复杂度太高,如果p字符串长度为n的话,那么全排列复杂度为O(n!)。严重超时。public class Test { Set<String> set = new HashSet<String>(); public static void main(String[] ...

2018-12-15 13:31:30 589

原创 全排列的java递归实现

思路:全排列,对于数组来说,就是某一个下标处可以放整个数组所有的元素。因此每个位置的元素都用其后的各个元素依次与其进行互换,直到需要互换的是最后一个元素时,打印出来的结果就是某一种全排列,然后返回到上一个元素。返回时要注意需要再互换一次回复到原来的状态。后来发现,原来以前写过全排列:https://blog.csdn.net/ASN_forever/article/details/847834...

2018-12-14 18:11:44 814

原创 LeetCode367题:有效的完全平方数

这道题就是让你写一个函数用来判断一个是num是否为某个数m的平方的。解法一:暴力搜索法判断一个数是不是某个数的平方,暴力一点的想法,就是从i = 1开始循环,如果i*i小于num,则i++;如果等于num,则返回true;如果大于num,则返回false。public static boolean isPerfectSquare(int num) { if(num...

2018-12-13 14:21:22 677 2

原创 LeetCode303题:区域和检索——数组不可变

常规思路:这道题说白了就是要你写一个函数,这个函数有两个int型的形参i和j,分别表示数组的两个下标,然后需要返回这两个下标及其之间的所有数的和。如果只考虑单次调用的需求的话,直接从i到j累加就完了。但说明中提到,函数会被多次调用。那么如果每次调用都从i到j累加一遍的话,之前累加的结果就浪费了,相同的i和j每次都会做重复的累加,效率就会很低了。因此需要换一种思路。非常规解法:初始化数组...

2018-12-12 22:18:43 298

原创 LeetCode283题:移动零

 解法一:双重循环 ( 最笨的,时间O(N2),空间O(N) )public void moveZeroes(int[] nums) { int len = nums.length; for (int i = 0; i < len; i++) { if (nums[i] == 0) { for (int j = i + 1; j < len; j++) ...

2018-12-12 16:00:56 317

原创 LeetCode263:丑数

解法一:循环法根据定义,丑数是质因数只包含2,3,5的数。意思如果一个正整数m存在i,j,k(i,j,k都是非负整数)使得m = 2*i+3*j+5*k,那么m就是一个丑数。所以只要依次尽可能的取模2,3,5,最后的余数如果是1,那么就是丑数了。(这个很简单,稍微想一下应该就知道原因了)public boolean isUgly(int num) { if(num =...

2018-12-12 13:22:00 285

原创 LeetCode258题:各位相加——数字根

这道题涉及到数学领域的一个定理,即“数字根”。 解法一:笨方法(循环)public int addDigits(int num) { Integer res = new Integer(num); while(res>9){ String str = res.toString(); int ...

2018-12-12 10:47:48 383

原创 LeetCode257题:二叉树的所有路径

思路: 关键点是路径的定义,即根结点到叶子节点。而判断是否为叶子节点只需要判断其左右子结点是否都为空即可。递归实现,如果当前节点不为空就将其值val加入到stringbuffer中,并在此条件下判断它是否为叶子节点(即左右子节点都为空),如果是则将stringbuffer添加到list中,否则,如果有左子节点,则递归到左子节点,如果有右子节点,则递归到右子节点。需要注意的是,递归的时候...

2018-12-12 10:10:50 189

原创 LeetCode235题:二叉搜索树的最近公共祖先

这道题要充分利用二叉搜索树的性质,即比某一节点大的数全在其右侧,比其小的数全在其左侧。思路:知道了二叉搜索树的性质后,根据其性质可知,如果p和q在节点temp的两侧的话,也就是当(p.val - temp.val)*(q.val - temp.val)<=0时(包含“=”号,因为“一个节点也可以是它自己的祖先”),则当前节点temp就是它们的最近公共祖先。否则说明p和q都在tem...

2018-12-11 16:37:46 652

原创 LeetCode204题:计数质数

这道题真的是解法很多,但满足时间复杂度的还不太容易想。解法一:暴力法外层循环从2到n,内层循环从2到ni,然后ni取模内层循环的值,判断是否为质数。复杂度O(n2),舍弃。解法二:根据之前的质数求思路:一个数如果与比它小的所有的质数取模后结果都不为0时,那么此数也是质数。所以,从2开始遍历到n时,每遇到一个质数就将其放到ArrayList中(用ArrayList而不用trees...

2018-12-10 23:36:22 408

原创 LeetCode102:二叉树的层次遍历

 思路:用一个队列和列表来实现。主要是两层循环,外层循环用来获取队列大小size以及初始化一个列表list(用来存储当前层的节点),内层循环用来依次从队列中从左到右的取出当前层节点放到list中,并将当前节点的左右子结点插入到队尾。每次从队列中取出一个节点的时候都要对size进行自减操作,直到当size==0时,也就是当前层所有的节点都从队列中取出后,再重新开始外层循环,计算下一层的结点数si...

2018-12-07 09:51:23 197

原创 LeetCode169:求众数之摩尔投票法

 这道题目对众数有了自己的定义,即出现次数大于n/2的元素,而不是出现次数最多的元素。下面这个方法,要求数组中必须有一个元素出现的次数大于等于n/2(前提条件),不然求出的结果不一定是众数。public int majorityElement(int[] nums) { int temp=nums[0]; int count=1; for(int...

2018-12-06 13:14:45 522

原创 leetcode108题:将有序数组转换为二叉搜索树

 题目要求的是高度平衡的二叉搜索树,故每个节点应该取所在区间的中间节点。就跟二分查找一样。首先用整个数字的中间位置(下标基座mid)的数生成根结点root,然后找mid左边即0到mid-1的中间位置的元素生成root的左子节点,mid右边的即mid+1到len中间的生成root的右子节点,并在每一次区中间元素时修改区间范围。以此类推,递归即可。class Solution { pub...

2018-12-05 23:09:57 261

转载 转载一篇讲解rdd和dataframe分区的博文

转载自董可伦的文章:https://blog.csdn.net/dkl12/article/details/81663018#commentBox

2018-12-04 12:58:51 223

原创 java实现递归全排列算法

思路: ①找到所有可能出现在第一个位置的字符,即start与其后面所有与它不同的字符互换位置            ②一个位置的字符完成步骤①之后,递归进行下一个位置的互换操作,也就是start+1             ③直到start==end,说明最后一个字符以及互换完毕,所以打印第一轮的互换结果,然后返回到上一个位置的for循环中            ④再次进行swap操作...

2018-12-04 09:55:47 2083 1

原创 windows本地Eclipse开发spark程序打包到集群运行

windows环境下基于Eclipse开发spark的配置可以看上一篇博文:https://blog.csdn.net/ASN_forever/article/details/84747317本篇主要记录如何在windows本地用Eclipse开发spark程序以及如何打包到Linux集群去运行。 首先在Eclipse中创建一个maven项目,并配置好pom(具体细节看上一篇配置博文)...

2018-12-03 17:01:06 1372

原创 spark2.1.0配置windows本地基于java语言的Eclipse开发环境

前面配置过在windows本地通过Eclipse开发hadoop程序然后打成jar包在Linux集群中运行的经历,因此一方面是基于同样的需求,另一方面是因为我是spark小白,想通过这种方式快速了解和学习spark开发。(注意:此文配置的是基于java语言开发spark的,如果要用scala开发,则需要在Eclipse中添加scala插件并做进一步配置。如果要用python开发,则最好用pyc...

2018-12-03 11:25:27 1208 3

原创 spark启动pyspark shell时报错socket.error: [Errno 99] Cannot assign requested address

这是个socket请求错误,意思是说不能为其分配请求的地址。 分析原因:socket发起connect请求的时候会随机分配一个端口给你。这个分配的端口是有范围的,记录在:/proc/sys/net/ipv4/ip_local_port_range可以看到我的端口范围是32768到60999。当你用多个进程发起过多的请求的时候,端口用完了就会报这个错误。解决办法:要解...

2018-12-01 14:33:53 1660

canal 1.1.4 安装包合集,包括deployer admin adapter

国内下载GitHub上的安装包会失败或很慢。这里直接把安装包提供给大家,包括deployer,admin和adapter。

2020-04-09

11-深度探索区块链:Hyperledger技术与应用_区块链技术丛书_-_张增骏.epub

本书详细介绍了Hyperledger Fabric1.0的相关技术原理,并通过票据背书项目进行实战演练。对于初学Fabric的同学来说,浅显易懂,上手较快。

2019-05-27

networkx开发文档.pdf

networkx2.3官方开发文档,详细的介绍了各种图及相关算法的使用。

2019-05-27

空空如也

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

TA关注的人

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