JAVA算法学习
文章平均质量分 65
学习算法,拓展思维,提高JAVA编程能力。
梅森上校
十多年软件行业从业经验,热爱技术,精于项目管理和研发团队建设。闲暇至于,喜欢欣赏音乐,看看电影;摆弄摆弄茶道,让身心得以调整和休息。
展开
-
JAVA算法:求给定的无序非负整型数组中任意两个元素之间的最大差值(JAVA代码)
JAVA算法:求给定的非负整型数组中任意两个元素之间的最大差值(JAVA代码)给定一个无序的整型数组,数组元素均大于等于零。且数值在32位有符号整数范围内。找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间...原创 2019-06-16 23:18:14 · 908 阅读 · 0 评论 -
JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)
JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)写一个 JAVA程序以统计一个文本文件words.txt中每个单词出现的频率。为了简单起见,你可以假设:words.txt只包括小写字母和' '。每个单词只由小写字母组成。单词间由一个或多个空格字符分隔。示例:假设 words.txt 内容如下:the day is sunny the thethe ...原创 2019-06-15 10:29:42 · 1646 阅读 · 0 评论 -
JAVA算法:猴子吃桃子(JAVA版本算法)
JAVA算法:猴子吃桃子(JAVA版本算法)问题描述猴子吃桃子 有一只猴子第一天摘了很多桃,觉得很高兴就立刻吃了桃总数的一半,然后觉得没吃饱又吃了3个。猴子感觉这样吃桃会立刻没有,于是就定下一个规矩:每次在奇数天吃剩余桃总数的一半再多加3个 每次在偶数天吃剩余桃的总数的一半再多吃一个。请输入一个天数,使得该天数的剩余桃数正好为1,请输出猴子第一天共摘了多少个桃?问题分析我...原创 2019-06-10 00:17:42 · 2565 阅读 · 0 评论 -
JAVA算法:求最大连续子序列乘积问题(JAVA版本)
JAVA算法:求最大子数组乘积问题(JAVA版本)给定一个整数数组nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。问题分析算法设计Solution 1package com.bean.algorithmbasic;public class MaximumProductSubarray { /* * 最大连续子数组乘积 * ...原创 2019-06-09 23:14:41 · 1374 阅读 · 0 评论 -
JAVA算法:移动到终点的数字(Reach a Number)
JAVA算法:移动到终点的数字(Reach a Number)在一根无限长的数轴上,你站在0的位置。终点在target的位置。每次你可以选择向左或向右移动。第 n 次移动(从 1 开始),可以走 n 步。返回到达终点需要的最小移动次数。示例 1:输入: target = 3输出: 2解释:第一次移动,从 0 到 1 。第二次移动,从 1 到 3 。示例 2:输入:...原创 2019-06-08 22:56:32 · 651 阅读 · 0 评论 -
JAVA算法:校验数字(Valid Number)JAVA版本
JAVA算法:校验数字(Valid Number)JAVA版本验证给定的字符串是否可以解释为十进制数字。例如:"0"=>true" 0.1 "=>true"abc"=>false"1 a"=>false"2e10"=>true" -90e3"=>true" 1e"=>false"e3"=>...原创 2019-06-08 11:48:56 · 4626 阅读 · 0 评论 -
JAVA算法:走迷宫回溯算法设计(JAVA版本)
JAVA算法:走迷宫回溯算法设计(JAVA版本)迷宫数组 int[][] maze = { {0, 1, 0, 0, 0}, {0, 1, 0, 1, 0}, {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, ...原创 2019-06-07 23:16:48 · 908 阅读 · 0 评论 -
JAVA算法:整数旋转(Rotate Integer)JAVA版本
JAVA算法:整数旋转(Rotate Integer)JAVA版本给定一个整数,输出将其旋转后的结果。解决这个问题需要注意思考几个特殊点:1、给定的整数处理后超出整数的表示范围,溢出。2、尾数有0的情况,例如:100,处理后的结果是什么?3、程序中如何捕获异常。算法分析(思路)通过对数字模十取余得到它的最低位。其实本题考查的是整数相加的溢出处理,检查溢出有这么几种办法:...原创 2019-06-07 22:36:35 · 749 阅读 · 0 评论 -
JAVA算法:旋转数组元素(Rotate Array)JAVA版本求解
JAVA算法:旋转数组元素(Rotate Array)JAVA版本求解给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,...原创 2019-06-07 22:21:06 · 726 阅读 · 0 评论 -
LeetCode 246&247&248题解:Strobogrammatic Number II&III(JAVA版本)
LeetCode246&247&248题解:Strobogrammatic Number I&II&III (JAVA版本)LeetCode 246A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down)....原创 2019-06-07 21:15:13 · 1016 阅读 · 0 评论 -
JAVA算法:查找给定的数组中只出现了一次的数组元素
JAVA算法:查找给定的数组中只出现了一次的数组元素一个整形数组中,除了两个数字之外,其它数字都出现了两次。写一个程序,求出只出现了一次的数字。例如:数组元素为 4,2,8,3,4,5,8,7,7,2上述数组中元素3和元素5只出现了一次。算法设计package com.bean.algorithmexec;import java.io.FileInputStream;im...原创 2019-06-07 14:32:45 · 696 阅读 · 0 评论 -
JAVA算法:在给定的数组中查找出现次数最多的元素(JAVA版本)
JAVA算法:在给定的数组中查找出现次数最多的元素(JAVA版本)题目要求:在给定的数组中查找出现次数最多的元素,以及其出现的次数。例如:在数组{ 2, 3, 1, 2, 2, 5, 6, 8, 2, 3, 2, 4, 2 }中,元素2出现的次数最多,一共出现了 6次。问题分析对于这个问题,要求的结果是找到出现次数最多的元素,以及其出现的次数。分析这个问题,我们可以使用一个...原创 2019-06-07 14:19:57 · 7689 阅读 · 2 评论 -
JAVA算法:回形矩阵输出
JAVA算法:回形矩阵输出题目要求给定一个整形矩阵Matrix,请按照顺时针方向转圈的方式,输入(打印)元素值。例如:1 2 3 45 6 7 89 10 11 1213 14 15 16输出结果为:1 2 3 412 13 14 511 16 15 610 9 8 7算法设计package com.bean.algorithmexec;...原创 2019-06-04 21:37:15 · 2646 阅读 · 0 评论 -
JAVA算法:矩阵旋转(JAVA代码)
JAVA算法:矩阵旋转(JAVA代码)给定一个N*N的二维矩阵,顺时针旋转90度后,输出该矩阵。例如:给定矩阵:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16顺时针旋转90度后,输出结果:13 9 5 1 14 10...原创 2019-06-04 20:52:29 · 2720 阅读 · 0 评论 -
JAVA算法:House Robber I&II&III JAVA版本解题
JAVA算法:House Robber I&II&III JAVA版本解题LeetCode198.House Robberhttps://leetcode.com/problems/house-robber/LeetCode213.House Robber IIhttps://leetcode.com/problems/house-robber-ii/Leet...原创 2019-06-03 00:21:56 · 322 阅读 · 0 评论 -
JAVA算法:三角形周长(JAVA版本算法)
JAVA算法:三角形周长(JAVA版本算法)给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8...原创 2019-06-02 00:12:01 · 2518 阅读 · 0 评论 -
JAVA算法:合并石子堆——JAVA版本算法(动态规划算法)
JAVA算法:合并石子堆——JAVA版本算法(动态规划算法)在一个圆形操场的四周摆放着n堆石子(n<= 100),现要将石子有次序地合并成一堆。规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。请编写算法,读入石子堆数n及每堆的石子数(<=20)。选择一种合并石子的方案,使得做n-1次合并,得分的总和最小。例如:有4堆石子:4 4 5 9...原创 2019-06-01 23:55:07 · 1472 阅读 · 0 评论 -
JAVA算法:贪心算法典型题目详解 (JAVA版本 共6题)
JAVA算法:贪心算法典型题目详解(JAVA版本)题目一:最优装载问题一条小船用来运输古董到河对岸。假设船的最大载重量为MAXWEIGHT,每件古董的重量为,怎么能够装载最多数量的古董到船上呢?样例数据:MAXWEIGHT 为 30给定8个古董,重量分别为:[4, 10, 7, 11, 3, 5, 14, 2]算法分析这个问题是一个典型的可以使用贪心算法解决的问题。...原创 2019-05-28 21:28:44 · 8077 阅读 · 4 评论 -
LeetCode刷题:403. Frog Jump 青蛙过河问题JAVA算法设计
LeetCode刷题:403. Frog Jump 青蛙过河问题JAVA算法设计A frog is crossing a river. The river is divided into x units and at each unit there may or may not exist a stone. The frog can jump on a stone, but it must n...原创 2019-05-25 22:29:55 · 1281 阅读 · 0 评论 -
LeetCode刷题:301. Remove Invalid Parentheses (DFS算法设计和BFS算法设计)
LeetCode刷题:301. Remove Invalid Parentheses原题链接:https://leetcode.com/problems/remove-invalid-parentheses/Remove the minimum number of invalid parentheses in order to make the input string valid. Re...原创 2019-05-25 22:18:09 · 241 阅读 · 0 评论 -
LeetCode刷题:20. Valid Parentheses
LeetCode刷题:20. Valid Parentheses原题链接:https://leetcode.com/problems/valid-parentheses/Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string i...原创 2019-05-25 21:44:53 · 194 阅读 · 0 评论 -
JAVA算法:最长重复子序列(JAVA)
JAVA算法:最长重复子序列(JAVA)Longest Repeating SubsequenceGiven a string, find length of the longest repeating subseequence such that the two subsequence don’t have same string character at same position, i...原创 2019-05-21 22:47:46 · 1188 阅读 · 1 评论 -
JAVA算法:最长重复子串问题(JAVA解题)
JAVA算法:最长重复子串问题(JAVA解题)Given a string str, find the longest repeating non-overlapping substring in it. In other words find 2 identical substrings of maximum length which do not overlap. If there exi...原创 2019-05-21 22:38:39 · 1416 阅读 · 0 评论 -
JAVA算法:括号配对问题与卡塔兰数(Catalan number)
JAVA算法:括号配对问题与卡塔兰数(Catalan number)LeetCode中第22题目:22.Generate Parentheses原题链接:https://leetcode.com/problems/generate-parentheses/Given n pairs of parentheses, write a function to generate all co...原创 2019-05-19 18:48:19 · 1083 阅读 · 0 评论 -
JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计
JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计看到了这样的一道题目,还挺有意思,可以通过不同的算法设计来求解。话说大诗人李白,一生好饮。一日,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇...原创 2019-05-19 11:53:51 · 1060 阅读 · 0 评论 -
LeetCode刷题:30. Substring with Concatenation of All Words
LeetCode刷题:30. Substring with Concatenation of All Words原题链接:https://leetcode.com/problems/substring-with-concatenation-of-all-words/You are given a string, s, and a list of words, words, that are...原创 2019-05-19 00:18:43 · 106 阅读 · 0 评论 -
JAVA算法:求丑数—动态规划
JAVA算法:求丑数—动态规划(Ugly Numbers)丑数是唯一的因子是2、3或5的数字。序列1,2,3,4,5,6,8,9,10,12,15,…显示前11个丑数。按照惯例,1包括在内。给定一个数字n,你的任务就是找出第n个丑数。实例:输入:n=7输出:8输入:n=10输出:12输入:n=15输出:24输入:n=150输出:5832算法设计1...原创 2019-04-27 16:42:12 · 864 阅读 · 0 评论 -
JAVA算法:欧几里德算法(GCD)又称辗转相除法计算两个整数a,b的最大公约数(JAVA代码)
JAVA算法:欧几里德算法(GCD)又称辗转相除法计算两个整数a,b的最大公约数(JAVA代码)package com.bean.algorithmbasic;public class GDCDemo { /* * 欧几里德算法(GCD)又称辗转相除法,用于计算两个整数a,b的最大公约数。 * 基本思路:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd...原创 2019-05-17 23:39:12 · 1962 阅读 · 0 评论 -
JAVA代码—算法基础:埃及分数问题
埃及分数问题问题描述分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数按下面的方法分解为埃及分数: 1.若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数; 2.若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为b/a+1的埃及分数; 3.用这种方法将剩余部分反复分解,最后可得到结果。如:8/11=1/2 + 1/5 + 1/37 + 1/4070。...原创 2018-03-11 10:58:16 · 1319 阅读 · 0 评论 -
JAVA算法:递归求解母牛问题(JAVA代码)
JAVA算法:递归求解母牛问题(JAVA代码)package com.bean.algorithmbasic;public class CowProblem { /* * 由于所有的母牛都不会死,所以第N-1年的牛会毫无损失的活到第N年。 * 同时,所有成熟的牛都会生一头新的母牛,那么成熟牛的数量如何估计? * 就是第N-3年的所有牛,到第N年肯定都是成熟的牛,期...原创 2019-05-17 23:30:43 · 1214 阅读 · 0 评论 -
JAVA代码—算法基础:活动安排问题(贪心算法)
活动安排问题(贪心算法)求解问题描述:设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。 每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si < fi。 如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i...原创 2018-02-21 23:39:14 · 3355 阅读 · 2 评论 -
LeetCode刷题:76. Minimum Window Substring (JAVA 算法实现)
LeetCode刷题:76. Minimum Window Substring原题链接:https://leetcode.com/problems/minimum-window-substring/Given a string S and a string T, find the minimum window in S which will contain all the characte...原创 2019-05-14 23:40:10 · 576 阅读 · 0 评论 -
LeetCode刷题:682. Baseball Game
LeetCode刷题:682. Baseball Game原题链接:https://leetcode.com/problems/baseball-game/You're now a baseball game point recorder.Given a list of strings, each string can be one of the 4 following types:...原创 2019-05-11 21:40:48 · 202 阅读 · 0 评论 -
LeetCode刷题:27. Remove Element
LeetCode刷题:27. Remove Element原题链接:https://leetcode.com/problems/remove-element/Given an array nums and a value val, remove all instances of that value in-place and return the new length.Do not a...原创 2019-05-11 21:17:18 · 165 阅读 · 0 评论 -
LeetCode刷题:26. Remove Duplicates from Sorted Array
LeetCode刷题:26. Remove Duplicates from Sorted Array原题:https://leetcode.com/problems/remove-duplicates-from-sorted-array/Given a sorted arraynums, remove the duplicatesin-placesuch that each elem...原创 2019-05-11 21:05:59 · 184 阅读 · 0 评论 -
LeetCode刷题:771. Jewels and Stones
LeetCode刷题:771. Jewels and Stones原题链接:https://leetcode.com/problems/jewels-and-stones/You're given stringsJrepresenting the types of stones that are jewels, andSrepresenting the stones you hav...原创 2019-05-11 20:52:28 · 162 阅读 · 0 评论 -
LeetCode刷题:125. Valid Palindrome
LeetCode刷题:125. Valid Palindrome原题链接:https://leetcode.com/problems/valid-palindrome/Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.N...原创 2019-05-09 23:42:45 · 113 阅读 · 0 评论 -
LeetCode刷题:929. Unique Email Addresses
LeetCode刷题:929. Unique Email Addresses原题链接:https://leetcode.com/problems/unique-email-addresses/Every email consists of a local name and a domain name, separated by the @ sign.For example, inal...原创 2019-05-09 22:50:44 · 537 阅读 · 0 评论 -
JAVA算法:棋盘覆盖算法(经典算法问题)
JAVA算法:棋盘覆盖算法(经典算法问题)经典算法问题:在一个2^k×2^k (k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4^k种,因而有4^k种不同的棋盘,下图(1)所示是k=2时16种棋盘中的一个。棋盘覆盖问题(chess cover problem)要求用图(2)所示的4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以...原创 2019-05-09 22:22:59 · 1085 阅读 · 0 评论 -
JAVA代码—算法基础:贪心算法在活动安排问题中的应用
贪心算法在活动安排问题中的应用问题描述有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个活动场地可以利用,活动之间不能交叠,求最多安排多少个活动?问题分析活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用...原创 2018-03-09 18:14:27 · 4794 阅读 · 0 评论