数据结构与算法讲解与代码
记录数据结构与算法讲解与代码
Tronhon
一个正在努力的小开发仔,不定期更新博客内容,喜欢的记得关注我哦!
展开
-
LeetCode 15 三数之和解答
LeetCode 15题目描述: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]解...原创 2019-07-18 16:00:45 · 138 阅读 · 0 评论 -
LeetCode 14 字符串的最长公共前缀
public class Solution { public static String longestCommonPrefix(String[] strs) { if(strs.length==0) {return "";} if(strs.length==1) {return strs[0];} int i=0;//数组里至少有两个字符串 int mi...原创 2019-07-18 16:28:05 · 123 阅读 · 0 评论 -
贪心算法经典题目java实现-版本
1,最优装载问题问题描述:有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重 量为wi最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。样例数据:MAXWEIGHT 为 30给定8个集装箱,重量分别为:[4, 10, 7, 11, 3, 5, 14, 2]。算法分析这是典型使用贪心算法解决的问题。通过分析题目可以看到,小船的载重量(MAXWEIGHT...原创 2019-12-16 00:41:15 · 1028 阅读 · 0 评论 -
数字金额转中文大写(优化版)
题目描述:将阿拉伯数字金额转成中文大写表示优化之后的源代码如下:import java.math.BigDecimal;/** * @author zhenqinl * @date 2019/12/13 * @describe 数字金额转换Api */public class AmountTransApi { private static String[] tmp = ...原创 2019-12-14 10:27:31 · 426 阅读 · 0 评论 -
字典树浅析以及Java实现,你值得拥有~
1,字典树的定义字典树又称为单词查找树,即也就是Trie查找树,是一种树形结构,同时也是哈希树的变种。典型应用是用于统计,排序以及保存大量的字符串(但是又不仅仅局限于字符串)。所以经常被搜索引擎系统...原创 2019-12-11 11:34:21 · 583 阅读 · 2 评论 -
彻底搞懂KMP,一篇就够了
前言:看毛片算法漫画讲解超幽默有爱~一,KMP算法解决什么类型的问题String str1 = "bacbababadababacambabacaddababacasdsd";String str2 = "ababaca";由以上字符串我们知道,str1有两处包含str2分别在str1的下标为10,26的位置“bacbababad**ababaca**mbabacadd**ababa...原创 2019-12-10 20:19:28 · 2994 阅读 · 0 评论 -
漫画讲解KMP,超有爱幽默~
前言:前段时间在网上看了一篇文章,表情包的形式讲解KMP算法,超幽默有爱而且通俗易懂,自己看完搞懂之后整理了一下,以下就给CSDN的博友们分享一下啦~走起~因此我们总结一下模式字符串具有公共前后缀的条件:(1)最长的公共前后缀(2)长度必须小于指针前所有字符长度前后图片的变化就是我们将模式串进行移动,使得公共...原创 2019-12-10 13:58:01 · 447 阅读 · 0 评论 -
通俗易懂超有爱的并查集~~~
一,杭电oj并查集题目-畅通工程二,简单分析题目大意首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来...原创 2019-12-09 17:59:39 · 304 阅读 · 0 评论 -
字符串编辑距离
题目描述字符串编辑距离字符串的编辑距离,又称为Levenshtein距离,由俄罗斯的数学家Vladimir Levenshtein在1965年提出。是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数。其中,字符操作包括:删除一个字符插入一个字符修改一个字符例如对于字符串"if"和"iff",可以通过插入一个’f’或者删除一个’f’来达到目的。思路动态规划代码如下pub...原创 2019-08-18 23:09:34 · 237 阅读 · 0 评论 -
回溯法以及搜索遍历的方向控制
1,对于方格的回溯遍历(1)控制方向使用基本方向数组: int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}};(2)循环遍历取向: for (int[] n : next) if (backtracking(matrix, str, marked, pathLen + 1, r + n[0], c + n[1])) ...原创 2019-08-09 10:31:27 · 232 阅读 · 0 评论 -
归并排序
public class Main归并排序 { public static void main(String[] args) { int[] arr = {11,44,23,67,88,65,34,48,9,12}; int[] tmp = new int[arr.length]; //新建一个临时数组...原创 2019-08-13 17:27:54 · 92 阅读 · 0 评论 -
堆排序
代码 以及 注释 public class Main堆排序 { public static void main(String[] args) { int[] arr = { 54, 26, 93, 17, 77, 31, 44, 55, 20 }; heapSort(arr);...原创 2019-08-13 17:19:54 · 64 阅读 · 0 评论 -
杭电oj重点题目(算法题)字符串水果,排序查找
一,比较器package HROffer;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import java.util.Scanner;/** * * @author lizhenqin * */publ...原创 2019-04-12 09:29:00 · 331 阅读 · 0 评论 -
栈,队列,二叉树常见编码题
(1)栈,计算表达式值,相消值如01相消,以及括号匹配问题package 栈与队列用处01匹配消除和括号匹配和计算表达式;import java.util.Scanner;import java.util.Stack;public class JiSuan栈计算表达式 { public static void main(String[] args) { Scanner cin=new ...原创 2019-04-11 23:31:39 · 380 阅读 · 0 评论 -
贪心算法
贪心算法啊(1)换硬币购物问题#include<iostream> #include<algorithm> using namespace std; int m,n,num[1010]; int main(){ cin>>m>>n; int i,j,sum=0,ans=0; for(i=1;i...原创 2019-04-11 23:21:29 · 137 阅读 · 0 评论 -
动态规划DP经典题目Java版本
动态规划啊(1)最长公共子序列:package 动态规划;import java.util.Scanner;/** * abcde bcde 4 * @author Administrator * */public class Main最长公共子序列 {public static void main(String[] args) { Scanner cin=...原创 2019-04-11 23:13:45 · 3218 阅读 · 0 评论