![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
Yonghua Li
苟活程序员
展开
-
KMP模式匹配算法 Java实现
在字符串操作中,子串定位操作通常被称为串的模式匹配,即在主串中找子串是否存在; 若存在需要能定位到字串首次出现的位置。朴素的模式匹配算法public class KMP { public int naiveStringMatch(String S, String T) { char[] s = S.toCharArray(); char[] t...原创 2018-09-17 21:05:14 · 526 阅读 · 0 评论 -
常微分方程初值问题的数值方法 Python实现
原理:(1)利用Euler方法和改进的Euler方法求解初值问题 (2)利用Runge-Kutta方法求解初值问题步骤: import mathdef f1(x, y): if x == 0: return 0 else: return ((4 * x) / y) - (x * y)def f2(x, y): retur...原创 2018-09-12 00:02:38 · 3603 阅读 · 0 评论 -
数值积分 Python实现
原理:利用复化梯形公式,复化Simpson公式,计算积分。步骤: import math"""测试函数"""def f(x,i): if i == 1: return (4 - (math.sin(x)) ** 2) ** 0.5 if i == 2: if x == 0: return 1 ...原创 2018-09-11 23:59:10 · 6216 阅读 · 0 评论 -
解线性方程组的迭代法 Python实现
原理:采用jacobi迭代法,Guass-Seidel迭代法,SOR迭代法求解线性方程组的解1.三种迭代法的程序实现。 2.分别计算出3个精度迭代法的迭代次数 3.对方程组使用SOR迭代法计算出不同松弛因子的迭代次数,从而选取最佳松弛因子。# -*- coding: utf-8 -*-"""@author: MachineRandy"""import warningsw...原创 2018-09-11 23:54:37 · 4787 阅读 · 0 评论 -
矩阵求逆运算 Python实现
原理:应用列主元消去法运算矩阵A的逆矩阵,利用初等矩阵行变换A转化单位矩阵时,同样的行变化可将单位矩阵转化为A的逆矩阵。步骤:编制下三角部分消元和上三角部分消元的代码 a. 从对角线元素往下比较取得这一列的最大值所在的行,与对角线元素所在行进行交换。 b. 从对角线所在行往下,利用矩阵的行变换将这一列下所有元素消为0,存储消元过程中的系数(三角矩阵) c. 类似b步骤从最后一列往前...原创 2018-09-11 23:40:24 · 11261 阅读 · 7 评论 -
Leetcode 动态规划 (持续更新)
动态规划解决问题 Max / MinYes / NoCount(*)Can’t sort / swap 四要素 状态 state初始化 init方程 function结果 result常见类型 矩阵DP序列DP双序列DP背包问题题 62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只...原创 2018-08-25 21:50:32 · 1104 阅读 · 0 评论 -
Leetcode 回溯法 (持续更新)
题 78. 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3] 输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]My Answer:class Solution { ...原创 2018-08-21 22:33:45 · 782 阅读 · 0 评论 -
卡特兰数问题
卡特兰数卡特兰数 卡特兰数是组合数学中一个常出现在各种计数问题中的数列,最早由清代数学家明安图发现,也叫“明安图数” 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012 ... 一般通项公式为 Cn=1n+1(2nn)=(2n)!(n+1)!n!Cn=1n+1(2nn)=(2n)!(n+1)!n!C_n =...原创 2018-08-25 00:53:58 · 714 阅读 · 0 评论 -
二叉树的 前序遍历、中序遍历、后序遍历和层次遍历
前序遍历:Leetcode 题 144. 二叉树的前序遍历给定一个二叉树,返回它的 前序 遍历。输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]/** * Definition for a binary tree node. * public class TreeNode { * int val...原创 2018-08-27 01:10:27 · 261 阅读 · 0 评论 -
二分搜索模板方法
二分搜索模板:start = 0;end = n - 1;while (start + 1 < end) { mid = start + (end - start) / 2; if (arr[mid] == value) return mid; if(arr[mid] < value) start = mid; if(arr[mid] >...原创 2018-08-18 21:09:06 · 205 阅读 · 0 评论 -
位运算技巧 (长期持续更新)
1. 给定两个备选值,取反(如 ‘1001’ 和 ‘1011’ 相互取反)假设当前值为 X ,X 是 ‘1001’ 和 ‘1011’ 中的任意一个,要取其另一个数,只需要: 取反(X) = X ^ 1001 ^ 1011 进行两次异或操作即可。...原创 2018-08-18 18:28:30 · 238 阅读 · 0 评论 -
简单排序算法的Java实现
排序算法的Java实现import com.sun.scenario.effect.Merge;public class Sort { //插入排序 public void InsertSort(int A[]){ int i,j,temp; for (i=1;i&lt;A.length;i++){ if (A[i] ...原创 2018-03-13 21:30:42 · 222 阅读 · 0 评论 -
Trie 树(字典树/前缀树)实现 Java
Trie 树:在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。(摘自 https://zh.wikip...原创 2018-11-15 17:08:06 · 814 阅读 · 1 评论