自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分割整数构成字母字符串(动态规划)

分割整数构成字母字符串(动态规划)题目:一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解释:...

2020-02-27 13:53:34 629

原创 Java实现二叉树的递归、非递归,前序遍历、中序遍历、后序遍历;以及层次遍历

Java实现二叉树的递归、非递归,前序遍历、中序遍历、后序遍历;以及层次遍历递归前序遍历ArrayList<Integer> list = new ArrayList();public ArrayList<Integer> preOrder(TreeNode root) { if (root != null) { list.add(roo...

2020-02-17 15:24:06 295

原创 Java实现八大排序算法,以及这些排序算法时间复杂度、空间复杂度、稳定性等比较

Java实现八大排序算法,以及这些排序算法时间复杂度、空间复杂度、稳定性等比较冒泡排序 public void sort(int[] arr) { for (int i = 0; i < arr.length; i++) { int temp = 0; for (int j = 0; j < arr.length ...

2020-02-17 15:23:25 516

原创 Java中拷贝数组的三种方式

Java中拷贝数组的三种方式一.Arrays.copyOf(datatype[] srcArray, int length)其中,srcArray 表示要进行复制的数组,length 表示复制后的新数组的长度。使用这种方法复制数组时,默认从原数组的第一个元素(索引值为 0)开始复制,目标数组的长度将为 length。如果 length 大于 srcArray.length,则目标数组中采用...

2020-01-20 16:20:30 621

原创 分布式系统入门概念理解

分布式系统概念理解参考链接:用大白话聊聊分布式系统https://waylau.com/talk-about-distributed-system/

2019-12-10 17:18:42 220

原创 动态规划----编辑距离

给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符思路:利用动态规划的思想,新建一个dp[m + 1][n + 1]数组,dp[i][j]表示word1中前 i 个字符和word2中前j个字符的最少操作数,那么dp[i][j]依赖于dp[i - 1][j - 1...

2019-11-30 14:13:44 138

原创 所有股票问题----例题总结

1.最佳买卖股票时机–含冷冻期–相当于无穷此交易次数给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出:...

2019-11-27 19:22:46 446

转载 所有股票问题的思路----本质

一、穷举框架比如说这个问题,每天都有三种「选择」:买入、卖出、无操作,我们用 buy, sell, rest 表示这三种选择。但问题是,并不是每天都可以任意选择这三种选择的,因为 sell 必须在 buy 之后,buy 必须在 sell 之后。那么 rest 操作还应该分两种状态,一种是 buy 之后的 rest(持有了股票),一种是 sell 之后的 rest(没有持有股票)。而且别忘了,我们...

2019-11-27 11:44:59 164

原创 背包问题----单词拆分

给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。示例:示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "app...

2019-11-26 20:12:40 301

原创 0-1背包问题-----目标和

给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释: -1+1+1+1+1 = 3+1-1+1+1+1 = 3+...

2019-11-24 17:03:48 329

原创 0-1背包问题,以及空间优化

什么是0-1背包问题?有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。定义一个二维数组 dp 存储最大价值,其中 dp[ i ][ j ] 表示前 i 件物品体积不超过 j 的情况下能达到的最大价值。设第 i 件物品体积为 w,价值为 v,根据第 i 件物品是否添加到背包中,可以分两种情况讨论:第 i 件物品没添加到背包,总体积不超过 j...

2019-11-24 16:22:01 349

原创 分割等和子集

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.思路:1.首先求数组总和sum,如果sum为奇数,那么肯定...

2019-11-24 10:05:20 362

原创 最长摆动序列---如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。 例如, [1,7,4,9,2,5

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。示例 1:输入: [1,7,4,9,2,5]输出: 6 解释: 整个序列均为摆动序列。示例 2:输入: [1,17,5,10,13,15,10,5,16,8]输出: 7解释: 这个序列包含几个长度为 7 摆动序列,其中一个可为[1,1...

2019-11-23 21:41:37 802

转载 搞懂什么叫进程/线程、同步/异步、阻塞/非阻塞、并发/并行

原文链接:https://www.cnblogs.com/mhq-martin/p/9035640.html一.基本概念1.进程与线程进程(Process):是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间...

2019-11-18 15:15:37 687

原创 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。思路:第一种思路:当分解式中拆分成4以上时,比如5,那么再次拆分为 2 * 3 = ...

2019-11-18 11:25:45 7088 1

原创 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。

如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7示例:A = [1, 2, 3, 4]返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4...

2019-11-17 19:42:11 1271

原创 从另一个角度理解Java中的反射

从另一个角度理解Java中的反射主要内容:JVM是如何构建一个实例的.class文件类加载器Class类反射APIJVM是如何构建一个实例的假设main方法中有以下代码:Person p = new Person();会经历以下这个过程:通过new创建实例和反射创建实例,都绕不开Class对象。.class文件有人用编辑器打开.class文件看过吗?比如我现在写一个...

2019-11-14 22:50:09 173

转载 java中的类加载器

Java中的类加载器面试官:请说说你理解的类加载器我:通过一个类的全限定名来获取描述此类的二进制字节流的这个动作,放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个类动作的代码模块成为“类加载器”面试官:说说有哪几种类加载器,他们的职责分别是什么,他们之前存在什么样的约定我:类加载的结构如下:BootstrapClassLoader:启动类类加载器,它...

2019-11-14 16:43:39 215

原创 数独问题---编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗

编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。思路:同样是采用回溯法,用三个数组,分别保存每一次填完数字之后,所在行,列,小方块的记录。并且数组长度都为 int[9][10],设置这种长度的原...

2019-11-12 10:01:55 2218

原创 N皇后问题-n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。相互攻击就是说:在同一行、同一列或者在同一斜线方向时,不能同时存在两个皇后。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...Q", ".Q...

2019-11-11 20:54:21 4502

原创 给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如

给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。思路:m > 1,即最少剪一刀。我们定义长度为n的绳子剪切后的最大乘积为f(n),剪了一刀后,f...

2019-11-10 09:58:19 4833 3

原创 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[ ...

2019-11-09 23:23:36 2394 1

原创 给定一个没有重复数字的序列,返回其所有可能的全排列。

给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路:用一个boolean[] visited数组标记未被访问的位置,然后for循环遍历这个数组,找到还没有被访问过的位置,加入队列。class Solution { List...

2019-11-08 21:15:06 3190

原创 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].思路:利用回溯法,找到第一个数字,对应的字符串,然后依次遍历,并且递归调用回溯方法。class Solutio...

2019-11-08 12:06:56 2793

原创 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。 规定水流只能按照上、下、左、右四个方向流动,且只能从

给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。给定下面的 5x5 矩阵: 太平洋 ~ ~ ~ ~ ~ ...

2019-11-07 21:25:33 365

原创 最长上升子序列

给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。思路:直接看下面的图和代码:class Solution { public int lengthOfLIS(int[] nums) { int[] dp = new in...

2019-11-05 10:52:15 144

原创 583-两个字符串的删除操作

给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。示例 1:输入: “sea”, “eat”输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"方法 3:最长公共子序列 - 动态规划 [Accepted]算法另一个获得 lcs 值的办法是动态规划。我们来看看它的实现...

2019-11-05 10:08:33 309

转载 面试中该如何回答,面试官问的“还有什么问题问我吗?”

下面分别就一面、二面、三面、HR面、CTO或Boss面,自己当时的问题,做一下总结:一面二面面试官(一面面试官一般是小组负责人或是团队负责人,二面面试官可能是部门负责人):1、如果不清楚他们是做什么的,可以问问他们主要是做什么的,主要负责哪块?2、团队规模有多大,移动端有多少人、Android端有多少人、测试怎么测等?3、如果我入职了,可能会负责哪块,主要做什么?4、团队以后想扩大到多...

2019-11-04 12:17:49 702

原创 面试中可以问面试官的问题

面试中,可以问面试官的问题1、不要直接说“我没有问题了”这样回答有2个负面影响:第一,你居然不想知道详细的、切身利益相关的、在公司网站和媒体无法获知的情况?这可能会让面试官认为你对这个职位的兴趣并不大。第二,很多公司都非常注重员工的个性和创新能力,回答“没问题”,可能会让面试官认为你是一个“没想法”的人,给你贴上否定的标签。2、一定不能问很容易在网上搜到答案的问题,如业务,产品千万不要...

2019-11-04 12:11:56 9517

原创 给定一个二叉树,原地将它展开为链表。

给定一个二叉树,原地将它展开为链表。例如,给定二叉树1/ 2 5/ \ 3 4 6将其展开为:123456思路:可以发现展开的顺序其实就是二叉树的先序遍历。算法和 94 题中序遍历的 Morris 算法有些神似,我们需要两步完成这道题。将左子树插入到右子树的地方将原来的右子树接到左子树的最右边节点考虑新的右子树的根节点,一直重复上边的...

2019-11-03 13:27:44 761

转载 浅谈进程、线程和协程三者之间的区别和联系

一.进程、线程、协程1.进程经典定义:一个执行中程序的实例。系统中的每个程序都运行在某个进程的上下文中。(-摘自 CSAPP)进程是系统资源分配的最小单位2.线程线程(thread)线程就是运行在进程上下文中的逻辑流。线程是操作系统能够进行运算调度的最小单位。3.协程相对子例程而言,协程更为一般和灵活,但在实践中使用没有子例程那样广泛。什么叫子例程:是一个大型程序中的某部分代码...

2019-11-02 19:50:57 594

原创 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.思路:对问题建模:将整个问题变成一个图论问题。从n到0,每个数字代表一个节点;;如果两个数 x...

2019-11-02 10:57:10 5816

原创 设计模式链接大全

设计模式链接https://blog.csdn.net/jason0539/article/details/44956775

2019-10-31 16:01:04 176

原创 工厂模式

一 工厂模式介绍1.1 工厂模式的分类(1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory Method Pattern)。(2)工厂方法(Factory Method)模式,又称多态性工厂(Polymorphic Factory)模式或虚拟构造子(Virtual Constructor)模式;(3)抽象工厂(Abstract Factor...

2019-10-31 15:56:57 112

原创 在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。 一条从左上角到右下角、长度为 k 返回这条从左上角到右下角的最短畅通路径的长度。如果不存在这样的路径,返回 -1 。

在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。 一条从左上角到右下角、长度为 k 返回这条从左上角到右下角的最短畅通路径的长度。如果不存在这样的路径,返回 -1 。利用BFS的思想,并且注意开始的字符不为0的情况import javafx.util.Pair;class Solution { public static int shortest...

2019-10-29 12:20:27 1452

转载 数据库中的范式(第一范式、第二范式、第三范式)

数据库中的范式目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式...

2019-10-28 16:29:51 2908

转载 Mysql锁机制

一.锁分类(按照锁的粒度分类)可以按照锁的粒度把数据库锁分为表级锁、行级锁表级锁Mysql中锁定 粒度最大 的一种锁,对当前操作的整张表加锁,实现简单 ,资源消耗也比较少,加锁快,不会出现死锁 。其锁定粒度最大,触发锁冲突的概率最高,并发度最低,MyISAM和 InnoDB引擎都支持表级锁。行级锁Mysql中锁定 粒度最小 的一种锁,只针对当前操作的行进行加锁。 行级锁能大大减少数据库...

2019-10-28 11:18:47 168

原创 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。 来源:力扣(LeetCode) 链接

给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例 2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释: (...

2019-10-25 20:13:21 3132

原创 Mybatis自动生成id,以及insert语句什么时候需要写id字段?什么时候不需要写id字段?

mybatis可以使用useGeneratedKeys来自动生成id(其他数字的值也一样可以): <insert id="save" parameterType="UserAlias" useGeneratedKeys="true" keyProperty="id"> INSERT INTO userinfo(username,age) V...

2019-10-20 15:40:35 5923

转载 宏观上掌握Mybatis框架

mybatis框架是一个持久层框架,是Apache下的顶级项目。mybatis可以让开发者的主要精力放在sql上,通过mybatis提供的映射方式,自由灵活的生成满足需要的sql语句。MyBatis可以将传向preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象(输出映射)。  下面在整体上把握一下mybatis框架,总结一下mybatis的执行流程。...

2019-10-20 15:11:20 140

空空如也

空空如也

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

TA关注的人

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