![](https://img-blog.csdnimg.cn/20200228111050507.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法的代码实现
随处搜罗有感觉的算法
竹天九日
这个作者很懒,什么都没留下…
展开
-
Letcode双指针题的Java实现(盛水容器和合并区间)
1.合并区间打开合并区间题目class Solution { public int[][] merge(int[][] intervals) { if(intervals.length < 2) return intervals; // 排序:根据区间起始值升序 Arrays.sort(intervals, (o1,o2)->(o...原创 2020-04-14 23:29:28 · 123 阅读 · 0 评论 -
Leetcode上动态规划系列经典题的Java详解
宅家防疫期间leetcode上小刷了十余道线性动态规划算法题,是时候自己总结提炼一下DP思想了。我把总结的题目主要分为两类序列匹配类和生活类。第一类的代表热题:leetcode300. 最长上升子序列leetcode53.最大子序和leetcode1143. 最长公共子序列leetcode72. 编辑距离第二类的代表热题:leetcode121. 买卖股票的最佳时机leetcod...原创 2020-04-12 17:41:16 · 345 阅读 · 0 评论 -
牛客网编程OJ的典型输入Java模板
笔试的时候一般都需要自己写输入输出,为了尽可能减少因为格式问题而爆0这种委屈之事,我在此以牛客网OJ为例总结了常见的6种典型情况输入描述的模板。希望可以帮助到广大考友把更多的精力放在解题思路上。1. 输入是已知大小的二维数组输入描述第一行是一个正整数n,表示二维数组有n行n列。 public static void main(String[] args) { Scanner sc...原创 2020-04-12 16:39:31 · 4125 阅读 · 1 评论 -
归并排序和快速排序Java实现与深度对比
在leetcode上小刷了十余道动态规划算法题,是时候自己总结一下这种思想的套路了。目前我刷的题目有:leetcode1143. 最长公共子序列leetcode300. 最长上升子序列leetcode53.最大子序和leetcode72. 编辑距离我主要分为两大类:一维数组问题和二维数组问题。第一类的代表热题有最长上升子序列第二类的代表热题有最长上升子序列,最长回文串和编辑距离3...原创 2020-04-10 13:38:16 · 172 阅读 · 0 评论 -
双指针-滑动窗口问题(Leetcode题的java实现)
Leetcode141. 判断链表中是否有环思路:设定快慢双指针,慢指针+1则快指针+2。如果不含有环,快指针最终会遇到 null,说明链表不含环;如果含有环,快指针最终会超慢指针⼀圈,和慢指针相遇,说明链表含有环。时间复杂度为O(n)。public class Solution { //如果环的长度为 M,经过 M 次迭代后,快指针肯定会多绕环一周,赶上慢指针。 publ...原创 2020-04-09 23:38:08 · 275 阅读 · 0 评论 -
2020.4.8华为笔试二题(Java实现)
1. 编译器找ID总数小华设计了一种编译语言最大支持N个字不同的字符,由这些字符组成的ID长度范围是“1<length<L”,求设计的语言最多能组成多少个ID。思路:大数取模 + 组合数import java.util.Scanner;public class Test1 { public static void main(String[] args) { ...原创 2020-04-08 23:52:11 · 2247 阅读 · 0 评论 -
整型转化为字符串的Java实现
整型转化为字符串string int2String(int n){ if(n == 0) return 0; stiring s = ""; while(n){ s += '0' + n%10; num/=10; } reverse(s);//逆序输出 return s; }时间复杂度为O(lgN)...原创 2020-04-08 22:58:10 · 447 阅读 · 0 评论 -
牛客网编程OJ输入输出的加速版(缓冲)
简单版:Scanner1.输入已知大小的二维数组 public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n=scan.nextInt();//定义需要的阶层数n int[][]array=new int[n][n];//定义一个n*n的数组arr...原创 2020-04-03 23:58:55 · 882 阅读 · 0 评论 -
两种经典的单源最短路径算法图解与java实现(贪心Dijkstra和A*)
典型的启发式搜索有两种,分别是贪婪最佳优先搜索(Greedy best-first search)和A*寻路搜索。这篇文章以最短路径问题为例来展开讨论两种搜索方法的思路。可求最短路径的结构往往是有向带权图,用代码表示就是public class Graph { // 有向有权图的邻接表表示 private LinkedList<Edge> adj[]; // 邻接表 pri...原创 2020-03-28 16:19:04 · 1873 阅读 · 0 评论 -
二叉树的详细分类与应用场景(Java代码实现)
1.二叉搜索树(Binary Search Tree)leetcode450.删除BST的结点class Solution { public TreeNode deleteNode(TreeNode root, int key) { if (root == null) return null; if (key < root.val) { ...原创 2020-03-27 23:57:16 · 1834 阅读 · 1 评论 -
非线性数据结构——图的相关概念
1.图的相关概念用于深度和广度搜索算法一般就是用来做图的遍历,或者说图是搜索算法的最常用数据结构,因此需要先储备一些图的概念。图是由一个非空的顶点集合和一个边的集合组成。 G=( V, E )无向图:任意两顶点构成的偶对(vi , vj )是无序的。一个完全无向图有n(n-1)/2 条边有向图:邻接表:对每个顶点vi 建立一个单链表,把与vi有关联的边的信息(度)链接起来。以下是无向图...原创 2020-03-25 15:29:57 · 720 阅读 · 0 评论 -
广度优先搜索(BFS)总结及其Java实现
搜索算法的存储结构一般都是图。因此先给出无向图的代码:public class Graph{ private int v; private LinkedList<Integer> adj[]; public Graph(int v){ this.v=v; adj = new LinkedList[v]; for(int...原创 2020-03-25 00:07:40 · 551 阅读 · 0 评论 -
贪心算法思路总结及其java实现
1. 贪心算法条件与思路的解题步骤1.一次性:某个状态以后的过程不会影响以前的状态,只与当前状态有关。2.局部最优集合能得到全局最优。(如果某次选择会对之后选择产生影响,局部最优不能获得全局最优可以直接KO贪心思路)第一步,判断是否属于贪心算法的情况:对一组数据加了一定的限制,希望从中选出几个数据,在满足限制值的情况下,达到最大期望值。第二步,用简单例子检测贪心算法是否最优。2.贪心算...原创 2020-03-22 23:10:58 · 680 阅读 · 0 评论 -
增量式PID控制算法的C++代码实现
void prpvtest::PID_Init(){ cout << "PID_Init begin!" << endl; pid.SetSpeed = 0; pid.ActualSpeed = 0; pid.Err = 0; pid.Err_last = 0; pid.Err_Next = 0; pid.Kp = _...原创 2019-08-16 21:14:38 · 1433 阅读 · 0 评论 -
摆桶问题
条件的算法描述如下:Given integer m and n where n is odd, for all mxn matrixes that consist of 0 and 1, find the one that has max count of 1s and meets following conditions:All 0s are connected;All 1s are a...原创 2018-10-06 09:29:51 · 226 阅读 · 0 评论