Java
文章平均质量分 72
幽蓝丶流月
种下一棵树的最好时间是十年前,其次是现在。愿我们在满是荆棘的路上,披荆斩棘,砥砺前行~
展开
-
【精选】JAVA算法题(二十五)
好长时间没有写博客了,之前因为期末考试耽误了一段时间,回家又玩了几天,然后又赶来上海入职,所以就把博客这事给忘了,哈哈,懒惰啊。一、最长回文字符串题目:/** * 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 * 在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。 * <p> * 注意: * 假设字符串的...原创 2019-07-21 17:26:48 · 405 阅读 · 1 评论 -
狄克斯特拉算法
一、介绍在前一篇博客中我们学习了广度优先搜索算法,它解决的是段数最少的路径,如果你要找到最快的路径,该怎么办呢?为此,可以使用本篇博客所讲述的算法——狄克斯特拉算法如果你使用广度优先搜索,将得到下面这条段数最少的路径。这条路径耗时7分钟。下面来看看能否找到耗时更短的路径!狄克斯特拉算法包含4个步骤。(1) 找出“最便宜”的节点,即可在最短时间内到达的节点。(2) 更新该节点...原创 2019-04-26 13:42:08 · 2709 阅读 · 0 评论 -
【精选】JAVA算法题(十六)
1.脏矩形合并题目: 在2D渲染系统中,局部渲染是常见提升渲染性能的方法。如果界面中有元素发生了改变,我们可以将这个元素所占矩形区域标记为脏矩形,那么在接下来的渲染中,我们仅对每个脏矩形所占矩形区域执行一次局部渲染即可,无需渲染全屏。 但系统提供的局部渲染API有如下限制: 1. 单次局部渲染区域必需是矩形,不能是多边形,圆形或者其他不规则形状。 2. 单次局部渲染时间开销除了和...原创 2019-04-20 22:13:46 · 482 阅读 · 3 评论 -
教你用JAVA写个小游戏
上周上课的时候老师让用Java写个小程序,我本想写一个经典的飞机大战游戏来着,可以后来突发奇想就写成了这个一、整体思路继承窗体类,复写窗体刷新 添加按键监听 游戏结束界面 王思聪类和热狗类 移动轨迹计算 判断碰撞 音乐播放 不断刷新窗体 处理细节二、编码1.图片首先你要找到图片,可以百度一张,然后用ps切开,再找一张背景图片就搞定了你还需要一个加载图片的...原创 2019-04-03 10:54:07 · 102280 阅读 · 35 评论 -
JAVA入门算法题(十五)
一、满二叉搜索树/** * 给定一个二叉树的层序遍历判断是不是一颗满二叉搜索树 */大致分为这么几步:1.处理输入2.根据满二叉树的节点数量进行排除3.构建树4.递归判断 public static Node root; public static void isManTree(){ Scanner sc = new Scann...原创 2019-04-06 13:13:22 · 288 阅读 · 0 评论 -
JAVA入门算法题(十四)
一、最小的淘气值题目:/** * 老师要给学生安排座位,经统计教室有N个双人桌,M名学生,每个学生有一个淘气值, * 要合理安排座位,使得班内同桌之和的淘气值最大值尽可能的小,输出最小值。 */这是一道360Android春招笔试题要考虑这样的几种情况:1.座位数>=学生数,那么就每个人做一个桌子,最大的淘气值就是最淘气的那个学生2.座位数刚好坐满,那么...原创 2019-03-31 16:24:19 · 553 阅读 · 0 评论 -
JAVA入门算法题(十三)
一、出现一次的数题目:/** * 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 * 说明: * 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? * 示例 1: * 输入: [2,2,1] * 输出: 1 * 示例 2: * 输入: [4,1,2,1,2] * 输出: 4 */看完题便...原创 2019-03-31 15:38:20 · 263 阅读 · 0 评论 -
JAVA入门算法题(十二)
一、最大利润题目:/** *给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 * 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 * 注意你不能在买入股票前卖出股票。 * 示例 1: * 输入: [7,1,5,3,6,4] * 输出: 5 * 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(...原创 2019-03-31 14:18:06 · 339 阅读 · 0 评论 -
JAVA入门算法题(十一)
一、倒置层序遍历题目:/** * 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) * <p> * 例如: * 给定二叉树 [3,9,20,null,null,15,7], * 3 * / \ * 9 20 * / \ * 15 7 * 返回其自底向上的层次遍历为: ...原创 2019-03-31 11:31:31 · 505 阅读 · 0 评论 -
贝尔曼-福德算法
我在上一篇博客中讲解了狄克斯特拉算法,该算法可以用于寻找权值都为正的有向无环图的最短路径,我也提到了如果碰到权值为负的情况可以使用贝尔曼-福德算法,那么今天就让我们学习一下贝尔曼-福德算法是如何处理负权值和环路的。其实理解了狄克斯特拉算法之后理解贝尔曼-福德算法就很容易了,如果说狄克斯特拉算法是用一种“广度”的方式,每次寻找源点所能到达的距离最短的一个点,更新其邻居节点的距离。那么贝尔曼-福德...原创 2019-05-03 20:26:07 · 6513 阅读 · 0 评论 -
广度优先搜索算法
一、简介广度优先搜索算法(Breadth-First Search,BFS)是一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。BFS并不使用经验法则算法。广度优先搜索让你能够找出两样东西之间的最短距离,不过最短距离的含义有很多!使用广度优先搜索可以:编写国际跳棋AI,计算最少走多少步就可获胜; ...原创 2019-04-25 13:26:58 · 128730 阅读 · 27 评论 -
【精选】JAVA算法题(二十四)
一、子字符串出现的位置题目:/*** 给出 字符串 text 和 字符串列表 words, 返回所有的索引对 [i, j] 使得在索引对范围内的子字符串* text[i]...text[j](包括 i 和 j)属于字符串列表 words。** 示例 1:* 输入: text = "thestoryofleetcodeandme", words = ["story","f...原创 2019-06-02 17:44:31 · 599 阅读 · 0 评论 -
【精选】JAVA算法题(二十三)
一、完全平方数题目:/** *给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。 * 说明:不要使用任何内置的库函数,如 sqrt。 * * 示例 1: * 输入:16 * 输出:True * * 示例 2: * 输入:14 * 输出:False */不使用库函数来判断一个数是不是一个完全平方数-...原创 2019-06-02 16:47:08 · 609 阅读 · 0 评论 -
【精选】JAVA算法题(二十二)
一、两数之和题目:/** * 不使用运算符 + 和 - ,计算两整数 a 、b 之和。 * * 示例 1: * 输入: a = 1, b = 2 * 输出: 3 * * 示例 2: * 输入: a = -2, b = 3 * 输出: 1 */这道题的本意其实就是在考你的位运算,如何利用位运算来进行数的加减可以分为两...原创 2019-05-30 20:45:03 · 398 阅读 · 0 评论 -
【精选】JAVA算法题(二十一)
一、丑数题目:/** * 编写一个程序判断给定的数是否为丑数。 * 丑数就是只包含质因数 2, 3, 5 的正整数。 * * 示例 1: * 输入: 6 * 输出: true * 解释: 6 = 2 × 3 * * 示例 2: * 输入: 8 * 输出: true * 解释: 8 = 2 × 2 × 2 * * 示例 3: * 输入: 14 * 输出: ...原创 2019-05-23 11:31:03 · 285 阅读 · 0 评论 -
【精选】JAVA算法题(二十)
一、异位词题目:/** * 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。 * * 示例 1: * 输入: s = "anagram", t = "nagaram" * 输出: true * * 示例 2: * 输入: s = "rat", t = "car" * 输出: false * * 说明: * 你可以假设字符串只包...原创 2019-05-22 21:11:51 · 335 阅读 · 0 评论 -
【精选】JAVA算法题(十九)
一、重复的数题目:/** * 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j, * 使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。 * * 示例 1: * 输入: nums = [1,2,3,1], k = 3 * 输出: true * * 示例 2: * 输入: nums = [1,0,1,1]...原创 2019-05-22 20:40:49 · 1086 阅读 · 0 评论 -
【精选】JAVA算法题(十八)
一、移除链表中指定的节点题目:/** * 删除链表中等于给定值 val 的所有节点。 * * 示例: * 输入: 1->2->6->3->4->5->6, val = 6 * 输出: 1->2->3->4->5 */题的描述很简单,做起来并不容易,有一些小坑,要注意的就是头尾的节点的处理和连续相等的情况处理,...原创 2019-05-22 15:14:20 · 559 阅读 · 0 评论 -
【精选】JAVA算法题(十七)
一、镜面反射题目:/** * 有一个特殊的正方形房间,每面墙上都有一面镜子。除西南角以外,每个角落都放有一个接受器,编号为 0, 1,以及 2。 * 正方形房间的墙壁长度为 p,一束激光从西南角射出,首先会与东墙相遇,入射点到接收器 0 的距离为 q 。 * 返回光线最先遇到的接收器的编号(保证光线最终会遇到一个接收器)。 */ 示例:输入: p = 2, q...原创 2019-05-09 20:54:57 · 389 阅读 · 0 评论 -
JAVA 大数的乘法运算和取余运算
莫妒他长,妒长,则己终是短;莫护己短,护短,则己终不长。1.乘法运算这是一道入门的算法题,目的就是求两个超过基础数据类型所表示的两个数的乘积。刚开始看到这道题我想的便是分解 计算 合并 ,但是合并后的数如何存储返回又是一个问题,苦思冥想下想到了用数组,并不断把算法优化。首先实现这种大数运算,基础数据类型是无法存储也无法运算的,但是我们可以手写在纸上算 /** ...原创 2018-12-18 20:56:16 · 2015 阅读 · 0 评论 -
JAVA排序算法总结
不要独享荣耀。独享荣耀,有天就会独吞苦果。1.冒泡排序说到排序算法最先想到的就是冒泡排序了,它是最简单也是最慢的排序方法,双层for循环对每两项数值进行比较交换/** * 冒泡排序 * @param array */ public static void maoPao(int []array){ int temp; ...原创 2018-12-23 17:15:54 · 515 阅读 · 0 评论 -
JAVA入门算法题(十)
稳扎稳打,可攻可守。没抓在手里的成功都是不算的。1.删除重复的数字/** * 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 * <p> * 示例 1: * 输入: 1->1->2 * 输出: 1->2 * <p> * 示例 2: * 输入: 1-...原创 2018-12-22 21:47:42 · 526 阅读 · 0 评论 -
JAVA中的反射
我们这个世界的一个问题是,蠢人信誓旦旦,智人满腹狐疑一、什么是反射?在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。通过JAVA的反射机制,程序猿可以更深入地控制程序的运行过程,如在程序运行时对用户输入的信息进行验...原创 2018-11-19 22:15:45 · 176 阅读 · 0 评论 -
JAVA图形化界面计算器
优秀的代码是它自己最好的文档。当你考虑要添加一个注释时,问问自己,“如何能改进这段代码,以让它不需要注释我是一名在校大学生,这学期刚刚开JAVA课,老师上周留作业让做个计算器,最近一直在搞Python,今天终于抽出一些时间来写这篇博客,下面是我做的计算器界面非常简单,功能也非常简单,只有简单的加减乘除,回退清零所谓三思而coding,写代码之前一定要多思考,经过思考之后你的代码...原创 2018-11-19 19:38:56 · 14679 阅读 · 4 评论 -
JAVA Socket远程执行任务
优化是一个很棘手的问题,最好的策略就是置之不顾,直到你发现需要担心它了最近一直在复习之前所学过的知识,今天看到之前写过的一段程序,所以在这里写上一篇博客记录一下。如果我们现在有一个处理数据的任务很耗费资源和时间我们该怎么办呢?这就是本篇博客要讲的内容,我们可以使用远程服务器来执行处理数据的任务。那该怎么做呢,你可以想以下把大象放进冰箱需要几步,3步,把冰箱打开,把大象放进去,把冰箱关上...原创 2018-11-21 20:16:53 · 926 阅读 · 0 评论 -
使用IDEA打包程序到jar包
优化是一个很棘手的问题,最好的策略就是置之不顾,直到你发现需要担心它了 首先打开project structure界面,你可以在编译器主界面右上角找到它,或者在左上角的File菜单栏中找到它,打开 选择Artifacts---》点击加号----》选择JAR---》点击From......点击省略号选择你程序的主类,点击OK点击ok,继续下一步操作...原创 2018-11-21 18:52:07 · 711 阅读 · 1 评论 -
吸血鬼数字(多种解法)
最近在读《Thinking in JAVA》,在里面发现一个很有意思的题,该题在75页,第四章第十题原题:吸血鬼数字是指位数为偶数的数字,可以由一堆数字想乘而得到。而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列的数字都是“吸血鬼”数字:1260=21*601827=21*872187=27*81写出...原创 2018-10-12 11:02:44 · 6780 阅读 · 5 评论 -
java权限修饰符default和protected区别
java一共有4中权限修饰符,分别是private、default、protected和publicprivate和public很好理解,default和protected不太好分清。protected 包内所有类可见,包外有继承关系的子类可见default表示默认,不仅本类访问,而且是同包可见。语言描述可能理解的不够深刻,代码才是最有效的办法这是我的包结构:注释的代码...原创 2018-10-11 15:10:14 · 12582 阅读 · 2 评论 -
java8新特性学习
距离java8面世已经有好长时间了,前两天翻出来以前的代码,在这里做一个分享顺便也补全一下之前漏掉的知识。java8的新特性有很多,但是对于我这种水平的菜鸡来说很大一部分我都碰不到,碰到了也不会对我造成什么大的影响,所以我总结了一下对我比较有用的几个特性:Lambda表达式 函数式接口 Stream Optional类 新的日期API Lambda表达式Lambda 表达式,...原创 2018-09-05 16:52:08 · 130 阅读 · 0 评论 -
JAVA I/0流学习(二)
1.BufferedInputStream与BufferedOutputStream类BufferedInputStream类可以对所有InputStream类进行带缓存区的包装以达到性能的优化。BufferedInputStream类有两个构造方法:BufferedInputStream(InputStream in)BufferedInputStream(InputStream...原创 2018-09-08 10:53:01 · 1296 阅读 · 0 评论 -
【精选】JAVA入门算法题(一)
跌倒了,一定要爬起来。不爬起来,别人会看不起你,你也会失去机会。1.题目:打印出杨辉三角形(要求打印出10行)什么是杨辉三角呢?下面这个就是杨辉三角最大的特性就是每个数字都是该数字肩上的两个数字之和,这道题经常在学习二维数组和循环控制中出现我们可以假设吧这些数存在一个二维数组中,那么ints[i][j]=ints[i-1][j-1]+ints[i-1][j];我们可以很容易...原创 2018-12-02 13:27:47 · 4185 阅读 · 8 评论 -
【精选】JAVA入门算法题(二)
时时要有危机意识。别以为你命好运也好。1.题目:打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数 ,因为153=1的三次方+5的三次方+3的三次方。题非常简单,只要用for循环,取出数的个位、十位、百位差不多就完成了 for (int i=100;i<1000;i++){ int...原创 2018-12-02 14:53:32 · 934 阅读 · 2 评论 -
JAVA入门算法题(九)
交会修理你的朋友。这种朋友正是你人生的导师。1.加一/** *给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 * 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 * 你可以假设除了整数 0 之外,这个整数不会以零开头。 * * 示例 1: * 输入: [1,2,3] * 输出: [...原创 2018-12-22 20:26:51 · 558 阅读 · 0 评论 -
JAVA入门算法题(七)
有志者自有千计万计,无志者只感千难万难。1.链表合并 /** * 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 * 输入:1->2->4, 1->3->4 * 输出:1->1->2->3->4->4 */给出的链表结构:/** ...原创 2018-12-21 22:23:15 · 432 阅读 · 0 评论 -
JAVA入门算法题(六)
不只为了糊口,还要有抱负。你要想:在这个行业中,我要成为什幺样的人。一、最大的时间题目:给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间。最小的 24 小时制时间是 00:00,而最大的是 23:59。从 00:00 (午夜)开始算起,过得越久,时间越大。以长度为 5 的字符串返回答案。如果不能确定有效时间,则返回空字符串。示例:输入:[1...原创 2018-12-15 19:04:41 · 650 阅读 · 1 评论 -
JAVA入门算法题(三)
把敬业变成习惯。短期来看是为了雇主,长期来看是为了自己。1.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。估计统计字符是所有人都做过的题这里给出两种思路,第一种思路是比较ASCII码,第二种是使用正则匹配private static void Method1() { int letter=0; int space=0;...原创 2018-12-15 19:03:10 · 544 阅读 · 0 评论 -
【精选】JAVA入门算法题(五)
把敬业变成习惯。短期来看是为了雇主,长期来看是为了自己。1.题目:重复的字符串/** * 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 * * 输入: "abab" * 输出: True * 解释: 可由子字符串 "ab" 重复两次构成。 * * 输入: "aba" * 输出: False...原创 2018-12-02 21:56:30 · 755 阅读 · 0 评论 -
【精选】JAVA入门算法题(四)
把敬业变成习惯。短期来看是为了雇主,长期来看是为了自己。1.题目:全排列问题这种问题在算法题中应用很多,主要思路是使用递归来求,求n个数的全排列就是把第一个数固定后求n-1个数的全排列,不断递归到只有一个数private static void Method1() { disorder(array,0,array.length); } priva...原创 2018-12-02 19:09:37 · 776 阅读 · 0 评论 -
JAVA I/0 流学习(一)
java I/0流属于java基础知识,是每个java学习者必须要掌握的知识点,尤其是在学习网络编程时尤为重要。在变量、数组和对象中存储的数据是暂时存在的,程序结束后它们就会丢失,为了能够永久地保存程序创建的数据,需要将其保存在磁盘文件中,这样就可以在其他程序中使用它们。JAVA的 I/O技术可以将数据保存到文本文件中、二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求。掌握I/O处...原创 2018-09-07 20:10:44 · 2398 阅读 · 0 评论