Algorithm
算法和数据结构
wowpH
不简单的Java。 Vue,LeetCode,PTA,OJ,ACM,POJ,WUSTOJ,算法,数据结构。
展开
-
计数排序(Counting Sort)Java
本文包含计数排序的说明,算法步骤,步骤演示,复杂度分析和代码实现。计数排序的时间复杂度为O(3n+k),空间复杂度为O(k),适合在数据较多,数据范围较小的情况下使用。当数据范围较大的时候,算法的效率降低,不宜采用此算法。计数排序是一种稳定的排序算法。不同于常见的排序算法基于比较实现的,此算法是基于统计实现的。原创 2020-06-08 14:56:04 · 1364 阅读 · 0 评论 -
二分查找(Binary Search)Java - 循环,递归
使用循环和尾递归两种方法实现的二分查找算法Java代码。时间复杂度为O(log(n)),空间复杂度为O(1)。原创 2020-05-22 12:31:50 · 424 阅读 · 0 评论 -
养鸡场还有多少只鸡? - Java - PriorityQueue,大顶堆
笔试题,阿里巴巴,养鸡场,Java,Queue,PriorityQueue,大顶堆,Comparator,Integer,wowpH,CSDN。原创 2020-04-05 20:32:22 · 761 阅读 · 3 评论 -
LeetCode 1162. As Far from Land as Possible - Java - BFS
LeetCode,1162,题目,链接,中等,示例,提示,Java,BFS,宽度优先搜索,广度优先搜索,Queue,LinkedList,offer,poll,isEmpty,size,二维数组,wowpH,CSDN。原创 2020-03-30 13:19:30 · 232 阅读 · 0 评论 -
LeetCode 820. Short Encoding of Words - Java - Trie
LeetCode,820,题目,链接,Java,中等,示例,提示,Trie,字典树,单词查找树,排序,String,Arrays,sort,Lambda,CSDN。原创 2020-03-28 16:31:33 · 218 阅读 · 0 评论 -
Java构造哈夫曼树(Huffman Tree)
Huffman Tree,哈夫曼树,Java,Arrays,PriorityQueue,构造,WPL,数组,内部类,Comparable,Queue。原创 2020-03-24 23:51:25 · 700 阅读 · 0 评论 -
LeetCode 28. Implement strStr() - KMP
LeetCode,28,题目,链接,Java,简单,示例,提示,整数,二维数组,暴力搜索算法,双指针,KMP算法,字符串搜索,优化,CSDN。原创 2020-02-04 17:15:01 · 178 阅读 · 0 评论 -
LeetCode 1320. Minimum Distance to Type a Word Using Two Fingers - DP
LeetCode,第171场周赛,1320,题目,题解,链接,Java,Hard,示例,提示,时间复杂度,空间复杂度,整数,动态规划,DP,三维数组,csdn,防伪标识。其实不是很难,就是遍历每次手指所在键位加上当前移动的距离。原创 2020-01-15 12:18:20 · 604 阅读 · 0 评论 -
LeetCode 5274. Number of Ways to Stay in the Same Place After Some Steps - Java - DP
LeetCode,第164场周赛,5274,题目,题解,链接,Java,Hard,示例,提示,时间复杂度,空间复杂度,整数,动态规划,DP,mod,二维数组,steps,cnblogs,csdn,防伪标识。转载 2019-11-24 23:02:57 · 202 阅读 · 0 评论 -
PAT(B) 1030 完美数列 - C语言 - 滑动窗口 & 双指针
PAT,乙级,1030,完美数列,题目,链接,输入样例,输出样例,题解,C语言,代码,滑动窗口,双指针。转载 2019-11-22 22:56:15 · 287 阅读 · 0 评论 -
POJ 1251 Jungle Roads - C语言 - Kruskal算法
POJ,1251,Jungle Roads,题目,链接,C语言,Kruskal算法,并查集,图。转载 2019-11-22 16:18:50 · 275 阅读 · 0 评论 -
LeetCode 5240. 串联字符串的最大长度 - Java - 回溯算法
LeetCode,第160场周赛,题目,题解,链接,Java,难度中等,示例,提示,时间复杂度,空间复杂度,隐藏提示,串联字符串的最大长度,回溯算法,字符串,长度,数组,防伪标识。原创 2019-10-29 13:20:22 · 401 阅读 · 1 评论 -
LeetCode 1234. 替换子串得到平衡字符串 Replace the Substring for Balanced String - Java - 滑动窗口
LeetCode,第159场周赛,题目,题解,链接,Java,难度中等,示例,提示,时间复杂度,空间复杂度,隐藏提示,替换子串得到平衡字符串,Replace the Substring for Balanced String,滑动窗口,双指针,字符串,数组,统计,数量,防伪标志,1024程序员节。原创 2019-10-24 07:51:03 · 693 阅读 · 0 评论 -
LeetCode 5215. 黄金矿工(Java)DFS
第 157 场周赛,题解,题目链接,题目,示例,难度中等,提示,时间复杂度,空间复杂度,DFS,深度优先搜索,递归,二维数组,访问标志,遍历,方向,for循环,有返回值的dfs。原创 2019-10-06 20:59:31 · 715 阅读 · 0 评论 -
LeetCode 5198. 丑数 III(Java)容斥原理和二分查找
第 155 场周赛,题解,题目链接,题目,示例,难度中等,提示,时间复杂度,空间复杂度,丑数,容斥原理,二分查找,整除,最大公约数,最小公倍数,gcd,lcm。原创 2019-09-26 13:05:13 · 638 阅读 · 0 评论 -
LeetCode 5073. 进击的骑士(Java)BFS
第 9 场双周赛,题解,题目链接,题目,示例,难度中等,提示,Math,宽度优先搜索,广度优先搜索,BFS,马,路径,棋盘,二维数组,Queue,LinkedList。原创 2019-09-23 11:42:49 · 443 阅读 · 1 评论 -
POJ 1661 Help Jimmy(C)动态规划
POJ,1661,Help Jimmy,动态规划,C,解题思路,截图,二维数组,结构体数组。时间复杂度,空间复杂度,升序排序,自定义比较函数,qsort,compare,limit.h,INT_MAX,提交结果。原创 2019-09-10 11:37:22 · 206 阅读 · 0 评论 -
PAT(B) 1035 插入与归并(Java)
题目描述根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?输入格式输入在第一行给出正整数 N (≤100)原创 2019-08-24 10:18:46 · 280 阅读 · 0 评论 -
PAT(B) 1074 宇宙无敌加法器(Java)
题目描述地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是 7 进制数、第 2 位是 2 进制数、第 3 位是 5 进制数、第 4 位是 10 进制数,等等。每一位的进制 d 或者是 0(表示十进制)、或者是 [2,9] 区间内的整数。理论上这个进制表应该包含无穷多位数字,但从实际应用出发,PAT 星人通常只需要记原创 2019-08-20 21:54:58 · 182 阅读 · 3 评论 -
WUSTOJ 1346: DARK SOULS(Java)并查集
CQ最近在玩一款游戏:DARK SOULS,这是一款以高难度闻名的硬派动作游戏,而CQ就在这虐与被虐的反复循环中获得了极大的快感(咦我好像泄露了什么……)。CQ自诩核心玩家,但是他又是个很懒的人。作为一款小怪都可以一套秒人的游戏,DARK SOULS采取的是即时存储制,一不小心挂了就要从复活点重新跑尸,不仅麻烦还要倍加小心(打死的小怪都复活了……一旦跑尸路上被杀还会发生很丧心病狂的事情……),因此CQ决定采用S/L大法,每隔一段时间退出游戏备份存档。现在问题来了!我们将CQ当前正探索的区域理原创 2019-07-04 23:46:54 · 192 阅读 · 0 评论 -
WUSTOJ 1337: Car race game(C)树状数组,离散化
Bob is a game programming specialist. In his new car race game, there are some racers(n means the amount of racers (1<=n<=100000)) racers star from someplace(xi means Starting point coordinate),and they possible have different speed(V means speed).so it po原创 2019-07-02 10:50:57 · 184 阅读 · 0 评论 -
WUSTOJ 1336: Lucky Boy(Java)博弈
Recently, Lur have a good luck. He is also the cleverest boy in his school as he create the most popular computer game – Lucky Boy. The game is played by two players, a and b, in 2d planar .In the game Lucky Boy, there are n different points on plane, each原创 2019-06-30 09:32:29 · 265 阅读 · 0 评论 -
WUSTOJ 1320: 饭卡(Java)动态规划-背包
Description武汉科技大学南苑食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。Input第一行为T,表示数据组数(1<=T<=100)对于每组数据:第一行为正整数n,表示菜的数量。n<=1000。原创 2019-06-24 11:16:42 · 214 阅读 · 0 评论 -
WUSTOJ 1319: 球(Java)并查集
Icy is a lonely boy. He was so boring these days. So he started to play a game himself. First, he took a heap of balls with many different colors. ( One ball with only one color ) Then he repeated to pick two balls and put them back. Each time the two ball原创 2019-06-23 11:04:18 · 278 阅读 · 0 评论 -
WUSTOJ 1317: cms的苦恼(Java)快速幂
Descriptioncms最近经常爱发呆,导致苦恼指数一直上升,cms每发呆一分钟苦恼指数变成原来的a倍,已知当前cms的苦恼指数为c,求他发呆b分钟后的苦恼指数。由于结果比较大,最后结果对100000007求模。数据范围:a,b,c均为整数。1=<a,b,c<=10^9Input多组测试数据,每组输入a b cOutput每组输出一个苦恼指数原创 2019-06-21 09:50:01 · 137 阅读 · 0 评论 -
WUSTOJ 1311: 开心的金明(Java)动态规划-01背包
金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过`N`元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的`N`元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过`N`元(可以等于`N`元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第`j`件原创 2019-06-18 22:50:38 · 202 阅读 · 0 评论 -
WUSTOJ 1308: 采药(Java)动态规划-01背包
辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”如果你是辰辰,你能完成这个任务吗?输入的第一行有两个整数`T`(1 <= `T` <= 1000)和M(1 <原创 2019-06-15 22:58:01 · 273 阅读 · 0 评论 -
WUSTOJ 1305: 最短路(Java)
Bellman-Ford(贝尔曼-福特)算法,最短路,有向图。给定一个nnn个顶点,mmm条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从111号点到其他点的最短路(顶点从111到nnn编号)。第一行两个整数nnn, mmm。接下来的mmm行,每行有三个整数uuu, vvv, lll,表示uuu到vvv有一条长度为lll的边。共n−1n-1n−1行,第iii行表示111号点到i+1i+1i+1号点的最短路。原创 2019-06-10 19:17:35 · 472 阅读 · 0 评论 -
WUSTOJ 1299: 结点选择(Java)
Description有一棵n个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?Input多组测试数据每组第一行包含一个整数n。接下来的一行包含n个正整数,第i个正整数代表点i的权值。接下来一共n-1行,每行描述树上的一条边。Output输出一个整数,代表选出的点的权值和的最大值。原创 2019-06-07 23:00:11 · 542 阅读 · 2 评论 -
WUSTOJ 1291: 2n皇后问题(Java)
回溯,N皇后,二维数组,数组,放法。原创 2019-05-26 23:11:01 · 157 阅读 · 0 评论 -
WUSTOJ 1889: 编辑距离(Java)
###### 分析:speech_balloon:```java名词解释A // 字符串AB // 字符串BminOperateNum // 最少操作次数t1, t2, t3 // 临时变量```- `A`和`B`长度都为`0`,显然`minOperateNum[0][0] = 0`。- `A`长度为`0`,`B`长度为`1`,显然只需要在`A`末尾插入一个字符(即`B`末尾的字符),`minOperateNum[0][1] = 1`。- `A`长度原创 2019-05-25 18:07:41 · 362 阅读 · 0 评论 -
PAT(B) 1020 月饼(Java)
题目链接:1020 月饼 (25 point(s))分析将月饼(库存量,总售价,单价)封装成MoonCake类Scanner会超时,用BufferedReader类读取数据读取的时候用字符串数组保存,见input()方法将读取的字符串转成int型和double型,见transform()方法自定义MyComparator类实现Comparator接口,将月饼按照单价降序排序顺...原创 2019-05-23 13:58:03 · 436 阅读 · 1 评论 -
PAT(B) 1018 锤子剪刀布(C:20分,Java:18分)
题目链接:1018 锤子剪刀布分析用一个二维数组保存两人所有回合的手势甲乙的胜,平,负的次数刚好相反,用3个变量表示就可以手势单独保存在signs[3]中,注意顺序。题目原文:如果解不唯一,则输出按字母序最小的解。注意input()中的getchar()不能省略C/** * Score 20 * Run Time 25ms * @author wowpH * @versi...原创 2019-05-22 19:23:40 · 314 阅读 · 0 评论 -
PAT(B) 1017 A除以B(Java)
题目链接:1017 A除以B分析读取输入的A和B后,保存为字符串。模拟除法运算过程。不要用BigInteger,因为会超时。另外字符串经常要扩展(例如:append())的话,不要用String(非常慢),用StringBuilder是上上策。最后要注意,如果结果的第一位是0,并且只有一位,那么输出0,否则输出去掉首位后的结果。/** * Score 20 * Run Time...转载 2019-05-22 00:23:49 · 229 阅读 · 0 评论 -
WUSTOJ 1239: n皇后问题(Java)
1239: n皇后问题参考资料n皇后问题_百度搜索Description在n*n的方格国际棋盘上放置n个皇后,任意2个皇后不能位于同一行,同一列或同一斜线(正斜线或反斜线)上。对于任意一个n,输出合理放置方法的方案数。Input有多组测试样例。每组给一个数...原创 2019-04-04 19:05:06 · 236 阅读 · 0 评论 -
列主元消去法&全主元消去法——Java实现
全主元消去法,列主元消去法,Java,增广矩阵,系数矩阵,方程组的根,无解,测试数据。原创 2018-12-01 16:05:50 · 3085 阅读 · 0 评论