
Java学习
有梦就不怕痛
这个作者很懒,什么都没留下…
展开
-
Java8 数值流应用
Java8 数值流应用勾股数那么什么时勾股数呢?我们得回到从前。在一堂激动人心的数学课上,你了解到,古希腊数学家毕达哥拉斯发现了某些三元数(a, b, c)满足公式a * a + b * b = c * c,其中a, b, c都是整数。例如(3,4,5)就是一组有效的勾股数,因为 3*3 + 4*4 = 5*5或者9 + 16 = 25.这样的三元数有无限组。例如,(5, 12, 13),(...原创 2020-03-08 10:11:56 · 400 阅读 · 0 评论 -
Java 8 数据流
我们在前面看到了可以使用reduce方法计算流中元素的总和。例如,你可以想下面这样计算菜单的热量:int calories = menu.stream().map(Dish::getCalories).reduce(0, Integer::sum); 这段代码的问题是,他有一个暗含的装箱成本。每个Integer都必须拆箱成一个原始类型,再进行求和。要是可以直接像下...原创 2020-02-29 11:21:33 · 455 阅读 · 0 评论 -
Java 8 付诸实践
public class Trader { private final String name; private final String city; public Trader(String name, String city) { this.name = name; this.city = city; } public String getName()...原创 2020-02-23 14:16:24 · 307 阅读 · 0 评论 -
Java8 归约 reduce 第二讲
最大值和最小值原来,只要用归约就可以计算最大值和最小值了!让我们来看看如何利用学到的reduce来计算流中最大或最小元素。正如你前面看到的,reduce接收两个参数:一个初始值 一个Lambda来把两个流元素结合起来并产生一个新值。Lambda是一步步用加法运算符应用到流中每个元素的,如下图所示。因此,你需要一个给定元素能够返回最大值Lambda。reduce操作会考虑新值和流中...原创 2020-02-23 13:16:51 · 467 阅读 · 0 评论 -
Java8 归约 reduce
Java8 归约 reduce本节将看到如何把一个流中的元素组合起来,使用reduce操作来表达更复杂的查询,比如“计算菜单中的总的卡路里”或“菜单中卡路里最高的菜时哪一个”。此类查询需要将流中所有元素反复结合起来,得到一个值,比如一个Integer。这样的查询可以被归类为归约操作(将流归约成一个值)。用函数式编程语言的术语来说,这称为折叠(fold),因为你可以将一个操作看成一张长长的纸(你...原创 2020-02-16 17:37:19 · 1900 阅读 · 0 评论 -
素数打表
import java.util.Scanner;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n=in.nextInt(); boolean[]原创 2017-04-19 18:09:28 · 432 阅读 · 0 评论 -
java课程设计推箱子
运行截图:1. 可以进行选关卡,在这里我只设计了8关(其实只要愿意可以设置很多关卡,没有把地图的数据写死,可以是根据文本进行读取的),当然你也可以自己设计地图。2. 上一关和下一关的功能就不用介绍了吧。3. 重新开始就是从当前关卡从新开始。4. 退一步:就类似于悔棋,每按一次就会退一次,可以一直按到初始状态。5. 里面的功能已经全部是实现,还有对女神表白的专属地图。...原创 2018-01-13 15:44:52 · 3348 阅读 · 2 评论 -
和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路:从0遍历每一个数,另一个数在数组中进行查找,用二分法找,import java.util.ArrayList;public class Solution { public ArrayList...原创 2018-03-17 22:04:45 · 172 阅读 · 0 评论 -
二分法
/** * 好长时间没有写算法了,以前学的都已经忘了,现在为了就业开始从新学习算法和java的数据结构 * 也算是继续学习吧! * 这次写二分法的模板,题意:在array数组中(从小到大),找出数值k对应数组中 * 的最小位置或者最大位置(前提是k一定在数组中) * * */public static int getPostion(int[] array, int k) {...原创 2018-03-17 22:31:36 · 237 阅读 · 0 评论 -
翻转单词顺序列
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?public class S...原创 2018-03-18 14:01:23 · 241 阅读 · 0 评论 -
扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为1...原创 2018-03-18 14:36:14 · 155 阅读 · 0 评论 -
把字符串转换成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1a33输出2147483647 0主要的思路是:每次的结果*10+ch[i]public class Solution {...原创 2018-03-18 15:20:33 · 167 阅读 · 0 评论 -
数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。import java.util.TreeMap;public class Solution { // Parame...原创 2018-03-18 17:09:39 · 163 阅读 · 0 评论 -
构建乘积数组
题目描述给定一个数组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]。不能使用除法。链接:https://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f2975db46来源:牛客网披萨大叔 剑指的思路:...原创 2018-03-18 18:40:16 · 228 阅读 · 0 评论 -
字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。public class Solution { private int[] charNum = new int[...原创 2018-03-18 19:06:14 · 204 阅读 · 0 评论 -
字符串最后一个单词的长度
题目描述计算字符串最后一个单词的长度,单词以空格隔开。 输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。示例1输入hello world输出5import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner =...原创 2018-03-18 19:23:20 · 183 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import ja...原创 2018-03-19 10:32:53 · 250 阅读 · 0 评论 -
链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { /** * head到tempTail是...原创 2018-03-19 10:45:30 · 185 阅读 · 0 评论 -
反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Rever...原创 2018-03-19 11:20:31 · 179 阅读 · 0 评论 -
合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*//** * 递归就是要知道递归函数是干什么的?...原创 2018-03-19 12:51:48 · 168 阅读 · 0 评论 -
链表中环的入口结点
题目描述一个链表中包含环,请找出该链表的环的入口结点。/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.HashSet;public class Solutio...原创 2018-03-19 16:03:19 · 158 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack...原创 2018-03-20 16:39:18 · 176 阅读 · 0 评论 -
两个链表的第一个公共结点
题目描述输入两个链表,找出它们的第一个公共结点。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.TreeSet;public class Solution { ...原创 2018-03-20 16:48:03 · 155 阅读 · 0 评论 -
滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,...原创 2018-03-21 20:59:52 · 234 阅读 · 0 评论 -
中缀到后缀的转换
原理:1.从左到右的读取中缀式。 2. 准备一个符号栈,从栈底到栈顶优先级是从小到大。当压入的操作符小于栈顶的操作符就出栈,知道碰到栈顶的操作符小于当前压入栈的操作符或者到达栈底,进行入栈操作。当压入的操作符优先级大于栈顶操作符的优先级,那就直接入栈就行了。时刻要记得创建的这个符号栈优先级是从小到大(从栈顶到栈顶) 3. 左括号的优先级是最高的,如果栈顶的操作符...原创 2018-03-27 20:51:06 · 551 阅读 · 0 评论 -
evaluate-reverse-polish-notation
题目描述Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are+,-,*,/. Each operand may be an integer or another expression.Some examples: ["2", "1", "+", "3", "*"]...原创 2018-04-24 16:10:12 · 187 阅读 · 0 评论 -
insertion-sort-list
题目描述Sort a linked list using insertion sort.public class Solution { public ListNode insertionSortList(ListNode head) { if (head==null) { return head; } ListNode newHead = new Lis...原创 2018-04-24 17:43:11 · 305 阅读 · 0 评论 -
插入排序
什么是插入排序:就是找到适合的位置插进去就行了举个例子:数组 5 14 12 3 9 19 从小打到进行排列我们把数组分成2部分前一部分是有序的,后一部分是无序的(也就是需要进行排序的)刚开始的时候:有序部分只有 5 无序 14 12 3 9 19public static int[] insertSort(int[] array) { for (int i=1; i<array.l...原创 2018-06-04 20:45:28 · 133 阅读 · 0 评论 -
快速排序
/** * 快速排序其实也是冒泡排序的一种,就是交换值 * 思想:随便的挑出一个关键字,通过交换把数组分成2部分,左边是小于关键字的数组,右边是大于关键字的数组 * 然后对这2个数组再进行类似的排序,每次都会把数组分成2部分,知道数组的大小变成1就完成排序。 * 最后的数组也就是一个有序的数组了。(中间还有一些递归的知识) * * */public static void quick...原创 2018-06-05 14:00:07 · 138 阅读 · 0 评论 -
冒泡排序
/** * 冒泡排序:每相邻的数进行比较,把较大的放在右边 * * */ public static void bubbleSort(int[] array) { int m = array.length-2; boolean flag=true; while(m>0&&flag) { // 如果没有发生交换,那就是排好序了 fl...原创 2018-06-05 14:35:36 · 170 阅读 · 0 评论 -
折半插入排序
/** * 折半插入排序:其实本质上还是直接插入,只是在位置的寻找有些不同 * 直接插入排序是遍历已经排序好的数组,找出合适的位置 * 折半插入排序则是用二分找出适合的位置 * * */public static void bInsertSort(int[] array) { for (int i=1; i<array.length; ++i) { // 数组从前...原创 2018-06-06 08:59:44 · 290 阅读 · 0 评论 -
归并排序
/** * 归并排序:其本质的思想是,一个长度为n的数组,它是无序的,但如果n=1,那么这个数组就是有序的。 * 归并排序的算法:先将一个长度为n的无序的数组拆分成n个数组,每一个数组的大小是1, * 那么每一个数组就是有序的,然后让数组两两合并,每两个数组合成一个数组,就是一个有序的数组, * 最后就变成了一个有序的数组了。我感觉就是拆了合。 * */public static voi...原创 2018-06-06 14:22:02 · 184 阅读 · 0 评论 -
希尔排序
/** * 希尔排序:实质上是采用了分组插入的方法。先将整个待排序记录序列分割成几组,从而减少 * 参与插入排序的数据量,对每组分别进行直接插入排序,然后增加每组的数据量,重新分组。 * 这样当经过几次分组排序后,整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。 * 希尔排序对记录的分组,不是简单的逐段分割,而是将相隔某个增量的记录分成一组。 * * *//** *...原创 2018-06-06 20:14:13 · 157 阅读 · 0 评论 -
java中static关键字
static关键字Static可以用来修饰某个类的成员变量和成员方法。需要记住一点是:用static修饰的变量或方法,是类实例所共有,如果没有用static修饰,那么需要用new关键字创建一个对象,内存就是为这个对象分配空间,是来存放成员变量和方法。如果用static修饰,只为成员变量或者方法分配一次内存空间,这个空间是所有的实例都可以访问,修改,调用的。1. 修饰成员变量是所有的实例所共有且只有...原创 2018-06-07 17:53:21 · 246 阅读 · 0 评论 -
1005 继续(3n+1)猜想
1005 继续(3n+1)猜想 (25 分)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4...原创 2019-01-04 20:07:00 · 156 阅读 · 0 评论 -
1004 成绩排名
1004 成绩排名 (20 分)读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和...原创 2019-01-04 20:09:02 · 126 阅读 · 0 评论 -
1010 一元多项式求导
1010 一元多项式求导 (25 分)设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表...原创 2019-01-05 11:40:40 · 281 阅读 · 0 评论 -
1013 数素数
1013 数素数 (20 分)令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:...原创 2019-01-05 17:55:09 · 202 阅读 · 0 评论 -
1016 部分A+B
1016 部分A+B (15 分)正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。现给定 A、DA、B、DB,请编写程序计算 PA+PB。输入格式:输入在一行中依次给出 A、D...原创 2019-01-08 18:43:19 · 227 阅读 · 0 评论 -
1027 打印沙漏 (20 分) java
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:...原创 2019-05-06 21:34:20 · 1426 阅读 · 1 评论