题目大意就是求在特定规则下的最短路,这个规则包含了消除障碍的操作。用BFS感觉选择消除障碍的时候不同路径会有影响,用DFS比较方便状态的还原(虽然效率比较低),因此这道题目采用DFS来写。 写的第一次提交代码是TLE,原因是忘记总步数>10就应该剪枝的条件。AC代码如下:
1.题目描述: 2.解题思路:    本题是要堆一个链表进行排序,并且要求时间复杂度为 O(n log n)。很明显,要用到分治的思想,用二分法进行归并排序:找到链表的middle节点,然后递归对前半部分和后半部分分别进行归并排序,最后对两个已排好序的链表进行Merge。   分为三步:   (1
1、插入排序(Insertion Sort) 基本思路:将一个记录插入到已排序好的有序表中,从而得到一个新的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 1 void InsertSort(int a[]) { 2
  快速排序小结   大纲:          1.快排的原理          2.最坏情况          3.优化快排的方法          4.一般写法与更好的写法 1.快排的原理(本文重点)          伪代码:                    Void sqsort(in
knn kmeans 1.knn是分类算法 2.监督学习 3.给它的数据是有label的,是已经事先分类好了的, 类别数不变。 1.kmeans是聚类算法 2.非监督学习 3.给它的数据是没有label,是没有事先分类好的, 以“物以类聚”原理进行聚集成簇。 没有明显的前期训练过程。 有明显
 kmeans算法思想: 1.从数据集中随机选取k个初始点作为质心。 2.遍历数据集中所有的点,求出每个点到每个质心的距离,找出距离改点最近的质心,并改变此点类型为此质点的类型。 3.重新为每个类别更新其质心。 4.重复2,3,步直到最后两次质心位置相同退出while循环。 补充用python实现的
最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列:  1,1,1,1,1,1,1,1,1  1,0,0,1,0,0,1,0,1  1,0,0,1,1,0,
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。 总的说来,要直接默写出快速排序
目录 1 问题描述 2 解决方案   1 问题描述 问题描述   给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出
  本篇是上一篇赫夫曼树构建与编码的后续,稍微详细讲一下解码的算法。   Huffman解码算法流程: 1.定义指针p指向赫夫曼树结点,实际是记录结点数组的下标; 2.定义指针i指向编码串,定义ch逐个取编码串的字符; 3.初始化:读入编码串,设置p指向根结点,i为0; 4.执行以下循环:   a)
1.题目描述: 2.解题思路:    题意:两个由整数构成的有序数组nums1和nums2,合并nums2到nums1,使之成为一个有序数组。注意,假设数组nums1有足够的空间存储nums1和nums2的所有元素(>=m+n)。   思路很简单,直接上代码。 3.Java代码: (1)普通
静态查找表---静态存储 动态查找表----树、散列表(唯一仅适用于集合的存储结构)   查找: 内部查找-----比较次数作为衡量标准          外部---记录---访问外存次数   无序表: 顺序查找(O(N)) 第0个元素空出来作为哨岗,减少比较次数(避免比较下标是否合法) 1 da

推荐文章