随笔分类 - 算法基础
摘要:计算x的N次方,最直接的做法是将x连乘N次,其中x为double类型,N为整数,时间复杂度为O(N)。 使用快速幂计算x的N次方,算法的时间复杂度能够降为log(N)。 递归版 class Solution { public: double quickMul(double x, long long
阅读全文
摘要:给定一个有序数组nums,求数组中第一个>=目标值target的下标位置和最后一个>=目标值target的下标位置。 这是一道基础的二分查找问题,关于二分的写法有很多种,难点在于对于二分边界的处理,代码编写的过程中很容易容易出现死循环问题,因此建议套用现成的一些二分模版,关于二分模版网上有很多种。
阅读全文
摘要:堆也叫优先队列,可以在\(\mathcal{O(1)}\)时间里得到堆中的最小/大元素。堆在各种编程语言中都有实现,c++STL里面有priority_queue,java中是Priority_Queue,python里提供了heapp模块实现对堆的各种操作。 堆可以分为小顶堆和大顶堆,顾名思义,小
阅读全文
摘要:给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。 若一个由图中所有点构成的序列A满足:对于图中的每条边 (x,y),x在A中都出现在y之前,则称 A 是该图的一个拓扑序列。 输入格式 第一行包含两个整数n和
阅读全文
摘要:给定一个n×m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。 最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m)处,至少需要移动多少次。 数据保证(1,1)处
阅读全文
摘要:n−皇后问题是指将n个皇后放在n×n的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数n,请你输出所有的满足条件的棋子摆法。 输入格式 共一行,包含整数n。 输出格式 每个解决方案占n行,每行输出一个长度为n的字符串,用来表示完整的棋盘状态。
阅读全文