Java
洞玄之
不积跬步,无以至千里
展开
-
Java8—Lambda 表达式
Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }以下是lambda表达式的重要特征:可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。可选的参数圆括号:一个原创 2020-05-17 17:44:04 · 223 阅读 · 0 评论 -
剑51—构建乘积数组
题目描述 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。import java.util.ArrayList;public class Solution { /*剑指的思路:B[i]的值可以看作下图的矩阵中每行的乘积。下三角用连乘可以很容...原创 2018-04-20 23:18:10 · 132 阅读 · 0 评论 -
剑62—二叉搜索树的第k大的结点
题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。解题思想按照中序遍历的顺序遍历一颗二叉搜索树,遍历序列的数值是递增排序的。则很容易找到第k大个数/*public class TreeNode { int val = 0; TreeNode left = null...原创 2018-05-02 23:01:20 · 110 阅读 · 0 评论 -
剑61—序列化、反序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/pub...原创 2018-05-02 22:41:45 · 130 阅读 · 0 评论 -
剑50—数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 示例1 输入{2,3,1,0,2,5,3}, 输出 2解题思路//我自己的思想ACimport ...原创 2018-04-14 10:00:59 · 172 阅读 · 1 评论 -
剑49—把字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0解题思路public class ...原创 2018-04-13 23:33:14 · 128 阅读 · 0 评论 -
剑48—不用加减乘除 求两个整数之和
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。//简单写法pub...原创 2018-04-13 22:59:09 · 212 阅读 · 0 评论 -
剑47—求1+2+3+...+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解题思路:1.需利用逻辑与的短路特性实现递归终止。 2.当n==0时,(n>0)&&((sum+=Sum_Solution(n-1))>0)只执行前面的判断,为false,然后直接返回0; 3.当n>0...原创 2018-04-13 22:56:30 · 118 阅读 · 0 评论 -
剑46—圆圈中最后剩下的数
题目描述 让小朋友们围成一个大圈。然后,他随机指定一个数 m,让编号为 0 的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续 0…m-1 报数 …. 这样下去 …. 直到剩下最后一个小朋友,可以不用表演。解题思路 约瑟夫环,圆圈长度为 n 的解可以看成长度为 n-1 的解再加上报数的长度 m。因为...原创 2018-04-13 22:24:28 · 160 阅读 · 0 评论 -
剑45—扑克牌顺子(数组元素是不是连着的)
题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。...原创 2018-04-13 22:09:17 · 231 阅读 · 0 评论 -
剑44—翻转单词顺序列(I am a student.->student. a am I)
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?输入:”I am a...原创 2018-04-13 18:03:57 · 557 阅读 · 0 评论 -
剑52—正则表达式匹配
题目描述请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配解题思路:当模式中的第二个字符不是“*”时: 1、如果字符串第一个字符和模式中的第一个...原创 2018-04-20 23:20:24 · 130 阅读 · 0 评论 -
剑53—表示数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。public class Solution { //Double.parseDouble方法是把数字类型的字符串,转换成doub...原创 2018-04-20 23:23:02 · 150 阅读 · 0 评论 -
剑54—字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。import java.util.*;public class Solution{ /*...原创 2018-04-20 23:24:32 · 125 阅读 · 0 评论 -
Java 反射
什么是反射(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))首先大家应该先了解两个概念,编译期和运行期,编译期就是编译器帮你把源代码翻译成机器能识别的代码,比如编译器把java代码编译成jvm识别的字节码文件,而运行期指的是将可执行文件交给操作系统去执行。 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法...原创 2018-09-07 09:55:21 · 141 阅读 · 0 评论 -
java 序列化和反序列化
https://blog.csdn.net/xlgen157387/article/details/79840134一、基本概念1、什么是序列化和反序列化(1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程;(2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象...转载 2018-09-06 23:45:42 · 158 阅读 · 0 评论 -
JAVA零碎知识点
知识点1. Integer.valueOf()与Integer.parseInt()类Integerpublic final class Integer extends Number implements Comparable&lt;Integer&gt;Integer 类在对象中包装了一个基本类型 int 的值。Integer 类型的...原创 2018-06-30 10:50:44 · 162 阅读 · 0 评论 -
java基础知识点总结
1、Stack 由于stack在当初设计时候有缺陷,所以现在不建议使用stack,如果要使用栈这种数据结构,建议使用LinkedList,LinkedList能够直接实现栈的所有功能和方法,所以建议使用LinkedList.2、Queue 队列是一种先进先出的容器,LinkedList实现了queue接口,所以可以通过向下转型来通LinkedList构造queueQueue que...原创 2018-06-04 16:32:17 · 211 阅读 · 0 评论 -
剑60—把二叉树打印成多行(按层)
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思想二叉树打印,队列思想 1、新建当前所在层节点的队列queue,根节点入队列2、如果队列queue不为空2.1新建缓冲队列buff,存放当前节点的孩子节点 新建集合al,存放当前层的节点 2.2 如果队列queue不为空,poll出栈顶元素即为cur,将当前元素值加入集合al ...原创 2018-04-27 23:21:27 · 133 阅读 · 0 评论 -
剑59—之字形打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题思路剑指思路1:栈的思想 若当前打印奇数层,从右到左打印下一个,则从左到右入栈 若当前打印偶数层,从左到右打印下一个,则从右到左入栈思路2:队列+反转 将每层的数据存进**队列**queue中,偶数层时进行reve...原创 2018-04-27 23:07:50 · 138 阅读 · 0 评论 -
剑58—对称的二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解题思路通过比较二叉树的前序遍历序列和对称前序遍历序列来判断二叉树是不是对称的,如果两个序列是一样的,则二叉树就是对称的。代码如下/*public class TreeNode { int val = 0; TreeNode left ...原创 2018-04-26 23:06:10 · 117 阅读 · 0 评论 -
剑57—二叉树的下一个节点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode n...原创 2018-04-20 23:28:00 · 108 阅读 · 0 评论 -
剑56—删除链表中重复的结点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5/* public class ListNode { int val; ListNode next = null; ListNode(i...原创 2018-04-20 23:26:50 · 102 阅读 · 0 评论 -
剑55—链表的环的入口结点
题目描述 一个链表中包含环,请找出该链表的环的入口结点。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.HashSet;public class...原创 2018-04-20 23:25:42 · 109 阅读 · 0 评论 -
剑43—左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!解题思路public class Solution { //解法1:利用ja...原创 2018-04-13 11:34:10 · 98 阅读 · 0 评论 -
剑42—和为是S的两个数字 (递增排序数组)
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每个测试案例,输出两个数,小的先输出。解题思路使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。如果两个指针指向元素的和 sum == targ...原创 2018-04-12 23:13:51 · 159 阅读 · 0 评论 -
剑41—和为S的连续正数序列
剑41—和为S的连续正数序列题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述...原创 2018-04-12 23:08:12 · 115 阅读 · 0 评论 -
Intellij IDEA 中Cannot Resolve Symbol XXX问题的解决方法
maven项目遇到这类问题基本上是两方面的原因: 类对应的依赖没有加载进来、 编译器自身的设置和缓存问题 解决第一类:类对应的依赖没有加载进来 1、检查项目的pom文件,是否必要的依赖都写清楚了 2、是否使用自己的私有库, repository> id>releaseid> name>Private Repositoryname> url>ht原创 2018-01-25 18:27:04 · 180171 阅读 · 16 评论 -
判断一个正整数二进制表示中1的个数/////////////质数判断
一、一个正整数二进制表示中“1”个数 java代码实现//算法一----快速法public Class Solution{ public int NumberOf1(int n) { int count=0; while(n!=0) { count++; n=n&(n-1)原创 2018-01-16 11:51:06 · 951 阅读 · 0 评论 -
java基础-打印字符串中字母出现次数
/** 打印字符串中字母出现次数,打印形式:a(1)c(2)....* 分析:每一个字符都有对相应的映射关系,因此选择map集合* 思路:* 1、将字符串转换为字符数组,因为要对每个字符操作* 2、定义一个map集合,又因为打印出来的字母有顺序,故使用treemap集合* 3、遍历字符数组:* 将每一个字母作为键去查map集合* 如果返回Null,就将字母和1存放到map集合* 如原创 2018-01-03 17:53:44 · 989 阅读 · 0 评论 -
剑33-丑数
题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路详解: 如果p是丑数,那么p=2^x * 3^y * 5^z,那么只要赋予x,y,z不同的值就能得到不同的丑数。 对于任何丑数p:如果p小于q, 那么2*p<2*q,3*p<3*q,5*...原创 2017-12-27 11:39:30 · 198 阅读 · 0 评论 -
java基础-字符串反转
java基础-字符串反转 思想: 1,将字符串变成数组 2、将数组反转 3、将数组变成字符串import java.lang.String;public class StringInverse{ public static void main(String[] args) { String s=" ab cd "; sop("("+s+原创 2017-11-23 11:05:06 · 213 阅读 · 0 评论 -
728. Self Dividing Numbers
A self-dividing number is a number that is divisible by every digit it contains.For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.Also, a self-dividing num原创 2017-11-23 09:47:02 · 196 阅读 · 0 评论 -
剑29-最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。方法一:投机取巧(自己想到的low)import java.util.*;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(in...原创 2017-11-29 23:07:35 · 184 阅读 · 0 评论 -
java基础-01 初始化过程
java基础-面向对象构造函数:给对象初始化,对象一建立就执行,只执行一次 一般函数:被调用才执行,可执行多次 静态代码块:对类进行初始化: static{代码} 构造代码块:不同对象的共性的初始化内容,先于构造函数执行:{ 代码} this:哪个对象在调用this所在的函数,this就代表哪个对象;Person p=new Person(“zhangsan”,20); 初始化过...原创 2017-11-09 23:18:09 · 212 阅读 · 0 评论 -
java基础-冒泡排序
package com.company;public class Main { public static void main(String[] args) { int[]arr={3,1,4,6,2}; printArray(arr); bubbleSort(arr); printArray(arr); }原创 2017-11-07 22:35:05 · 179 阅读 · 0 评论 -
剑55—链表中环的入口节点
题目:一个链表中包含环,请找出该链表的环的入口结点。方法1思想:要寻找环的入口节点,遍历节点的时候,遇到的第一个重复节点肯定是入环口节点,所以定义一个Set(不能添加重复数字),添加失败时 即返回环入口节点import java.util.*;public class Solution { public ListNode EntryNodeOfLoop(Li...原创 2018-03-15 20:47:24 · 154 阅读 · 1 评论 -
剑61— 序列化和反序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树代码如下/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}...原创 2018-03-18 16:01:00 · 129 阅读 · 0 评论 -
编码原则总结:面向对象设计的SOLID原则
S.O.L.I.D是 面向对象设计和编程(OOD&OOP)中几个重要的编码原则(Programming Priciple)的首字母缩写 缩写 全称 中文 SRP The Single Responsibility Principle 单一责任原则 OCP The Open Closed Principle 开放封闭原则 LSP...翻译 2018-03-19 09:55:53 · 713 阅读 · 0 评论 -
剑指40—数组中只出现一次的数字(其他都出现两次)
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 例如 输入{2,4,3,6,3,2,5,5} 输出 4,6解题思路异或思想:任何一个数字异或它自己都等于0;两个不相等的元素在位级表示上必定会有一位存在不同。将数组的所有元素异或得到的结果为只出现一次的两个元素异或的结果。由于这两个数字肯定不一样,那么这个异或结果肯...原创 2018-04-12 22:47:49 · 124 阅读 · 0 评论