算法
奶糖芯
成功之前说什么都是借口,
成功之后说什么都是炫耀。
展开
-
二分查找算法框架—框架在手,世界我有
二分查找算法框架 框架练习题 力扣上的二分查找练习地址 int binarySearch(int[] nums, int target) { int left = 0, right = nums.length-1; //开始循环,循环一般条件是left <= right while(...) { //这是固定,你也可以将除法转化为位运算mid = left + ((right - left) >> 1);因为位运算比除法相对好一点 int m原创 2021-02-02 12:30:45 · 239 阅读 · 4 评论 -
BFS(广度搜索)算法框架
BFS(广度搜索) 1.算法框架 计算的是迷宫,从起点出发,到达终点,走的步数。 // 计算从起点 start 到终点 target 的最近距离 int BFS(Node start, Node target) { Queue<Node> q; // 核心数据结构 Set<Node> visited; // 避免走回头路 q.offer(start); // 将起点加入队列 visited.add(start); int step =原创 2021-02-01 15:54:09 · 368 阅读 · 5 评论 -
动态规划(3)——青蛙跳台阶
青蛙跳台阶 问题:跳上n级台阶的方法个数(每次可以跳1个,2个,…n个) 状态:F(i) ;跳上i级台阶的方法个数 转移方程; 从小往大求:(1级:1种 )(2级:2种)( 3级:4种) ( 4级:8种) 1级:{1} 2级:{1,1} {2} 3级:{1,1,1} {1,2} {2,1} {3} 4级:{1,1,1,1}{1,1,2}{2,2}{1,2,1}{1,3}{2,1,1}{3,1}{4} F(i):F(4) = F(1)+F(2)+F(3)+1=F(3)+F(3)=2F(原创 2020-12-14 14:26:42 · 343 阅读 · 0 评论 -
动态规划(2)——斐波那契(递归和非递归俩种方法)
斐波那契数列 问题:数列第n项的值 抽象状态F(i):数列第i项的值 转移方程:F(i) : F(i-1)+F(i-2) 初始状态:我们转移方程需要俩项,才能运行起来, F(0) = 0 F(1) = 1 返回F(n) public class Solution { public int Fibonacci(int n) { if(n == 0)return 0; if(n == 1 || n == 2)return 1; in原创 2020-12-14 14:06:53 · 174 阅读 · 0 评论 -
动态规划(1)——概念
动态规划 动态规划就是一个大事化小,小事化了的过程; 1.特点: 把原来的问题分解成为几个子问题; 所有子问题只需要解决一次; 储存子问题的解; 2.动态规划问题一般四个角度分析 1.状态定义;(状态之间一定要有对应关系) 2.状态间的转移方程定义; 3.状态的初始化; 4.返回结果; 3.适应场景 最大值/最小值,可不可行,是不是,方案个数等等; ...原创 2020-12-14 13:45:32 · 107 阅读 · 0 评论