
Java算法
文章平均质量分 79
常见的Java算法以及各大网站和算法竞赛的试题解析
日月星辰TEL
如果技术不用于分享,将黯然失色...
展开
-
LeetCode 150. 逆波兰表达式求值
一、问题描述根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2输入:tokens = ["4","1...原创 2021-03-20 19:38:14 · 614 阅读 · 0 评论 -
第十一届蓝桥杯大赛个人赛校内选拔(软件类)题目
1.15.125GB2.约数个数3.叶结点数4.数字95.数位递增的数6.递增三元组7.音节判断8.长草9.序列计数10.晚会节目单...转载 2020-12-23 20:46:19 · 530 阅读 · 0 评论 -
第十一届蓝桥杯大赛个人赛校内选拔(软件类)题解
1.15.125GB【问题描述】在计算机存储中,15.125GB是多少MB?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。154882.约数个数【问题描述】1200000有多少个约数(只计算正约数)。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。11113.叶结点数【问..原创 2021-01-24 23:55:03 · 968 阅读 · 3 评论 -
LeetCode239. 滑动窗口最大值
问题描述给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大值--------------- -----...原创 2020-10-06 13:36:09 · 836 阅读 · 8 评论 -
第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)
010101010010110010010101100101101001000010001010100000100010000010101001000010000000100110011010010101111011010010001000001101001011100011000000010000010000000010101000110100001010000010101010110010110001111100000010100001001010001...原创 2020-09-11 17:52:35 · 1710 阅读 · 2 评论 -
Java线程池对多个目录下的相同文件按照时间顺序合并
一、问题描述存在若干个文件夹,文件夹名称以年月为名(一个月份一个文件夹)例:201901,201902,202011,202012每个文件夹下有上w个txt文件,文件名均为9位数数字例:204125631.txt,315125620.txt,478125650.txt每个txt文文有进上千行数据,并且每个文件夹(年月为名)下的9位数文件名都相同(只有少部分不一样)二、问题需求现在需要将每个月的文件夹下具有相同文件名的txt文件按照时间排序进行合并(不要求源文件不变)三、代码实现原创 2020-06-08 09:14:02 · 995 阅读 · 0 评论 -
Leetcode 6. Z 字形变换
6. Z 字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);...原创 2020-05-31 10:20:44 · 754 阅读 · 0 评论 -
动态规划入门之走方格(Java实现)
一、问题描述给定 一个 m x n 的棋盘,只能向右或者向下走,,求棋子从左上角走到右下角的情况一共有多少种?二、结题思路状态转移方程:f[m][n] = f[m-1][n]+f[m][n-1]三、代码实现public class Maze { public static void main(String[] args) { int result = new Maze...原创 2020-02-23 23:40:05 · 1449 阅读 · 0 评论 -
java输入数字输出菱形
java输入数字输出菱形1、要求用两个for循环输出一个菱形。2、代码import java.util.Scanner;/** * java输入数字输出菱形 * @author com * */public class Test { static Scanner sc = new Sca...原创 2019-07-20 15:49:10 · 5055 阅读 · 0 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题H:人物相关性分析
问题描述代码实现import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;import java.util.TreeMap;/**...原创 2020-02-10 11:36:49 · 1209 阅读 · 6 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题G:外卖店优先级
问题描述代码实现import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;/** * 试题G:外卖店优先级 * @author c...原创 2020-02-08 14:33:07 · 859 阅读 · 4 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题F:特别数的和
问题描述实现代码import java.util.Scanner;public class SumNumbers { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { core(); } public static void core()...原创 2020-02-07 11:19:50 · 892 阅读 · 5 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题D:数的分解
问题描述实现代码package com.lanqiao.JavaB2019;/** * 试题D:数的分解 * @author com * 结果:40785 */public class JavaD { public static void main(String[] args) { f(); } public static int f() { int co...原创 2019-07-26 00:38:45 · 716 阅读 · 0 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题D:数的分解
问题描述代码实现/** * 试题D:数的分解 * 第40785种:1999 19 1 * @author com * */public class Disintegrate { public static void main(String[] args) { core(); } public static void core() { int n = 0;...原创 2020-02-06 03:00:27 · 997 阅读 · 3 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题C:数列求值
问题描述实现代码:package com.gxwz.lanqiaobei;import java.util.Arrays;/** * 试题C:数列求值 * @author com */public class Sequence { public static void main(String[] args) { core(); } public sta...原创 2020-02-06 01:00:19 · 939 阅读 · 0 评论 -
Java常用数据结构内存大小比较
测试对象:ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap适用场景:ArrayList:查找快,增删慢 LinkedList:增删快,查找慢 HashSet:值去重,不排序 TreeSet:值去重,且排序(默认升序排序) HashMap:键去重,不排序 TreeMap:键去重,且排序(需手动排序)测试...原创 2020-02-05 13:22:57 · 1740 阅读 · 0 评论 -
动态规划之回溯法(马踏棋盘)
需求来源:4399之马踏棋盘小游戏:http://www.4399.com/flash/146267_2.htm游戏规则:将国际象棋马放入一个6x6的棋盘中,随机指定一个初始位置,求棋子走完棋盘的步法解题思路:二维数组模拟棋盘,记录其步数,再使用一个boolean型的二维数组模拟棋盘,判断其位置是否已经走过 使用Java的Point类表示棋子,根据国际象棋...原创 2020-02-03 22:07:25 · 1778 阅读 · 0 评论 -
数据结构
稀疏数组稀疏数组(sparse array)是一种只为数组中的非零元素分配内存的特殊类型数组内存中存储 了稀疏数组中非零元素的下标和值public class SparseArray { /** * <p> * 稀疏数组可以简单的看作为是压缩,在开发中也会使用到。比如将数据序列化到磁盘上,减少数据量,在IO过程...原创 2020-02-10 22:58:24 · 745 阅读 · 0 评论 -
十大排序之冒泡排序
冒泡排序作为十大排序之一,是一种简单且稳定的排序算法算法思想可以联想为向湖中下石头和较轻的石头变成泡泡上浮的过程想象每一块石头处在相应的高度,从上往下相邻两个石头进行比较,较大的石头往下沉,替代下一石头的位置较轻的石头像泡泡一样往上浮一个单位,直到这一轮最重的石头沉到湖底,此趟比较才结束此时,最重的石头已经再湖底,不需要再参加下一趟排序,可以想象为以及与湖底融为一体了可以得到,每次排序...原创 2020-01-31 18:12:11 · 879 阅读 · 0 评论 -
蓝桥杯算法考前复习要点和归纳总结
一、重要知识要点1、穷举法 2、枚举法 3、动态规划 4、回溯法 5、图论 6、深度优先搜索(DFS) 7、广度优先搜索(BFS )8、二叉树 9、递归 10、分治法、矩阵法 11、排列组合 12、素数、质数、水仙花数 13、欧几里得定理gcd14、求最大公约数、最小公倍数 15、海伦公式(求三角形面积) 16、博弈论 17、贪心...原创 2019-07-09 23:07:17 · 11780 阅读 · 0 评论 -
十大排序之插入排序
插入排序作为十大排序之一,是一种简单且稳定的排序算法算法思想相对直观,可以联想自己平常打扑克牌,发牌时自己边摸牌边整理牌顺序的场景算法思想:A[i] 与 A[i] 之前的元素 A[j逐个进行比较,如果 A[i]<A[j],则交换,否则 j++,A[j] 往后移一位,直到指针 i=j 时 A[j] 停止移动,A[i] 往后移一位,A[j] 重新从 0 开始到 i 依此类推,直...原创 2020-01-08 13:23:41 · 920 阅读 · 0 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 试题B:不同子串
问题描述方法一package com.gxwz.lanqiaobei; import java.util.ArrayList;import java.util.List; /** * 不同子串 * @author com * */public class JavaB2019 {// static String str = "aaab"; //substring[...原创 2019-07-24 22:55:33 · 1295 阅读 · 0 评论 -
Java Map遍历的六种方式
Java Map遍历的六种方式目录1、map.keySet()取得key的set集合,foreach遍历2、map.keySet()取得key的set集合,Iterator游标迭代3、map.entrySet()方法把map转成Set,foreach遍历4、map.entrySet()方法把map转成S...原创 2019-10-12 12:29:03 · 2114 阅读 · 0 评论 -
二分递归:数组求和(java实现)
二分递归:数组求和1、代码实现:package com.mooc.arithmetic;/** * 二分递归:数组求和 * @author com *分治思想:先把问题分解成两个子问题,再把两个子问题递归地分解成最简单的子问题, * 最后再把所有的子问题合并 */public class BinarySum { static int A[] = {15,...原创 2019-07-03 09:58:51 · 1597 阅读 · 0 评论 -
蓝桥杯练习系统:入门训练 Fibonacci数列 (Java实现)
入门训练 Fibonacci数列 (Java实现)问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。...原创 2019-04-26 12:13:43 · 957 阅读 · 0 评论 -
杭电oj: 1002 A + B Problem II java实现
杭电oj:A + B Problem II java实现A + B Problem IITime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 474597Accepted Submission(s): 91595Proble...原创 2019-04-21 16:08:21 · 699 阅读 · 1 评论 -
杭电oj: 1001 Sum Problem java实现
杭电:1001 Sum Problem java实现Sum ProblemTime Limit: 1000/500 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 623141Accepted Submission(s): 157688Problem De...原创 2019-04-21 13:22:44 · 707 阅读 · 0 评论 -
杭电oj: 1000 A + B Problem Java实现
A + B Problemimport java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNextInt()) { int a = sc.nextInt();...原创 2019-04-20 17:10:34 · 555 阅读 · 0 评论 -
第十届蓝桥杯大赛软件类省赛 Java 大学 B组 真题
原创 2019-03-27 17:26:06 · 892 阅读 · 0 评论 -
第七届蓝桥杯大赛个人赛省赛(软件类)Java真题 标题:煤球数目(递归实现)
煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),....如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。package com.gxwz.test;/* * 标题:煤球数目(递归实现) *...原创 2019-03-23 23:46:24 · 516 阅读 · 0 评论 -
标题:Java递归全排列
import java.util.Arrays;/* * 标题:全排列 */public class Main { static int A[] = {1,2,3,4}; public static void main(String[] args) { f(A,0); } public static void f(int A[],int start) { if(st...原创 2019-03-23 22:49:54 · 528 阅读 · 0 评论 -
第九届蓝桥杯大赛个人赛省赛(软件类)Java类 真题 第五题 标题:全球变暖
标题:全球变暖你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:........##.....##........##...####....###........其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。 由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一...原创 2019-03-23 19:04:26 · 663 阅读 · 2 评论 -
第九届蓝桥杯大赛个人赛省赛(软件类)Java类 真题 第五题 标题:快速排序
标题:快速排序以下代码可以从数组a[]中找出第k小的元素。 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的。请仔细阅读分析源码,填写划线部分缺失的内容。package com.wzxy.test;import java.util.Random;public class Main2{ public static void main(String arg...原创 2019-03-23 09:54:10 · 611 阅读 · 0 评论 -
第九届蓝桥杯大赛个人赛省赛(软件类)Java真题第七题 标题:螺旋折线
标题:螺旋折线如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次。 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度。 例如dis(0, 1)=3, dis(-2, -1)=9 给出整点坐标(X, Y),你能计算出dis(X, Y)吗?【输入格式】X和Y对于40%的数据,-1000 <= X, Y &...原创 2020-02-27 00:09:59 · 1061 阅读 · 3 评论 -
第九届蓝桥杯大赛个人赛省赛(软件类)Java真题 第六题 标题:递增三元组
标题:递增三元组给定三个整数数组A = [A1, A2, ... AN],B = [B1, B2, ... BN],C = [C1, C2, ... CN],请你统计有多少个三元组(i, j, k) 满足:1. 1 <= i, j, k <= N 2. Ai < Bj < Ck 【输入格式】第一行包含一个整数N。第二行包含N个整数A1, ...原创 2019-03-22 23:32:41 · 700 阅读 · 0 评论 -
第八届蓝桥杯B组Java类真题 第九题 标题: 分巧克力
标题: 分巧克力 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2...原创 2019-03-22 18:30:12 · 770 阅读 · 0 评论 -
第八届蓝桥杯省赛-软件类-Java第六题 标题:最大公共子串
标题:最大公共子串最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少。比如:"abcdkkk" 和 "baabcdadabc",可以找到的最长的公共子串是"abcd",所以最大公共子串长度为4。下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。请分析该解法的思路,并补全划线部分缺失的代码。public class Main ...原创 2019-03-22 14:23:05 · 536 阅读 · 0 评论 -
第八届蓝桥杯省赛-软件类-Java类真题 第二题 标题:纸牌三角形
标题:纸牌三角形A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。下图就是一种排法(如有对齐问题,参看p1.png)。 这样的排法可能会有很多。如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?请你计算并提交该数字。注意:需要提交的是一个整数,不要提交任何多余内容。package com.gxw...原创 2019-03-22 08:39:20 · 721 阅读 · 0 评论 -
第八届蓝桥杯大赛个人赛省赛(软件类)真题 标题:日期问题
package com.wzxy.test;import java.util.Scanner;/* * 标题:日期问题 */public class Main{ static int year,month,day,Mon; static Scanner sc = new Scanner(System.in); static String str = sc.next(); ...原创 2019-03-20 16:11:15 · 594 阅读 · 0 评论 -
Java算法:走阶梯(大数数组运算)(非递归,效率高)
import java.math.BigInteger;import java.util.Scanner;/* * 大数运算 * 走阶梯:一次只能走一阶或者两阶,一共有N个阶梯(0<N<=100) * 问题:一共有多少个走法? * 操作:输入N个阶梯,输出sum种方法 */public class Main1 { static Scanner sc = new...原创 2019-03-19 18:38:12 · 1607 阅读 · 0 评论