算法
奶糖芯
成功之前说什么都是借口,
成功之后说什么都是炫耀。
展开
-
二分查找算法框架—框架在手,世界我有
二分查找算法框架框架练习题力扣上的二分查找练习地址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 · 253 阅读 · 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 · 406 阅读 · 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 · 390 阅读 · 0 评论 -
动态规划(2)——斐波那契(递归和非递归俩种方法)
斐波那契数列问题:数列第n项的值抽象状态F(i):数列第i项的值转移方程:F(i) : F(i-1)+F(i-2)初始状态:我们转移方程需要俩项,才能运行起来,F(0) = 0F(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 · 188 阅读 · 0 评论 -
动态规划(1)——概念
动态规划动态规划就是一个大事化小,小事化了的过程;1.特点:把原来的问题分解成为几个子问题;所有子问题只需要解决一次;储存子问题的解;2.动态规划问题一般四个角度分析1.状态定义;(状态之间一定要有对应关系)2.状态间的转移方程定义;3.状态的初始化;4.返回结果;3.适应场景最大值/最小值,可不可行,是不是,方案个数等等;...原创 2020-12-14 13:45:32 · 119 阅读 · 0 评论