现在位置: 首页 > 编程技术 > 算法学习 > 文章
2017年10月23日 算法学习 ⁄ 共 2344字 算法工程师能力模型已关闭评论 ⁄ 阅读 427 次
一、能力模型 大类别 小项 必需技能 可选技能 工程能力 语言 Java Scala Shell Awk SQL C/C++ Python Sed 分布式平台相关 Hive Spark Hadoop Hbase 代码管理 Git 格式 ProtoBuf Thrift接口部分 Xml Json Base64 KV存储 Tair MySql Redis 网络 Http 编译打包工具 Maven gdb/g++ Rpm RPC框架 MTThrift 程序设计 常用容器类 正则表达式 多线程 ...
阅读全文
2016年04月12日 算法学习 ⁄ 共 441字 leetcode Reverse Integer 题解已关闭评论 ⁄ 阅读 764 次
https://leetcode.com/problems/reverse-integer/ 1.利用StringBuffer的reverse public int reverse(int x) { int i = 1; if (x < 0) { i = -1; x = -x; } String string = Integer.toString(x); StringBuffer temp = new StringBuffer(string).reverse(); try { return i * Integer.valueOf(temp.toString()); } catch (Exception e) { // TODO: handle exception retur...
阅读全文
2016年04月12日 算法学习 ⁄ 共 817字 leetcode ZigZag Conversion 题解已关闭评论 ⁄ 阅读 923 次
https://leetcode.com/problems/zigzag-conversion/ 这道题主要是要你找规律,然后用计算机语言把你找到的规律表述出来。如下图: 第一个 表格是原始的zigzag,第二个是变形,这样做不影响结果,但是可以保证每行都有numRows-1个字符(除最后一行)。偶数列正序,奇数列倒序。然后遍历整个二维的数组。同时需要注意用StringBuilder代替String和numRows==1的情况。 public String convert(String s, int numRows) { if (s =...
阅读全文
2016年04月12日 算法学习 ⁄ 共 1079字 leetcode Longest Palindromic Substring 题解已关闭评论 ⁄ 阅读 559 次
https://leetcode.com/problems/longest-palindromic-substring/ 1.暴力解法 public String longestPalindrome(String s) { String temp = ""; for (int i = 0; i < s.length(); i++) { for (int j = s.length() - 1; j >= i; j--) { if (temp.length() < (j + 1 - i) && isPalindrome(s.substring(i, j + 1))) { temp = s.substring(i, j + 1); break; } } } return ...
阅读全文
2016年04月05日 算法学习 ⁄ 共 2443字 评论 1 条 ⁄ 阅读 653 次
https://leetcode.com/problems/median-of-two-sorted-arrays/ 1.暴力解法 public class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int n = nums1.length; int m = nums2.length; if ((n + m) % 2 == 1) { return findKthNum(nums1, nums2, (n + m) / 2 + 1); } else { return new Double((findKthNum(nums1, nums2, (n + m) / 2) + findKthNum(nums1, num...
阅读全文
2016年03月25日 算法学习 ⁄ 共 358字 leetcode Counting Bits 题解已关闭评论 ⁄ 阅读 930 次
https://leetcode.com/problems/counting-bits/ 题目大意:给定一个非负整数num。对于每一个满足0 ≤ i ≤ num的数字i,计算其数字的二进制表示中1的个数,并以数组形式返回。 这道题要用前面的数字的结果来得出后面的才能保证时间复杂度,一个数的二进制一的个数等于他的二进制的数向右移一位的一个数加上他的最后一个的数字的是不是一的个数。这里i可以从0或者1开始,因为新建的数组默认每个都是0. public class Solution { ...
阅读全文
2015年12月13日 算法学习 ⁄ 共 2113字 拓扑排序(Topological Sorting)已关闭评论 ⁄ 阅读 919 次
一、什么是拓扑排序 在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件: 每个顶点出现且只出现一次。 若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。 有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说。 例如,下面这个图: 它是一个 DAG 图,那么如何写出它的拓扑排序呢?这里说一...
阅读全文
2015年12月13日 算法学习 ⁄ 共 1495字 求最长回文子串已关闭评论 ⁄ 阅读 579 次
回文串,就是指正读和反读都一样的字符串,比如"level"或者"noon"等等。 那么,如何求一个字符串的最长回文子串(Longest Palindromic Substring)?这里我们有多种解法。 解法一:暴力法 暴力解法就是直接枚举所有子串,对每个子串判断是否为回文,时间复杂度为O(n3)。 这是最糟糕的方法,相信面试官问你这个问题,绝对不是想要这个答案。 解法二:动态规划法O(n2) 动态规划法是在暴力解法上进行的优化。通过记录一些我们需要...
阅读全文
2015年11月29日 算法学习 ⁄ 共 391字 评论 2 条 ⁄ 阅读 856 次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /** * 用0~n生成m个数的随机序列 * * @param limit * - n-1 * @param need * - m * @return 生成的随机序列 */ private int[] genRandomSerial(int limit, int need) { int[] temp = new int[limit]; int[] result = new int[need]; for (int i = 0; i < li...
阅读全文
2015年11月27日 算法学习 ⁄ 共 26751字 十个基础算法及其讲解已关闭评论 ⁄ 阅读 602 次
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。 在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n^2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。 算法步骤 从...
阅读全文