自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 仿照dubbo手写一个RPC框架

仿照dubbo手写一个RPC框架:dubbo介绍:框架实现:执行流程:运行验证:dubbo介绍:dubbo: Dubbo是一款高性能、轻量级的开源 Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。目的: 实现调用远程服务像调用本地服务一样,将调用过程进行封装。在消费者端只需要一个要调用服务的接口,不需要实现,dubbo对该接口进行动态代理。并且支持多种调用协议/服务器。框架实现:动态代理接口(核心):动态代理要调用服务的接口,在这

2020-11-11 19:30:25 357

原创 每日一道算法题LeetCode面试题17.13:Re-Space LCCI(恢复空格)

恢复空格题目分析题解动态规划题目哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。

2020-07-09 21:55:33 319

原创 每日一道算法题LeetCode面试题16.11:Diving Board LCCI(跳水板)

跳水板题目分析题解遍历k种情况题目你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。题目链接:link.分析一道数学问题,结果是从 k * shorter 到 k* longer,间隔为 longer-shorter , 可以直接生成这个数组,用python就是一句代码:range(shorter*k, longer*k + 1,

2020-07-08 23:12:09 265

原创 每日一道算法题LeetCode112:Path Sum(路径总和 )

路径总和题目分析题解递归题目给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。分析题目要求路径必须由根节点到叶节点,就让题目简单了很多,递归一直查到叶节点即可。递归出口有两个,到达叶节点,并且路径和为sum,返回true;到达null节点,返回false题解递归 public boolean hasPathSum(TreeNode root, int sum) { if(ro

2020-07-07 17:13:05 218

原创 每日一道算法题:LeetCode 63:Unique Paths II(不同路径 II )

不同路径 II题目分析题解动态规划题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?题目链接:link.分析这道题作为不同路径系列的第二道,难度始终,当对于不同路径I ,新增了障碍物,解题思路改变不大。使用动态规划,有下列几种情况:当前位置为障碍物,则当前位置的路径数 = 0.当

2020-07-06 22:00:42 366

原创 每日一道算法题LeetCode44:Wildcard Matching(通配符匹配)

这里写目录标题题目分析题解动态规划题目给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。题目链接:link.分析不用多说,可以用动态规划。关键是递推式。一共有三种情况:1.* 与 字母:可以选择匹配当前字母或者不

2020-07-05 23:12:18 235

原创 每日一道算法题LeetCode32:Longest Valid Parentheses(最长有效括号)

最长有效括号题目分析题解栈总结题目给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。分析挺难的一道题,我想到了动态规划,想到了栈,但是一个都没有做出来。。有太多的点需要注意了,栈还是比较好理解的。题解栈初始化一个栈,遇到做括号就将下标入栈,遇到右括号就弹栈。如果弹栈之后栈为空,就将当前下表入栈。如果弹栈之后下表不为空,更新结果。注意要在最开始入栈一个 -1,比如“ () ”,没有入栈一个-1的话,结果就是0。 public static int

2020-07-04 23:40:03 173

原创 按照相同列合并CSV文件(python)

python按照相同列合并csv文件需求解决办法代码总结需求现有两个csv文件,表头分别如图所示文件一:文件二:先要生成一个新的文件,包含三列:RID,label,PTID,需要按照文件一的RID-PTID关系进行增加。需要注意,文件一有1400+行,文件二有将近400行。解决办法如果按照手工进行依次修改,效率极低,需要一行一行查找。使用python可以很容易的完成这一任务:这里使用pandas库进行csv文件的读取操作,使用csv库进行文件的写入操作。代码import csvi

2020-07-04 21:16:43 4504 1

原创 每日一道算法题LeetCode108:Convert Sorted Array to Binary Search Tree(将有序数组转换为二叉搜索树)

将有序数组转换为二叉搜索树题目分析题解总结题目将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。分析本题提供一个有序数组,要求将其转换为一个高度平衡二叉搜索树(左右子树高度差不超过一)。由于数组已经排序好,每个数左边的数都比本数小,右边的数都比本数大,所以选择中间的数为根节点,然后左右递归即可,这样一方面满足二叉树左节点小,右边节点大,另一方面,最后的左右子树高度差也不会超过一。题解

2020-07-03 19:49:52 141

原创 每日一道算法题LeetCode718:Maximum Length of Repeated Subarray(最长重复子数组)

最长重复子数组题目分析题解动态规划总结题目给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。分析这道题属于一看就知道可以用动态规划做的那种,关键就在于怎么找出动态规划的递推公式。由于是找到两个数组的公共部分,自然而然的,我们用一个二维表的表头来存储,想递推公式时可以画一个图,更容易想,写代码时下标也更好写:题解动态规划 public static int findLength(int[] A, int[] B) { int i,j;

2020-07-01 22:14:56 169

原创 用机器学习预测博文访问量

用机器学习预测博文访问量简介数据获取与处理预测模型简介最近每天在CSDN更新博客,偶尔一次打开创作中心,发现有很多相关数据我就想,要是我一直坚持下去每天一篇,啥时候访问量能到1000,10000?对于这种问题,使用机器学习多项式回归很方便,只说不做不是我的风格,正好暑期比较闲,来分析一波。数据获取与处理首先,当然是数据的获取和处理,CSDN非常贴心地提供了导出数据的功能,导出格式为CSV。如你所见,后面三项全是0(疯狂暗示),所以这次只研究时间和访问数的关系。使用python CSV包将数据

2020-07-01 10:33:56 565 1

原创 每日一道算法题LeetCode剑指 Offer 09. 用两个栈实现队列

用两个栈实现队列题目分析题解总结题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )题目链接:link.分析我看到很多人在题目评论说看不懂题目示例,可能是只看题目,没有看代码吧。这道题要我们实现一个类,这个类有三个方法,一个构造方法,一个appendTail,一个deleteHead。题目示例就是说明测试时的调用顺序,实例一

2020-06-30 16:43:19 146

原创 每日一道算法题LeetCode125:Kth Largest Element in an Array(数组中的第K个最大元素)

数组中的第K个最大元素题目分析题解快排最小堆总结题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。分析这个题的思路很简单,将数组排序,然后返回倒数 K 位置的元素即可,所以排序算法的选择就很关键了。题解快排先使用快排,将数组排序,然后直接返回倒数 K 位置的元素: public static int findKthLargest(int[] nums, int k) { quickSort(nu

2020-06-29 17:26:37 204 1

原创 每日一道算法题LeetCode209:Minimum Size Subarray Sum(长度最小的子数组)

长度最小的子数组题目分析题解暴力滑动数组总结题目给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。题目链接:link.分析首先最简单的就是暴力求解,两重循环,找到最短的子数组即可。时间复杂度接近O(n2)暴力之后,我们自然而然地可以想到用滑动窗口来优化解法,将双重循环变为一重循环即可。题解暴力使用两重循环,值得注意的是,在内循环中,并不需要一直往后找直到sum比s大,内循环次数

2020-06-28 19:28:27 170

原创 每日一道算法题LeetCode41:First Missing Positive(缺少的第一个正数)

这里写目录标题题目分析题解对原数组进行重组总结题目给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。链接:link.分析开始没看到提示,还在想是不是出bug了,这个题是困难难度。后来看到了题目要求:时间复杂度O(n),并且不适用多余的空间。既然不能使用多余空间,那就只能在原数组上做文章。题解对原数组进行重组数组长度为n,将原数组进行重组,值为[0,n]的数每个数放在数组 n-1 位置。这样,循环完之后,

2020-06-27 18:55:56 162

原创 每日一道算法题LeetCode面试题02.01:Remove Duplicate Node LCCI(移除重复节点)

移除重复节点题目分析题解定义链表数组存储总结题目编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。题目链接:link.分析本题考链表,要去掉所有重复的节点,需要两步,首先判断这个节点是否重复,如果重复,将这个节点去掉。可以双重循环去重(题目进阶),也可以用空间换时间,只要一重循环就可以完成。题解定义链表public class ListNode { public int val; public ListNode next; ListNode(int x){

2020-06-26 17:16:35 194

原创 每日一道算法题LeetCode139:Word Break(单词拆分)

单词拆分题目分析题解动态规划总结题目给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。链接:link.分析端午归端午,刷题不能虎,hhh。今天这道题属于中档题,浓浓的动态规划的味道,判断前 i 个字符是否是单词,只需要知道前 j 个能不能分解为单词,以及和 i - j 是不是一个单词就可以,这样我们就得到了动态规划转移方程。代码就不难了。

2020-06-25 22:27:37 214

原创 每日一道算法题LeetCode16:3Sum Closest(最接近的三数之和)

最接近的三数之和题目分析题解枚举+双指针总结题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。链接:link.分析这道题与LeetCode15三数之和相似,最简单的使用暴力三重循环,这道题的时间复杂度好像不会超,hhh。再想深入一点,双指针是很好的解法,把三数之和转换为二数之和。题解枚举+双指针先将数组进行排序,然后依次遍历,就变成了求两个数的最接近之

2020-06-24 22:08:13 198

原创 每日一道算法题LeetCode67:Add Binary(二进制加法)

二进制加法题目分析题解逢二进一题目给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。分析终于来了一个简单题,前两天的题真是一言难尽。来看这道题,二进制加法,输入两个二进制字符串,返回结果字符串,思路很简单,按照正常的二进制加法,逢二进一。需要注意的是,两个二进制长度不一样,而且字符串的低位对应的是二进制的高位。题解逢二进一 public static String addBinary(String a, String b) {

2020-06-23 10:35:54 278

原创 每日一道算法题LeetCode124:Binary Tree Maximum Path Sum(二叉树中的最大路径和)

二叉树中的最大路径和题目分析题解递归总结题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。分析今天又是一道困难题,昨天的那道写了半天没写出来,后面看了题解还是有点懵逼,不过今天这道题虽然是困难,但是做起来并不难。看到二叉树,就想到递归,到达每个节点递归求解其左右节点的最大值,递归的退出条件就是当节点为null。值得注意的是,由于根节点不一定被选中,所以全局最大值并不是根节点递归函数的返回值,所以要

2020-06-21 10:58:47 185

原创 每日一道算法题LeetCode125:Valid Palindrome(验证回文串)

验证回文串题目分析题解双指针正则+reverse总结题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。分析这道题并不难,很容易想到解法,需要注意的是只考虑字母和数组字符。空格,标点都不用考虑题解双指针分别用两个指针,一个从前往后,一个从后往前,依次比较 public static boolean isPalindrome(String s) { if (s == null || s.leng

2020-06-19 12:17:17 180

原创 每日一道算法题LeetCode1028:Recover a Tree From Preorder Traversal(从先序遍历还原二叉树)

从先序遍历还原二叉树题目分析题解递归总结题目我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。题目链接:link.分析又是一个二叉树相关的题目,如果写了前天的题目,这道题应该比较容易。本题给出一个字符串,返回根节

2020-06-18 20:16:31 203

原创 每日一道算法题Leetcode1014:Best Sightseeing Pair(最佳观光组合)

最佳观光组合题目分析题解暴力求解枚举优化总结题目给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。链接:link.分析题目要求得到 ==A[i] + A[j] + i - j(i < j)==的最大值,首先暴力两重循环肯定可以解决。但是再进一步想一想,我们可以将式

2020-06-17 11:37:57 192

原创 每日一道算法题LeetCode297:Serialize and Deserialize Binary Tree(二叉树的序列化与反序列化)

二叉树的序列化与反序列化题目分析题解准备递归(先序遍历)总结题目序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示: 这与 LeetCode 目前使用的方式一致,详情请参阅 LeetCode 序列

2020-06-16 16:19:53 163

原创 每日一道算法题LeetCode14:Longest Common Prefix(最长公共前缀)

最长公共前缀题目分析题解纵向比较(V1)纵向比较(V2)分治法二分法总结题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。题目链接: link.分析题目并不难,函数输入为一个字符串数组,输出为一个字符串,要求这个字符串是最长的公共前缀,题目的解法多样,有横向比较,纵向比较(最容易想到),还有分治法,二分法。题解纵向比较(V1)这个解法比较容易想到,先来展示第一个版本: public static String longestCommonPre

2020-06-15 11:14:12 163

原创 每日一道算法题LeetCode1300:Sum of Mutated Array Closest to Target(转变数组后最接近目标值的数组和)

转变数组后最接近目标值的数组和题目分析题解排序后遍历枚举+二分查找总结题目题目:给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。题目链接: link.分析提供一个数组,返回一个值res,使当把数组里的每一个大于res

2020-06-14 22:57:31 252

原创 每日一道算法题LeetCode70:Climbing Stairs(爬楼梯)

这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录

2020-06-13 21:54:39 222

原创 每日一道算法题LeetCode15:3Sum(三数之和)

三数之和题目分析题解暴力法双指针总结题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。分析这个题实际上有两个要求,首先要找到三个数和为0,其次不包含重复的三元组,其实我倒觉得第一个要求并不难,去重反而较为麻烦题解暴力法对于这种题,暴力法永远都是可以完成的,要有三个数的和为0?那就三重循环呗。可是,当用到了三重循环,一般LeetCode都是

2020-06-12 22:51:23 339

原创 每日一道算法题LeetCode739:Daily Temperature(每日温度)

每日温度题目分析题解暴力求解递减栈暴力求解改进总结题目leetcode 739题目链接:link.请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值

2020-06-11 21:04:40 383

原创 java实现十大经典排序算法(二)

java实现十大排序算法总结(二)归并排序计数排序三级目录归并排序算法思想:归并排序采用分治的思想,先将数组进行拆分成一个个子序列,直到拆到只剩一个元素,然后再进行有序合并,最后合并成一个有序的数组。时间复杂度: // 归并排序 public static void MergeSort(SortArray arr,int low, int high){ if(low>=high) return; int mid = (low+high)/2;

2020-06-08 21:42:31 138

原创 java实现十大经典排序算法(一)

java实现十大排序算法总结(一)介绍准备工作选择排序冒泡排序如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入介绍今天在刷LeetCode时想写一个排序算法,结果憋了半天没写出来,想想有好久没有写排序算法了,就来系统地再回顾一遍,以前一直是白嫖别人的博客,这次自己写一个

2020-06-07 23:05:25 223

空空如也

空空如也

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

TA关注的人

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