- 博客(74)
- 收藏
- 关注
原创 LintCode 578 · 最近公共祖先 III
题目描述方法一:分治法(递归)分治法的思想就是在每一层分为左右子树进行寻找,左右子树返回的leftNode和rightNode如果都不为空,则说明A和B在左右子树各有一个,则返回当前节点;如果leftNode和rightNode有一个为空一个不为空,则有两种情况,第一种情况就是A和B都是一边子树,另一边子树两个节点都没找到,第二种情况就是A或者B中的某一个在某一子树,而另外一个子树中两个节点都没找到,为了区分这两种情况,我们使用foundA和foundB来记录两个节点是否被找到的状态。Java代
2021-07-08 14:17:55
246
转载 【Lintcode】390. Find Peak Element II
题目描述法1:对行二分。我们选取A AA的中间一行,并寻找该行的最大值,如果其为峰值,则直接返回其坐标;否则的话要么其上方比其更大,要么其下方比其更大。如果其上方比其更大,那么A AA的上半部分就一定有一个峰值(证明很简单,顺着这个值,每次走向与其相邻的最大值,由于上半部分数字只有有限个,这样走有限步一定会停下来,并且一定不会停在边界上,也不会走到下半部分,因为我们是从中间行的最大值出发的。停下来的地方就是峰值)。这样我们就将问题规模缩小成为了一半。如此缩小下去即能找到峰值坐标。代码如下:imp
2021-07-06 11:05:23
233
转载 Java 和 Hadoop 序列化机制浅讲
1.序列化 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程(字节流)。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 通常来说有三个用途: 持久化:对象可以被存储到磁盘上通信:对象可以通过网络进行传输拷贝、克隆:可以通过将某一对象序列化到内存的缓冲区,然后通过反序列化生成该对象的一个深拷贝(破解单例模式的一种方法) 2.Java序列化机...
2021-07-02 14:32:01
329
原创 二分法例题 LintCode62/63/159/160 搜索旋转排序数组及变体
题目描述解题思路本题不同于普通的升序数组,虽然数组内部是按序排列的,但是数组以某个元素作为支点进行了旋转,那么就不能直接使用二分查找,需要分情况进行讨论。这个时候最好的办法就是在纸上画画图,将可能发生的情况都罗列出来,类似于做数学题的分类讨论,做到不重不漏。situation1A[mid] > A[start](1) A[start] < target < A[mid]end = mid;(2) target > A[mid]或者target < A
2021-06-30 11:39:29
147
1
原创 记一个二分查找的算法模板(Java版)
先上代码 public int binarySearch(int[] nums, int target) { if (nums == null || nums.length == 0) return -1; int start = 0, end = nums.length - 1, mid; while (start + 1 < end) { mid = start + (end - start)
2021-06-28 15:06:40
172
原创 LintCode13 · 字符串查找(KMP算法实现)
题目描述解法一:暴力求解暴力求解就不多说什么废话了,直接上代码了 public int strStr(String source, String target) { char[] s = source.toCharArray(); char[] t = target.toCharArray(); int m = s.length; int n = t.length; int i = 0, j = 0;
2021-06-27 21:10:44
184
2
原创 LintCode 436 · Maximal Square(最大正方形)
题目描述直觉动态规划组成部分一:确定状态子问题动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现 public int maxSquare(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; int[][] f = new int[m][n]; int res
2021-06-26 10:39:54
97
原创 LintCode 622 · Frog Jump(青蛙跳)
题目描述动态规划组成部分一:确定状态子问题动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况动态规划四:计算顺序Java代码实现 public boolean canCross(int[] stones) { int n = stones.length; boolean[][] f = new boolean[n][n]; f[0][0] = true; List<Integer>
2021-06-25 21:23:43
176
2
原创 字典树例题 LintCode623 · K步编辑
题目描述题目分析字母树动态规划组成部分一:确定状态动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现 char[] tar = null; int K = 0; int n = 0; List<String> res = null; public List<String> kDistance(String[] words, String target, int k) {
2021-06-24 14:06:51
188
原创 背包问题变种 LintCode89 k Sum(K数之和)
题目描述题目分析动态规划组成部分一:确定状态动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现 public int kSum(int[] A, int K, int target) { int len = A.length; int[][][] f = new int[len + 1][K + 1][target + 1]; f[0][0][0] = 1;
2021-06-22 00:40:32
218
原创 LintCode91 Minimum Adjustment Cost(最小调整代价)
题目描述动态规划组成部分一:确定状态设修改后的数组为B。最后一步:将A改成B,A[n-1]改成X,这一步代价是|A[n-1]-X|。-需要确保|X-B[n-2]|<=target前面n-1个元素A[0…n-2]改成B[0…n-2],需要知道最小代价,并确保B[0…n-2]中任意两个相邻的元素的差不超过target但是有一个问题,改A[n-1]时不知道B[n-2]是多少只有知道了B[n-2],才能确定A[n-1]能改成(B[n-2]-target,B[n-2]+target)
2021-06-21 23:46:06
268
1
原创 类多重背包问题例题 Lintcode668 Ones and Zeroes(一和零)
题目描述动态规划组成部分一:确定状态动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现 public int findMaxForm(String[] strs, int m, int n) { int len = strs.length; int[] zero = new int[len]; int[] one = new int[len]; char[
2021-06-21 18:48:07
100
原创 双序列型动态规划例题6 Lintcode192 (通配符匹配)Wildcard Matching
题目描述动态规划组成部分一:确定状态动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现 public boolean isMatch(String s, String p) { int m = s.length(); int n = p.length(); char[] ch1 = s.toCharArray(); char[] ch2 = p.toC
2021-06-21 11:17:54
113
原创 双序列型动态规划例题5 Lintcode154 (正则表达式匹配)Regular Expression Matching
题目描述动态规划组成部分一:确定状态子问题动态规划二:转移方程动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现 public boolean isMatch(String s, String p) { int m = s.length(); int n = p.length(); char[] ch1 = s.toCharArray(); char[] ch2 = p.toCh
2021-06-20 16:37:56
101
原创 双序列型动态规划例题4 Lintcode118 (不同的子序列)Distinct Subsequence
题目描述题目分析动态规划组成部分一:确定状态子问题动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况注意:这里的f[i][0]=1不是凭空设置的,而是根据实际情况和转移方程计算出来的,这是一个初始条件。动态规划组成部分四:计算顺序Java代码实现 public int numDistinct(String S, String T) { int m = S.length(); int n = T.length();
2021-06-18 15:56:39
148
原创 双序列型动态规划例题3 Lintcode119 (编辑距离)Edit Distance
题目描述动态规划组成部分一:确定状态子问题动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现: public int minDistance(String word1, String word2) { int m = word1.length(); int n = word2.length(); char[] ch1 = word1.toCharArray(
2021-06-18 14:21:18
123
原创 双序列型动态规划例题2 Lintcode29 Interleaving String
题目描述动态规划组成部分一:确定状态子问题动态规划组成部分二:转移方程动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现 public boolean isInterleave(String s1, String s2, String s3) { int m = s1.length(); int n = s2.length(); if (m + n != s3.length())
2021-06-18 12:50:07
99
原创 双序列型动态规划例题1 Lintcode77Longest Common Subsequence
题目描述动态规划组成部分一:确定状态子问题动态规划组成部分三:初始条件和边界情况动态规划组成部分四:计算顺序Java代码实现: public int longestCommonSubsequence(String A, String B) { int m = A.length(); int n = B.length(); char[] a = A.toCharArray(); char[] b = B.t
2021-06-17 21:21:19
130
转载 lintcode200 · 最长回文子串(马拉车算法)
题目描述Manacher’s Algorithm 马拉车算法马拉车算法 Manacher‘s Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性。首先我们解决下奇数和偶数的问题,在每个字符间插入"#",并且为了使得扩展的过程中,到边界后自动结束,在两端分别插入 “^” 和 “$”,两个不可能在字符串中出现的字符,这样中心扩展的时候,判断两端字符是否相等的时候,如果到了边界就一定会不相等,从
2021-06-17 19:32:20
161
原创 Hard!168 · 吹气球
题目描述有n个气球,编号为0到n-1,每个气球都有一个分数,存在nums数组中。每次吹气球i可以得到的分数为 nums[left] * nums[i] * nums[right],left和right分别表示i气球相邻的两个气球。当i气球被吹爆后,其左右两气球即为相邻。要求吹爆所有气球,得到最多的分数。注意:你可以假设nums[-1] = nums[n] = 1。-1和n位置上的气球不真实存在,因此不能吹爆它们。0 ≤ n ≤ 500, 0 ≤ nums[i] ≤ 100样例样例1样例2
2021-06-10 17:26:49
152
原创 Hard! lintcode430 · 攀爬字符串
题目描述给定一个字符串 s, 将其递归地分割成两个非空子字符串, 然后可以得到一棵二叉树.下面是 s = “great” 可能得到的一棵二叉树:在攀爬字符串的过程中, 我们可以选择其中任意一个非叶节点, 交换该节点的两个子节点.例如,我们选择了 “gr” 节点, 并将该节点的两个子节点进行交换, 并且将祖先节点对应的子串部分也交换, 最终得到了 “rgeat”. 我们认为 “rgeat” 是 “great” 的一个攀爬字符串.类似地, 如果我们继续将其节点 “eat” 和 “at” 的子节点交
2021-06-09 13:48:18
134
转载 jps不是内部或外部命令
JPS不是内部或外部命令 需要把Path环境变量中的JDK和JRE的bin分开 原来: 更改后: 终端可以使用jps命令:
2021-04-22 00:38:47
1563
转载 [Linux]常用命令与目录全拼
命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽子打包管理器 pwd:print work directory 打印当前目录 显示出当前工作目录的绝对路径 ps: process status(进程状态,类似于windows的任务管理器) 常用参数:-auxf ps -auxf 显示进程状态 df: di...
2021-04-12 15:55:04
204
原创 背包问题总结(1到10)
背包问题一直都是动态规划中的经典题目,下面通过这篇博文,系统的梳理一下解决背包问题的思路和要点;主要是好记性不如烂笔头嘛,怕自己忘得快,还能翻出来这篇文章来复习一下(注:本文的所有解决思路均为动态规划,不涉及贪心法等算法)三种背包的概念区分首先,背包问题的题型逃不出三种,那就是01背包问题、完全背包问题和多重背包问题,我们先来了解一下这三种题型的区别在哪里01背包(ZeroOnePack)有N件物品和一个容量为V的背包。每种物品均只有一件。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装
2021-04-11 20:30:13
708
2
原创 leetcode_动态规划_入门总结
四个组成部分确定状态研究最优策略的最后一步化为子问题转移方程根据子问题定义直接得到初始条件和边界情况细心,考虑周全计算顺序利用之前的计算结果通常一维从小到大,二维从上到下、从左到右...
2021-03-22 22:47:54
207
原创 leetcode_3_无重复字符的最长子串
思路:解决此类问题的算法一般是应用滑动窗口,设置一个start作为窗口的左界,end作为窗口的右界,如下图所示:同时需要一个Map<Character,Integer>来保存特定字符最近出现的索引。在遍历字符串的每个字符时,都要对其对应的val进行更新,对当前已知的最长字串长度进行更新,如果是与之前重复过的字符,则还要更新滑动窗口的左界start,将start调整为上一次遇到这个字符的下一个位置,这样保证当前滑动窗口内不存在重复字符。下面是具体的代码:public int lengt.
2021-03-18 15:50:24
100
原创 搭建hive集群(centos7+Mysql8.0+Hive2.3.7)
首先放出整个集群的拓扑结构然后是本文使用的版本号centos7hadoop2.8.5hbasezookeeper3.5.8jdk1.8.0-191hive2.3.7mysql8.0
2020-12-25 22:23:04
621
2
转载 YARN的架构
6.1 YARN的架构 下图展示了基于YARN的集群的架构,这个集群的模块主要有以下5种类型。 资源管理器(Resource Manager,RM):每个集群里面都有一个RM守护进程,专门负责集群中可用资源的分配和管理。节点管理器(Node Manager,NM):每个节点都有一个NM守护进程,负责节点的本地资源管理。在RM中...
2020-10-23 15:28:58
406
转载 python中模块,包,库的区别和使用
模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块。 包:在模块之上的概念,为了方便管理而将文件进行打包。包目录下第一个文件便是 __init__.py,然后是一些模块文件和子目录,假如子目录中也有 __init__.py,那么它就是这个包的子包了。 常见的包结构: package_a├── __init__.py├── module_a1.py└── module_...
2020-09-25 14:15:35
343
转载 彻底明白Python package和模块
python 是通过module组织代码的,每一个module就是一个python文件,但是modules是通过package来组织的。如果我们自己写着玩,有的时候就是一两个Python文件在同级目录下,但是当我们开始尝试开发更为复杂的项目的时候,package这个概念的使用就有助于我们组织我们写的一个个modules。module的概念相对简单,所以不会再多说,主要是说一下package。Python packagepackage的定义很简单,在当面目录下有__init__.py文件的目录即为.
2020-09-25 13:50:27
361
转载 IntelliJ IDEA 代码补全
代码补全的方式有:Basic completion 基本补全 :Ctrl+SpaceSmart completion 智能补全:Ctrl+Shift+SpaceStatement completion 语句补全:Ctrl+Shift+EnterHippie completion : Alt+/Postfix code completion 后缀补全machine learning-assisted completion :新版本增加了机器学习辅助补全。它的作用是,利用机器学习模型在建议
2020-09-15 20:17:57
9986
转载 IntelliJ IDEA 之 呈现模式
写在前面IntelliJ Idea 为用户提供了多种呈现模式,在某些情况下,默认呈现方式有可能无法满足你的需求。例如上线之前会有一个代码评审的环节,Idea 默认展现出来的代码看上去会不舒服,因为 Idea 还会呈现除代码之外的内容:菜单栏、工具栏、导航栏等。题外话我是沂蒙山区的孩子,像音频里说的一样,现在乡下已经无法听到 “卖小鸡吆,卖小鸡吆” 的吆喝声了,连养鸡的农村人也越来越少了。主要内容+ 演示环境+ Idea 用户界面介绍+ Idea 全屏模式+ Idea 演示模式+ Idea 集中模.
2020-09-15 09:48:18
1002
原创 IDEA中.idea文件和.iml文件的作用
.idea文件夹Pycharm IntelliJ 等IDE用于存储版本控制信息、历史记录等配置信息的文件夹,可以不理会。我们也可以配置隐藏将其不显示。点击file->Settings->File types,在右下角的Ignore files and folders中可以将.idea隐藏。.iml文件iml文件时IntelliJ IDEA自动创建的模块文件,用于Java应用开发,存储一些模块开发相关的信息,比如一个Java组件,插件组件,Maven组件等等,还可以能会存储一些模块路径信息
2020-09-12 11:08:22
828
原创 命令行运行py代码提示ModuleNotFoundError: No module named ‘xxx‘解决方法
1.问题描述:有时候在Windows下的cmd命令行或者是在虚拟机的终端中,我们跑一个在pycharm等IDE中可以成功运行的py程序却会遇到问题,比如:这个程序我在pycharm中是可以跑通的,但是在终端中使用命令就出现了ModuleNotFoundError。2.问题分析提示自定义的模块不存在时,一般都是路径获取不正确导致未正常找到相应的模块,顺应这个思路看看哪些代码中涉及到模块路径我们自定义的模块,python都是通过搜索路径里面的路径逐个寻找的;找不到的话就说明搜索路径中不包含我们自定义
2020-08-20 16:15:33
4931
1
原创 python matplotlib 条形图的填充效果
写专利用的python里面的matplotlib画的条形图 ,最开始用的三种颜色来区分,如下图:然而被告知不行,只能用黑白的,其他颜色不能用,于是想到用灰度,如下图:然而又被告知,不行,不能用灰度,只能用条形框的填充格式进行区分,接近崩溃,百度了半天也没看到相关的帖子,后来终于找到了,先来看一下效果,源码贴在最后面。效果如下图:源码如下:import matplotlib.pyplot as plt import numpy as npfrom pylab import mplmpl.
2020-07-18 21:34:56
13310
9
转载 深度森林:常见Warning及解决方案
本人最近使用周志华的深度森林算法去解决一些问题,于是在github上下载了官方的Gcforest程序,下载地址:https://github.com/kingfengji/gcForest运行之后发现了一些Warning,有时会导致程序无法运行,下面给出两种常见的Warning和解决方案。1. FutureWarning (1) FutureWarning: Default solver wi...
2020-06-25 17:08:19
561
原创 tensorflow安装成功,import tensorflow 出现问题
在安装tensorflow完成后,import tensorflow as tf出现问题,问题如下:>>> import tensorflow as tfTraceback (most recent call last): File "I:\Anaconda3\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module> from tensorflow.python
2020-06-25 12:40:34
1979
转载 Pycharm 2018 虚拟环境创建及解释器的设置
Pycharm 2018下的解释器有:**Virtualenv: 项目文件夹下创建一个独立的虚拟环境Pipenv: pip包的一个管理模块Conda: conda环境下的解释器环境(新手建议选择第一个Virtualenv)下面以项目文件AAA来说明:创建一个AAA文件,并创建一个虚拟环境的解释器:**Inherit global site-packages 勾选上可以使用Anaconda解释器下自带的所有包只是使用该Anaconda解释器文件夹中的包,但是包并未复制AAA文件夹中的ve
2020-06-24 22:51:26
290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人