摘要:
Boost Python的安装与使用 Windows 安装 确保VS已安装MSVC编译器和Win10 SDK 在VS的Develop Command Prompt终端中进入下载好的Boost Python文件夹 注意: 编译出的lib库与当前环境下的python是匹配的,所以如果要为anaconda 阅读全文
摘要:
题目: LeetCode 743. 网络延迟时间。给定无负边图,求信号从某一源点散播到所有点的最短时间。 分析: 单源最短路问题,这里用Dijkstra算法实现。有几个注意点:优先队列调用的>需要用友元函数,参数为const xx&;优先队列波认为大根堆。另外这里选用链式前向星存图。 代码: con 阅读全文
摘要:
题目: 给定整数x,求$\sqrt{x}$ 解法: 本题有两种常用解法,第一种自然是二分法,不再赘述,要注意的是可能会溢出,需要用long long。第二种是牛顿迭代法,利用导数逼近零点的方法。对于函数$y=f(x)$,我们任意取初始点$x_0$,然后不断迭代令$x_{i+1}=x_i-\frac{ 阅读全文
摘要:
题目: 给定正整数a,大整数b(数组),求$a^b\mod1337$ 思路: 稍微思考一下就知道要用快速幂来求,和平时不一样的是,这道题的幂次是以十进制表示的,所以更烤鸭做题者对于快速幂本身的理解。我们以$a^{345}$为例,\(a^{345}=a^{3*10^2+4*10^1+5*10^0}=( 阅读全文
摘要:
并查集在设定father时需要防止成环,所以需要人为规定一个序,例如大的是小的的father。 class Solution { public: int findCircleNum(vector<vector<int>>& isConnected) { int n = isConnected.siz 阅读全文
摘要:
题目: 给定数组和窗口大小k,输出滑动过程中窗口的最大值 解法: 本题求得是窗口内的最大值,而滑动这一性质又要求不能随意丢弃信息。这里可以使用单调队列来完成这个需求——保留一定的信息、动态变化,现在问题是如何设计这个单调队列。我们维护一个单调减的队列,由此,每次队列pop_front之后,队列头依然 阅读全文
摘要:
题目: 给定数组,含有两个只出现一次的数字,其余均出现两次。请找出这两个数字,时间O(n),空间O(1) 解法: 空间O(1)完全去除了计数的做法,偷偷看标签知道这是位运算题,立刻想到异或。将所有数字异或起来得到两个单独数字的异或,可惜没有进一步的方法把这两个数字找出来。 再偷偷看题解知道要用分组异 阅读全文
摘要:
快排的代码难点一般在于停止循环的边界条件,这边给出一个不是从两边向中间遍历,而是单向遍历的代码,实现起来更加方便。 #include <ctime> #include <cstdlib> #include <algorithm> using namespace std; class Solution 阅读全文
摘要:
题目: 给定二叉树,判断是否对称(结构/值) 解法: 我自己做的时候用的是BFS的做法,为了区分不同层用了两个队列。参考了一下题解发现DFS也可以做(每次递归都是左右对称地加深一层),打破了自己原来对DFS的理解,因此也简单记录一下这道简单题。 代码: // 队列做法 class Solution 阅读全文
摘要:
题目: 给定链表,要求实现随机给出链表中某元素(概率相等) 解法: 这里介绍一下现学的蓄水池算法。当我们知道总的数据规模时,我们可以用rand()%n来随机取[0, n-1]之间的数且概率相等。但是当数据规模n未知时,这种方法无法使用。假设我们要做m个元素的抽样,蓄水池的想法如下:建立一个大小为m的 阅读全文