算法
DaleyZou
GitHub:https://github.com/daleyzou
展开
-
使用泛型实现对int数组或者String数组进行排序
因为是使用的泛型,我们并不确定数据类型, 对于数据的比较就不能用平时的大于或者小于。 我们需要比较对象实现Comparable接口,该接口下的compareTo()方法可以用来比大小 定义Sort类: package com.daleyzou.blog; /** * @Author: DaleyZou * @Description: 定义进行排序都需要哪些方法 * @Date: Crea...原创 2018-10-29 21:38:42 · 1245 阅读 · 0 评论 -
java使用优先级队列实现哈夫曼编码
思路: 构建小根堆 根据小根堆实现哈夫曼树 根据哈夫曼树对数据进行编码 代码实现如下: /** * @Author: DaleyZou * @Description: 使用java实现一个哈夫曼编码的小程序 * @Date: Created in 19:45 2018-9-27 * @Modified By: */ public class HuffmanCode { pri...原创 2018-09-27 20:41:37 · 418 阅读 · 0 评论 -
44. 通配符匹配 (动态规划法、贪婪算法)
动态规划法: /** '?' 可以匹配任何单个字符。 '*' 可以匹配任意字符串(包括空字符串)。 */ /** * 原来用了动态规划 * * 最难的就是列出状态方程了 * 模式当前字符是*: dp[i+1][j+1] = dp[i][J+1] || dp[i+1][j] 模式...原创 2018-08-25 19:48:40 · 439 阅读 · 0 评论 -
43. 字符串相乘
其实也就是大数的乘法 代码: public String multiply(String num1, String num2) { char[] ch1 = new StringBuilder(num1).reverse().toString().toCharArray(); // 对字符串进行翻转 char[] ch2 = new StringBuil...原创 2018-08-24 10:50:36 · 304 阅读 · 0 评论 -
39. 组合总和
思路: 使用dfs递归实现的深度优先搜索来实现对数据的查找 通过对原数组进行排序来实现剪枝 代码: /** * @Description: 使用dfs递归来实现的深度优先搜索来进行数据的查找 * @auther: DaleyZou * @date: 17:11 2018-8-22 * @param: candidates * @param...原创 2018-08-22 17:44:57 · 219 阅读 · 0 评论 -
37. 解数独
题目链接:https://leetcode-cn.com/problems/sudoku-solver/description/ 因为我也还没有完全理解这道题,所以不能写出详细的解答过程以及理解的思路。 就先贴代码吧! 代码: public void solveSudoku(char[][] board) { search(board); } priv...原创 2018-08-22 10:39:32 · 250 阅读 · 0 评论 -
25. k个一组翻转链表
题目描述: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。 示例 : 给定这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2->1->4->3-&g原创 2018-08-08 14:12:20 · 655 阅读 · 0 评论 -
最长回文子串 (动态规划法、中心扩展算法)
问题描述: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。 思考: 嗯,回文嘛!就是顺序读取和逆序读取的结果是一样的,那我们可以使用两个for循环来不断的截取给定的字符串S,然后判断截取后的字符串是不是回文串,与此同时,使用一个新的字符串result来保存我们截取到的并且长度最长的回文串。 代码: public Strin...原创 2018-07-30 22:14:00 · 5788 阅读 · 16 评论 -
30. 与所有单词相关联的字串、java实现
题目描述: 给定一个字符串 s 和一些长度相同的单词 words。在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 示例 1: 输入: s = "barfoothefoobarman", words = ["foo","bar"] 输出: ...原创 2018-08-14 23:41:27 · 553 阅读 · 0 评论 -
Java实现支持 '.' 和 '*' 的正则表达式匹配
问题描述: 给定一个字符串 (s) 和一个字符模式 (p)。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符。 ‘*’ 匹配零个或多个前面的元素。 匹配应该覆盖整个字符串 (s) ,而不是部分字符串 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可...原创 2018-08-02 14:34:44 · 2704 阅读 · 0 评论 -
java实现快速排序
就直接贴代码吧! package com.daleyzou.algorithm; /** * @Author: DaleyZou * @Description: 快速排序 * @Date: Created in 14:55 2018/8/4 * @Modified By: */ public class QuickSort { public void quick_Sor...原创 2018-08-04 15:44:49 · 154 阅读 · 0 评论 -
【剑指offer】 Java实现重建二叉树
GitHub上的代码链接 /** * @Author: DaleyZou * @Description: 重建二叉树 * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 * 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 * 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 * @Date:...原创 2019-01-30 15:15:14 · 178 阅读 · 0 评论