Skip to content

LukLau/AlgorithmnProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

算法

leetCode 以及 剑指 offer 算法相关题目

超时问题

超时问题往往代表代码正常
由于存在重复计算问题导致超时、
故需考虑记录已经计算的值或者状态、减少次数

除法问题

深度、广度优先问题

深度遍历靠栈来实现

宽度遍历靠队列实现

深度、广度遍历核心还是回溯法、回溯法需要注意更改回溯状态

遍历得考虑好边界退出条件

课程调度

八皇后问题

找到被包围的区域三种写法

符号添加不同方式 即遍历方式

连续序列问题

数组中连续最大乘积 keyCase: 考虑到连续序列

Dp问题

动态规划解题关键

第一个要点需要考虑 子问题方程式

第二个要点需要考虑方程式连续问题。由于子问题决定下一个问题的最优解。故动态规划方程式必须连贯起来

魔法匹配问题

正则表达式匹配

KMP算法

获取八皇后个数

游戏棋盘生命值最少问题

房屋大盗II

求二维数组正方形最大面积 key point: dp[i-1][j-1], dp[i-1][j], dp[i][j-1];

房子刷漆问题

贪心问题

分治问题

位操问题

  • 两个不同数^ ==相当于 无进位加法
  • 两个不同数& 相当于 判断是否有进位
  • & (偶数- 1) 相当于 取模操作
  • n & 1 相当于 对2取模操作 相当于每次获取二进制最末尾一位数字值
  • n & 1 并且 n 无符号右移相当于二进制数据反转

二进制数据反转并且满足32数

滑动窗口问题问题

滑动窗口关键值

窗口的大小 当窗口太小时 窗口往右扩展。窗口太大时缩小窗口

窗口左右边界问题。确定如何移除窗口条件

窗口需要进行初始化。慎重考虑初始化条件

可以考虑使用list存储窗口的值

滑动窗口经典题目

二分搜索

trick 数组移动 从左往右 (left + right) / 2 + 1 从右往左 (left + right) / 2 -1

边界值left <= right 或者 left < right 取决于代码思路


比较难题目

两个数取中位数


常用数学理论以及算法

空集是任何一个集合的子集

约瑟夫环

格雷码以及二进制编码成格雷码

求解质数的个数

约瑟夫环三种解法

计算素数个数

字典树

摩尔投票法 关键在于找出候选者

位运算 需要使用两位

逆波兰数

求斜率 keyCase:求斜率

小数到循环小数

计算数字0的个数

城市天际图

数字中1的个数 todo

一个数位数的个数

数组中查找两个不同的数字

key point: 将数组分割成两个不同的部分

key point: digit = 1 + (n-1) mod 9

求出第n个丑数的值


位运算


二进制反转

思路: 进行位运算


遍历问题

树层次遍历O(1)空间

树层次遍历II O(1)空间

判断搜索树的先序遍历是否符合规范

数据结构

树的定义: tree is an undirected graph in which any two vertices are connected by exactly one path. In other words, any connected graph without simple cycles is a tree.”

判断无向图是否可以组装成树

About

interview algorithm

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages