
Java基础
主要回顾Java基础篇,边学习,边巩固。
枕上~诗书闲
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单调栈-解决临近位置的数在哪问题
单调栈一种特别设计的栈结构,为了解决如下的问题:给定一个可能含有重复值的数组arr,i位置的数一定存在如下两个信息1)arr[i]的左侧离i最近并且小于(或者大于)arr[i]的数在哪?2)arr[i]的右侧离i最近并且小于(或者大于)arr[i]的数在哪? // arr = [ 3, 1, 2, 3] // 0 1 2 3 // [ // 0 : [-1, 1] // 1 : [-1, -1] // 2 : [ 1, -1] //原创 2021-11-29 18:56:17 · 173 阅读 · 0 评论 -
算法-并查集-岛屿问题
这道题是LeetCode原题https://leetcode.com/problems/number-of-islands/题意:给定一个二维数组表,只可能会有0和1的位置,求上下左右都为1的一个整块数量。像下图就为2个岛数量递归方式public static int numIslands(char[][] board) { int islands = 0; for (int i = 0; i < board.length; i++) { for (int j = 0原创 2021-11-26 16:01:09 · 441 阅读 · 0 评论 -
贪心算法-做项目获得的最大钱数
题意:输入: 正数数组costs、正数数组profits、正数K、正数Mcosts[i]表示i号项目的花费profits[i]表示i号项目在扣除花费之后还能挣到的钱(利润)K表示你只能串行的最多做k个项目M表示你初始的资金说明: 每做完一个项目,马上获得的收益,可以支持你去做下一个项目。不能并行的做项目。输出:你最后获得的最大钱数。 // 最多K个项目 // W是初始资金 // Profits[]利润 Capital[]花费 一定等长 // 返回最终最大的资金 // 串行的进行,不能原创 2021-11-25 16:53:39 · 322 阅读 · 0 评论 -
二叉树中最大的二叉搜索子树的大小
二叉树中最大的二叉搜索子树的大小给定一棵二叉树的头节点head,返回这颗二叉树中最大的二叉搜索子树的头节点分析可能性:与X头无关:X左树最大可能性X右树最大可能性与X头有关:以X为头,整体全是BST搜索二叉树,X左为BST和X右为BSTX左树的最大值和X右树的最小值X左树的最大Size和X右树的最大Size判断二叉树是不是搜索二叉树原则:X左树是BST (BST搜索二叉树)X右树是BSTX左树最大伯max < XX右树景小值min > X原创 2021-11-24 16:00:00 · 197 阅读 · 0 评论 -
二叉树-中序遍历-面试技巧题
题目:拿出纸和笔,纸条。将纸张对折,会有凹下去和凸起来的对折线印记。将凹下去和凸起来的顺序打印出来 public static void f(int i, int N, boolean down) { // 超过层数就直接返回 if (i > N) { return; } f(i + 1, N, true); // 凹下去的其实就是左子树,凸起来的其实就是右子树 // 打印这颗数 System.out.print(down ? "凹 " : "凸 ");原创 2021-11-23 16:17:48 · 268 阅读 · 0 评论 -
每日一题:字符串系列---输出:abbccd。 abbccd“压缩后为“a1b2c2d1“,比原字符串长度更长
输出:abbccd。 abbccd"压缩后为"a1b2c2d1",比原字符串长度更长public class Test2 { public static void main(String[] args) { System.out.println(compressString("aabcccccaaa"));//输出:a2b1c5a3 System.out.println(compressString("abbccd")); //输出:abbccd。 abbccd原创 2021-03-19 17:47:23 · 391 阅读 · 0 评论 -
每日一题:字符串系列---判断一个字符串是否是对称字符串 * 例如“abc“不是对称字符串,“aba“、“abba“、“aaa“、“mnanm“是对称字符串
判断一个字符串是否是对称字符串 * 例如"abc"不是对称字符串,“aba”、“abba”、“aaa”、"mnanm"是对称字符串public class Test{ public static void main(String[] args) { System.out.println(isPalindrome(""));//false System.out.println(isPalindrome("a"));//true System.out.p原创 2021-03-19 17:36:07 · 919 阅读 · 0 评论 -
二叉树的前序、中序、后序
一、概念二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。二、特点A:根节点、B:左节点、C:右节点;前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC (先左后根最后右);后序顺序是BCA(先左后右最后根)。三、图四、代码实现第一步: 节点实体类package node.tree;public class Node { private String value; private Node left; private原创 2021-01-23 10:32:35 · 21386 阅读 · 1 评论 -
哈夫曼树详解(上)
一、什么是哈夫曼树给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。简介<路径、长度、权重二、哈夫曼树特点哈夫曼树的特点:没有度为1的结点(每个非叶子结点都是由两个最小值的结点构成)n个叶子结点的哈夫曼树总共有2n-1个结点n0:叶结点总数 n1:只有一个儿子的结点总数 n2:有2个儿子的结点总数原创 2021-01-22 15:48:08 · 3307 阅读 · 0 评论 -
校验规则用配置的方式实现
前言平常我们做校验判断的话都是通过传参或者是查库里面是否需要有相关联的校验来判断的。但是当我们系统真正用在很多地方的时候,有些地方他的需求和规定又不是一样的,对此,程序猿们又必须满足客户的一切需求,于是就想到了利用配置的形式来做,代码的话就通过反射得到对应的值,看是否需要校验,这样就满足各位客户爸爸们的要求了。好了,废话不多将,直接将代码和思路吧配置中心的配置:这里是可以配置多个的,具体根据情况来定#新绩效校验 budget.new.goal.check=true#绩效规则goal.check原创 2021-01-14 23:53:47 · 1638 阅读 · 0 评论 -
定时任务使用redis控制节点代码实现
最近公司需要推送一些信息给其他系统,因为数据数据量多,所以可以选择手动推送,也可以自动推送,说白了,就是做个定时任务推送给他们,哪有啥想的,搞呗,打工人,话不多说,直接上代码。 /** * 推送部门整体绩效送定时任务 * @author Mr.WuJie * @since 2020-9-22 * 5分钟走一遍 定时任务 */ @Scheduled(cron = "0 0/5 * * * ?") public void perf.原创 2020-12-31 21:04:56 · 444 阅读 · 0 评论 -
MySQL保留制加字段的时候可能会遇到的问题
在MySQL建表或者是加字段的时候,可能会出现保留制的情况出现其实就是我们在添加某个字段的时候与数据库里面的关键字一致了,这时候我们是需要加上 " ` " 的,因为这样MySQL他才能识别出来这是一个字段的列名。注意,是反引号不是单引号,回车键左边那个是单引号。还有我们在数据库设计的时候往往会添加几个预留字段或者是备用字段,像这种一般最好不要加太多,因为如果加多了肯能会造成浪费空间名字不一致,不知道该字段干嘛用的而且不一定有用所以这在设计的时候就需要设计好,如果需要可以添加适当的字段当做原创 2020-12-12 12:01:34 · 173 阅读 · 0 评论 -
expetced begin_array but was string at line 1 colum1 path json转换错误
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $原因是数据的前后多了[ ]中括号。String json= "[{name:'name0',age:0}]";将前后的中括号去掉就好了// 修改后{name:'name0',age:0},要去掉前后的括号。String json= "{name:'name0',age:0}";...原创 2020-12-12 11:43:11 · 1728 阅读 · 0 评论 -
Java字符串拼接写法 joiner.on
1、 joiner.onString result = Joiner.on(",").join(list);这种写法最简单,直接Joiner.on 拼接 “,” “#” “、”_" “-” 之类的也是最常用的方法2、 StringBuilderStringBuilder strBur = new StringBuilder();list.forEach(val -> { strBur.append(val).append("#");});strBur.toString();原创 2020-12-12 11:32:37 · 9783 阅读 · 3 评论 -
JSON格式转化
com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串、JSON对象,JSON串转成java对象、JSON对象,JSON对象转换Java对象、JSON串1、Java对象–>JSON对象(JSONObject)JSONObject.toJSON(Java对象实例)public class JSON2JavaTest{ public static void main(String[] args) { St.原创 2020-12-11 23:51:56 · 13769 阅读 · 0 评论 -
JAVA8新特性用法
JAVA8新特性各种用法详解访问接口的默认方法Lambda表达式中是无法访问到默认方法的,以下代码将无法编译:复制代码 代码如下:Formula formula = (a) -> sqrt( a * 100);Built-in Functional InterfacesJDK 1.8 API包含了很多内建的函数式接口,在老Java中常用到的比如Comparator或者Runn...原创 2020-12-11 23:37:53 · 368 阅读 · 0 评论 -
Java BigDecimal总结使用场景
1、应用场景介绍2、BigDecimal方法的使用格式化及使用https://www.jianshu.com/p/2947868d76eb 格式话内容使用的方法使用时遇到过的问题1、BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的,异常如下:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.原创 2020-11-22 09:58:34 · 1534 阅读 · 0 评论