Java算法刷题笔记总结

最近刷力扣的一部分规划和总结在这里记载一下:

文章目录

      • 一、 回溯算法
        • 1.Java实现回溯算法入门
        • 2.Java实现回溯算法进阶
      • 二、动态规划
        • 1.算法(Java)——动态规划
        • 2. Java动态规划算法从入门的到熟练
        • 3. 动态规划之背包问题——01背包
        • 4. 动态规划之背包问题——完全背包
        • 5. 动态规划之打家劫舍系列问题
        • 6. 动态规划之股票买卖系列问题
        • 7. 动态规划之子序列问题
      • 三、数组
        • 1. 算法分析之数组问题
        • 2. 算法(Java)——二分法查找
      • 四、链表
        • 1. 算法分析之链表问题
        • 2. 算法(Java)——链表
        • 3. 算法(Java)——双指针
      • 五、哈希表
        • 1. 算法分析之哈希表
        • 2. 算法(Java)——HashMap、HashSet、ArrayList
      • 六、字符串
        • 1. 算法(Java)——字符串String
        • 2. 算法分析之字符串
      • 七、栈和队列
        • 1. 算法分析之栈和队列
        • 2. 算法(Java)——栈、队列、堆
      • 八、二叉树
        • 1. 算法(Java)——二叉树
        • 2. 算法分析之二叉树
        • 3. 算法分析之二叉树遍历
        • 4. 算法分析之二叉树常见问题
      • 九、贪心算法

一、 回溯算法

1.Java实现回溯算法入门

(Java实现回溯算法入门(排列+组合+子集))

2.Java实现回溯算法进阶

(Java实现回溯算法进阶(搜索))
回溯算法是对树形或者图形结构执行一次深度优先遍历,实际上类似枚举的搜索尝试过程,在遍历的过程中寻找问题的解。

深度优先遍历有个特点:当发现已不满足求解条件时,就返回,尝试别的路径。此时对象类型变量就需要重置成为和之前一样,称为「状态重置」。

许多复杂的,规模较大的问题都可以使用回溯法,有「通用解题方法」的美称。实际上,回溯算法就是暴力搜索算法,它是早期的人工智能里使用的算法,借助计算机强大的计算能力帮助我们找到问题的解。

回溯算法主要涉及的几个知识点:

  1. 深度优先遍历,包括树的深度优先遍历和图的深度优先遍历。
  2. 数据机构–栈,用栈来存储选取过的数据(Java中一般使用Deque来实现栈)
  3. 剪枝的重要性,减小复杂度,重复性问题

例题就看上面的刷题笔记链接,刷题时间为(2021.10.27-2021.11.4),部分题目会后期更新。

二、动态规划

1.算法(Java)——动态规划

(算法(Java)——动态规划)

动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。

动态规划常常适用于有重叠子问题最优子结构性质的问题,并且记录所有子问题的结果,因此动态规划方法所耗时间往往远少于朴素解法。

动态规划有自底向上自顶向下两种解决问题的方式。自顶向下即记忆化递归,自底向上就是递推

使用动态规划解决的问题有个明显的特点,一旦一个子问题的求解得到结果,以后的计算过程就不会修改它,这样的特点叫做无后效性,求解问题的过程形成了一张有向无环图。动态规划只解决每个子问题一次,具有天然剪枝的功能,从而减少计算量。

每天在学习动态规划知识后,在动态规划入门练习题中进行刷题练习。

2. Java动态规划算法从入门的到熟练

(Java动态规划算法从入门的到熟练)

3. 动态规划之背包问题——01背包

3. 动态规划之背包问题——01背包

4. 动态规划之背包问题——完全背包

动态规划之背包问题——完全背包

5. 动态规划之打家劫舍系列问题

动态规划之打家劫舍系列问题

6. 动态规划之股票买卖系列问题

动态规划之股票买卖系列问题

7. 动态规划之子序列问题

动态规划之子序列问题

三、数组

1. 算法分析之数组问题

算法分析之数组问题

2. 算法(Java)——二分法查找

算法(Java)——二分法查找

四、链表

1. 算法分析之链表问题

算法分析之链表问题

2. 算法(Java)——链表

算法(Java)——链表

3. 算法(Java)——双指针

算法(Java)——双指针

五、哈希表

1. 算法分析之哈希表

算法分析之哈希表

2. 算法(Java)——HashMap、HashSet、ArrayList

算法(Java)——HashMap、HashSet、ArrayList

六、字符串

1. 算法(Java)——字符串String

算法(Java)——字符串String

2. 算法分析之字符串

算法分析之字符串

七、栈和队列

1. 算法分析之栈和队列

算法分析之栈和队列

2. 算法(Java)——栈、队列、堆

算法(Java)——栈、队列、堆

八、二叉树

1. 算法(Java)——二叉树

算法(Java)——二叉树

2. 算法分析之二叉树

算法分析之二叉树

3. 算法分析之二叉树遍历

算法分析之二叉树遍历

4. 算法分析之二叉树常见问题

算法分析之二叉树常见问题

九、贪心算法

你可能感兴趣的:(算法分析,算法,java,深度优先,leetcode,动态规划)