![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
学习左程云算法记的笔记
萧弈X
这个作者很懒,什么都没留下…
展开
-
动态规划压缩空间【算法】
1.当一个位置可以由它上面的数的左边的数得来第一步,建一个数组把第一行的值填进去,因为第一行只能由左边的数得来,所以可以得出。第二步,求第二行,第一个数只能由上面一个数得出,第二个数就可以得到它上面的数的左边的数。2.当一个位置可以由它上面的数和左上角的数得来由右向左遍历即可3.当一个位置可以由它上面的数、左上角的数、左边的数得来可以用一个变量保存左上角的值。...原创 2021-05-23 11:29:00 · 193 阅读 · 0 评论 -
【算法】由递归推出动态规划
象棋中的马从(0,0)位置跳到(x,y)位置,跳k步,有多少跳的方法?递归方法:结束条件,k=0时,结束,如果x=0,y=0;则是一种方法。边界:x<0||x>9||y<0||y>8递归: 从最后(x,y)点看,有8个点可以一步跳到(x,y)点代码: public static int ways1(int x,int y,int k){ return f(x,y,k); } public static int f(int x,int y,in原创 2021-04-24 19:05:46 · 91 阅读 · 0 评论 -
左神算法课--窗口和单调栈【算法】
窗口题目:求数组arry上的子数组个数,子数组从L到R上满足max-min<=num,arry和num为参数。推论:1、一个子数组满足条件,则子数组内的任意子数组都满足条件。max-min<=nummax2<=maxmin2>=min则max2-min2<=num2、一个子数组不达标,向外扩,也不会达标。证明同理 思路:做两个双端队列,max和min,以0位置开头,向右扩展窗口,不达标时左端索引向右移动。从0到X位置达标,则从0开始的子数组达标数为X-0+1;原创 2021-04-24 11:47:08 · 120 阅读 · 0 评论 -
桶排序
桶排序桶排序是一种思想,它是通过容器来进行排序,不基于比较的排序,它对数有要求。1.计数排序,在需要排序的数在一个很小的范围时,直接创建一个哈希表,然后遍历相数组中向哈希表中加,最后遍历哈希表改变原数组。2.基数排序,根据个位放入0到9的队列中,再依次取出,根据十位放入0到9的队列中,依次取出。。。。链表判断是否有环,有就把第一个环的头结点返回。快慢指针:初始:快指针在2位置,慢指针在1位置,然后开始向前走,直到相遇或到达尾部返回null在相遇后,快指针回到初始0位置,一步一步走,慢指针也一步原创 2021-04-08 15:34:34 · 57 阅读 · 0 评论 -
比较器
comparator(T o1,T o2)比较器默认输出:-1:o1大,1:02大,0:相等根据比较器进行排序:T[] o3;//这样写是错的,java中无法创建一个泛型数组ArrayList<T> o3;Array.sort(o3,comparator)默认小根堆PrioritQueue<Integer> heap =new PriorityQueue<>();添加比较器public static class Mycomp implements C原创 2021-04-03 18:06:35 · 267 阅读 · 0 评论 -
左程云算法课笔记一
选择排序选择排序的思想很简单,特别容易理解,先找到整个数组中最小的数字,将它和第一个数字交换位置,一轮循环结束;第二轮在剩余的数中找到一个最小值,并将其与数组中的第二个数字交换位置,以此类推…插入排序与选择排序一样,当前要插入的索引位置之前的数字都是有序的;不同的是 插入排序所需的时间取决于输入数字的顺序。插入排序不是交换数字的顺序,而是将插入位置后面的原元素全部向后移动。最好的是顺序,时间复杂度为O(N),如果为逆序的话 这是最糟糕的情况 O(N2)。以上版权声明:本文为CSDN博主「亓苏」的原原创 2021-03-21 12:44:42 · 738 阅读 · 1 评论