- 博客(70)
- 资源 (2)
- 收藏
- 关注

原创 java基础-增强for循环
增强for循环,比普通的for循环简洁多了,必须要熟练输出一维数组 String[] ni=new String[]{"国家","nih"}; for (String i : ni) { System.out.print(i+"\t"); }输出二维数组 for (int[] arr : dp) { for (int num : arr) { Sys
2020-11-11 15:26:41
170

原创 程序员的自我修养-知识点汇总
java基础:集合多线程创建(三种)生命周期(新建,就绪,运行,阻塞,死亡)控制(join,sleep,yield,改变优先级)同步 4种方式(临界区,互斥量,信号量,事件)7种方法(同步方法,同步代码块,volatile,重入锁,局部变量,阻塞队列,原子变量)通信(全局变量,消息,事件CEvent类)线程池相关类(threadlocal类,线程安全...
2019-11-09 16:40:59
274

原创 五大常用算法之三:动态规划
动态规划:动态规划(Dynamic Programming,简称DP),需要分解出问题的子结构以及通过子结构重新构造最优解。动态规划不像回溯法,有套路可以套用,动态规划需要大量练习,才能掌握规律。一般思路:1.判断问题的子结构(也可看作状态),当具有最优子结构时,就可能使用动态规划。2.求解重叠子问题。一个递归算法不断地调用同一问题,递归可以转化为查表从而利用子问题的解。(注意与分...
2018-05-01 11:43:31
338
原创 滑动窗口法的题目
目录最长不重复字串(连续)长度最小的子数组最大连续1的个数最长不重复字串(连续)如abcabcbb,最长长度为3,即“abc”,或“bca”等等,返回3. public int lengthOfLongestSubstring(String s) { char[] chars = s.toCharArray(); HashSet HashSet = new HashSet(); int maxLength = 0;
2022-05-08 19:43:07
189
原创 阿里Java开发手册解读
为什么会这样呢?因为表达式1或表达式2只要有一个是基本类型,那么另一个包装类型都要拆箱。然后赋给包装类型的result时,都要装箱。除非表达式1,2,被赋的值都是包装类型,才不牵涉拆装箱。而拆箱使用c.intVaule(),装箱使用Integer.vauleOf(c)所以,本身就是空的值,用c.intVaule(),肯定就空指针啦———————————————————————————————————————————HashMap里有这4个最主要的变量。size,loadInfacto..
2022-04-17 00:31:28
269
原创 链表有环(引申题:环在哪里)
public class Test { private static class ListNode { int value; ListNode next; } public static boolean hasCycle(ListNode head) { if (head == null || head.next == null) { return false; } ListN.
2022-03-10 00:08:23
122
原创 算法题:数组中重复的次数
1.我在面试中遇到过如下题目:一个String数组,输出出现次数最多的前三个以及次数,如 ababc,输出a:2,b:2,c:12.找出数组中曾经重复过的数字https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 ...
2022-03-10 00:02:22
252
原创 删除最外层的括号
这个也很简单,主要是在每次遍历到右括号的时候,从栈里pop()一个出来,如果此时栈为空,则说明找到了消解项。力扣 public String removeOuterParentheses(String s) { int start = 0; StringBuilder stringBuilder = new StringBuilder(); int len = s.length(); Stack stack = new Stac..
2022-02-23 19:23:15
172
原创 算法题:回文数
力扣 思路:用栈 public static boolean isPalindrome(int x) { if (x < 0) { return false; } if (x == 0) { return true; } //怎么取每位数字? String s = String.valueOf(x); int len =...
2022-02-23 14:21:39
177
原创 有效的括号
public boolean isValid(String s) { int len = s.length(); if (len % 2 != 0) { return false; } HashMap hashMap = new HashMap(); hashMap.put('{', '}'); hashMap.put('[', ']'); hashMap.put('('.
2022-02-23 11:10:25
401
原创 二叉树最近公共祖先
package Leetcode.ListNode;/** * @Author: YCKJ3803 * @Date: 2021/3/2 11:46 * @Description: */public class lowestCommonAncestor { private static class TreeNode { int value; TreeNode left; TreeNode right; } public s.
2021-03-02 21:39:33
320
原创 层序输出二叉树
package Leetcode;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;/** * @Author: YCKJ3803 * @Date: 2021/2/3 13:50 * @Description: 层序打印二叉树。这是非常简单的一题。就是用队列!!!!! * 先从队列中取出一个,再往队列插入左右节点。 */...
2021-03-02 17:55:55
387
原创 装jdk
首先从官网上下载jdk安装包,如果后缀 i586,则是32位的,大部分电脑不要选。我们要选后缀X64的,这才是64位电脑应该选的。双击jdk,一路next。装好之后,还会弹出让你安装jre。因为jdk自带jre,所以这个jre装不装都行。装好之后,用cmd去jdk目录下的bin,敲出java -version,有大量信息,则说明jdk安装成功,下面要按环境变量。新建一个系统变量JAVA_HOME ,变量值为D:\Program Files\Java\jdk1.8.0_251...
2020-09-08 20:03:13
145
原创 git使用教程
由于本文为自己而写,所以只写要注意的地方问题一:在github上创建了一个repositories,本地新建了一个项目。那么怎样让本地代码与远程仓库产生联系呢?以上图片可以说明一切了,有三种方式可以。第一种是全新的项目,手动创建。怎么可能?我们都是用idea自动创建项目的。这里采取第二种。在已经初始化的项目中,add到remote的仓库,再push上去。问题二:每个reposito...
2020-03-13 22:32:33
213
原创 反射
反射是JAVA开发的高级特性,官方概念如下:JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。其实就是,反射可以知道任意类或对象的属性和方法,比如,我建立了一个student类如下,内含公有,私有的属性和方法:package c...
2019-12-20 09:10:31
118
原创 SpringBoot+MyBatis搭建迷你小程序
本项目如下:maven的安装目录在哪?setting文件放在哪?仓库在哪?(分别为G:\Program Files (x86)\apache-maven-3.5.4\conf,与G:\Program Files (x86)\apache-maven-3.5.4\repository)dao层的设计:表设计:略实体类:getset方法快捷键:alt+insert,全选所有变量,构建g...
2019-12-07 15:15:09
141
原创 剑指offer 二维数组找目标值
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。规律:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束:如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每...
2019-12-06 14:19:30
269
原创 mysql篇---windows环境
1.windows环境下的mysql忘记密码了会很麻烦,试了好多种攻略都不行,只得重装。所以安装好后,要找个记事本写root密码。2.如果重装的话,直接到mysql官网,下载最新版https://dev.mysql.com/downloads/installer/然后逐步安装好,下面这一篇较好:https://www.runoob.com/w3cnote/windows10-mysql...
2019-12-02 15:33:23
137
原创 二分查找
二分查找是最简单的查找,本科阶段数据结构就应该学好的,现在来炒剩饭,重打基础。二分查找,必须是有序的,如果数组不是有序,则先排序,再查找。递归的二分查找是均分的,每次用中心点与目标值比较,再递归操作。递归的代码如下:package Collection;public class BinarySearch { /** * 使用递归的二分查找(递归的均分折半)...
2019-11-08 10:43:58
146
原创 堆排序详解
堆排序是必须要会手写的。原理如下:1.从最后一个非叶子结点开始,从左到右,从上到下,与父节点进行交换,构建大顶堆2.将堆顶元素(此时最大)与末尾元素交换,就获取了最大值了,再对剩下的n-1个节点也进行此类操作。就可以把最大值逐渐交换到最末端,实现大顶堆的升序排序。import java.util.Arrays;/** *1.构建一个大项堆。2.将堆顶与末尾交换。3,持续...
2019-11-07 10:34:53
231
原创 剑指offer-17 合并链表
2个链表,本来都是从小到大的顺序排列的,现在要求合并,合并后依然从小到大思路:先设定一个pointer指针,指向新链表的新节点。1.如果链表1为空,则新链表就是链表2,反之一样2.创建一个指针pointer,在子链表都不为空时,比较两个链表中节点值,pointer指向较小值,并遍历全部的链表3.如果其中任何一个链表比较结束,另一个还有,则将剩余链表直接接到新链表后面。注:不要用...
2019-10-10 17:40:20
150
原创 剑指offer-13 在o(1)内删除链表的某一节点
一个链表,需要对它进行删除操作,那么怎么在o(1)的时间复杂度内将其准确删除呢?其实,就是将某个node.value赋为0,其左右的指针打断再重连即可。关键是怎么重连。比如,我要删除i节点,那么让h直接指向j节点即可。但是,找到h节点,要遍历n次,不符合要求。所以,我们将j值复制到i处,再指向下下个点即可。具体步骤如下:1.判断head与要删除的点是否为null,如果为null...
2019-10-10 15:59:50
146
原创 剑指offer-10 二进制数字1的个数
输入一个int型数字,输出它作为二进制的1的个数。如9的二进制为1001,有2个1,则输出2。法一:因为int型有4个字节,一共32位,每次将输入右移1,并和1进行“与”操作。将结果累加,则为1的个数。public class Test10{ public static int numberofone(int n){ int result = 0; ...
2019-10-10 14:27:50
168
原创 介绍Latex神器——Overleaf的方法
向大家介绍2个神网站,一个是腾讯在线文档,一个是overleaf腾讯在线文档就不多介绍了,可以直接百度网址并使用,它有2个亮点,1.特别简洁,高效。2.可以多人在线,共同编辑同一个文档。(在笔者参加研究生数学建模的时候,三个队员编辑同一篇论文,非常有效果!)----------------------------------------------------------------...
2019-09-26 01:03:23
145526
16
原创 剑指offer-两个栈实现-队列尾部插入,头部删除
大家都知道,队列是一个尾部(rear)插入,头部(front)删除的数据结构。本题要求,用两个栈,构造出一个队列出来。本题中,构造两个栈,stack1和stack2,1用来插入,2用来弹出。其中,栈1的插入很简单,函数体内部,直接用add方法即可。但是栈2的弹出,要考虑此时栈2是不是有值,如果2为空,1不空。则弹出1的值,add进2。如果此时2还没有值,则抛异常,如果有值,则pop出来。拓...
2019-09-06 21:35:06
612
原创 剑指offer-2替换空格为指定字符串
该题是剑指offer的基础题,输入一个字符串,里面有一些空格,将空格填写“%20”这三个字符。然后输出。下面是简单代码。public class Test0401{ public static void replaceblank(char[] string,int usedLength) { //统计空白字符数 int blanknum = 0...
2019-09-06 18:03:44
130
1
原创 剑指offer-输出字符串所有种类的排列组合
常规题,先校验长度,不符合则直接输出;符合则判断是否为最后一个字符,是则直接new对象输出,不是则交换begin和i位置的数字,再用递归输出。public class Test28{// 先校验 public static void permutation(char[] chars){ if (chars.length<1 || chars==null...
2019-09-03 09:21:37
363
原创 剑指offer-15 链表倒数第k个结点
题意题目描述输入一个链表,输出该链表中倒数第k个结点。背景头节点,有指针逐个指向下面的结点,就像下面的样子。这个链表的左边是头节点,右边是尾结点,从头到尾可以遍历,但反过来不行。思路:用两个指针,第一个指针走(k-1)步,到第k个结点,此时第二个指针在起点。然后,两个指针同时走,第一个指针到尾结点时,第二个指针恰好到第倒数第k个结点。p...
2019-07-25 15:25:20
101
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人