题目大意就是求在特定规则下的最短路,这个规则包含了消除障碍的操作。用BFS感觉选择消除障碍的时候不同路径会有影响,用DFS比较方便状态的还原(虽然效率比较低),因此这道题目采用DFS来写。
写的第一次提交代码是TLE,原因是忘记总步数>10就应该剪枝的条件。AC代码如下:
1.题目描述:
2.解题思路:
本题是要堆一个链表进行排序,并且要求时间复杂度为 O(n log n)。很明显,要用到分治的思想,用二分法进行归并排序:找到链表的middle节点,然后递归对前半部分和后半部分分别进行归并排序,最后对两个已排好序的链表进行Merge。
分为三步:
(1
QUESTION
Given n integers {a1, a2, ..., an}, n ≤ 100, 000. Select some, s.t. they have the maximum xor sum.
For random numbers like 19,
1、插入排序(Insertion Sort)
基本思路:将一个记录插入到已排序好的有序表中,从而得到一个新的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
1 void InsertSort(int a[]) {
2
快速排序小结
大纲:
1.快排的原理
2.最坏情况
3.优化快排的方法
4.一般写法与更好的写法
1.快排的原理(本文重点)
伪代码:
Void sqsort(in
目录
1 问题描述
2 解决方案
1 问题描述
问题描述
这题想得分吗?想,请输出“yes”;不想,请输出“no”。
输出格式
输出包括一行,为“yes”或“no”。
目录
1 问题描述
2 解决方案
1 问题描述
问题描述
给两组数,各n个。 请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。 例如两组数分别为:1 3
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的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出
目录
1 问题描述
2 解决方案
1 问题描述
问题描述 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个
目录
1 问题描述
2 解决方案
1 问题描述
问题描述
Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“
本篇是上一篇赫夫曼树构建与编码的后续,稍微详细讲一下解码的算法。
Huffman解码算法流程:
1.定义指针p指向赫夫曼树结点,实际是记录结点数组的下标;
2.定义指针i指向编码串,定义ch逐个取编码串的字符;
3.初始化:读入编码串,设置p指向根结点,i为0;
4.执行以下循环:
a)
目录
1 问题描述
2 解决方案
1 问题描述
问题描述
任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和
强化学习读书笔记 - 03 - 有限马尔科夫决策过程
学习笔记:Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016
代理-环境接口(The agent-en
1.题目描述:
2.解题思路:
题意:两个由整数构成的有序数组nums1和nums2,合并nums2到nums1,使之成为一个有序数组。注意,假设数组nums1有足够的空间存储nums1和nums2的所有元素(>=m+n)。
思路很简单,直接上代码。
3.Java代码:
(1)普通
目录
1 问题描述
2 解决方案
1 问题描述
问题描述
题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了
静态查找表---静态存储
动态查找表----树、散列表(唯一仅适用于集合的存储结构)
查找: 内部查找-----比较次数作为衡量标准
外部---记录---访问外存次数
无序表:
顺序查找(O(N)) 第0个元素空出来作为哨岗,减少比较次数(避免比较下标是否合法)
1 da