
HackerRank
拉丁解牛说技术
大道至简、行胜于言。坚持实用至上,擅长结合大厂生产实践案例,持续专注分享互联网金融技术架构实战经验。
展开
-
求最长回文子串的长度
采用中心扩展法实现。将字符串变成字符数组,同时对数组先填充,每个字符前后都必须有特殊符号。这样填充后的字符数组就是奇数。利用中心扩展法很容易得到每个回文字符串的长度,最后取最大回文长度就行。中心扩展法示例-摘自https://blog.youkuaiyun.com/u013309870/article/details/70742315:package algorithms;public ...原创 2018-08-14 19:04:09 · 1367 阅读 · 0 评论 -
生成窗口最大值数组
有一个长度为n的整型数组arr 和一个大小为w 的窗口从数组的最左边滑到最右边,窗口每次向右滑动一个位置,求每个窗口所含arr元素的最大值。 * 比如4,5,1,6,7数组,w=3,那么结果就是5,6,7* 第一个窗口就是,4,5,1,最大值就是5* 第二个窗口就是5,1,6,最大值是6* 第三个窗口就是1,6,7,最大值就是7* 解法有很多种,比如时间复杂度为O(n*w),遍...原创 2018-08-12 19:00:20 · 248 阅读 · 0 评论 -
Minimum Swaps 最小次数交换使乱序序列变成递增序列
题目: 给一个乱序的整型数组,元素值范围是1~100000。比如乱序数组[1,3,2],经过一次交换(3,2),就可以变成有序序列[1,2,3]。比如给序列[1,3,5,2,4,6,8],经过交换(3,2)变成[1,2,5,3,4,6,8],再交换(5,4)变成[1,2,4,3,5,6,8],再交换(3,5)即可变成有序递增序列[1,2,3,4,5,6,8]。实现算法和代码讲...原创 2018-08-08 18:04:59 · 2387 阅读 · 0 评论 -
新建有序二叉树BST、求树的最大深度或高度
新建有序二叉树,left node 小于等于root,right node 大于等于root。并求二叉树的树高。package dayscode;import java.util.Scanner;/** * 插入new node到有序二叉树,获取二叉树最大树高 */public class BSTHeight { static class Node { ...原创 2018-08-22 11:16:18 · 1819 阅读 · 0 评论 -
有序二叉树层次遍历
遍历有序二叉树,顺序输出每一层node 的data。 比如二叉树 6 3 91 5 7 10打印输出就是,6,3,9,1,5,7,10。这个利用队列实现非常高效。package dayscode;import java.util.LinkedList;import j...原创 2018-08-22 11:59:44 · 273 阅读 · 0 评论 -
删除单链表重复节点的实现
* 删除单链表的重复元素 * 比如,1,2,3,3,5,2,4 * 删除后,就是1,2,3,5,4 代码:package dayscode;import java.util.HashSet;import java.util.Scanner;import java.util.Set;/** * 删除单链表的重复元素 * 比如,1,2,3,3,5,2,4 * 删除后,...原创 2018-08-22 15:18:30 · 797 阅读 · 0 评论 -
判断一个整数是否为素数算法
素数:n%i==0,那就可以判断n是非素数。算法的复杂度,依赖i的取值范围,如果是2~n那就是O(N)。如果是2~sqrt(N),复杂度就是O(sqrt(N))。 package dayscode;import java.util.Scanner;/** * 判断是否为素数,也就是一个整数只能被1和自己整除。1不是素数 */public class Prime { ...原创 2018-08-22 17:45:16 · 4213 阅读 · 0 评论