
算法
文章平均质量分 92
Calcifer123
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法+LeetCode题解+剑指Offer题解】算法思想、排序搜索、数据结构、数学、特殊解法、设计(全总结)
文章目录前言参考1. 排序1.1 快速排序1.2 归并排序1.3 堆排序1.4 其他排序1.5 相关题目 前言 一个多月的时间,看完了LeetCode的题目,刷完了主要的题目。越看到后面,越觉得很多题目都是非常相似的,很多题目都是通过基本的思想扩展来的,因此需要对题型进行总结。 算法题目一般分为以下几类,常见的用红色背景标出: 算法思想:贪心、动态规划、分治、递归。 搜索排序:排序、二分查找、DFS、BFS、回溯 数据结构:字符串、数组/矩阵、栈、队列、哈希表、链表、二叉树、图 数学:位运算、概率计算原创 2020-09-09 21:28:56 · 1724 阅读 · 0 评论 -
【算法】(4)DFS、BFS、Backtracking
文章目录参考基础解题框架例1 :全排列例2:N皇后例3:目标和 参考 labuladong/fucking-algorithm 基础 如果在解决一个问题时,可以分为多个步骤,每个步骤有多个选择,这样会形成多条路径(或形成一颗决策树),那么在解决这种问题时,可以使用回溯的思想 解决一个回溯问题,就是决策树的遍历过程 回溯算法就是穷举所有可能的选择,遍历所有解,因此是属于一种暴力解法 回溯算法需要考虑3个问题 : 路径、选择列表、结束条件 – 路径:到当前节点时已经做出的选择 – 选择列表:当前节点可以做出的原创 2020-08-20 08:05:13 · 356 阅读 · 0 评论 -
【算法】(3)动态规划
文章目录参考基础解题思路解题模板例1 : 斐波那契数列例2 : 凑硬币 参考 labuladong/fucking-algorithm 基础 动态规划一般用于求最值问题 问题需要符合最优子结构,问题可以划分为子问题,通过求解子问题,得到更大规模问题的解 如果存在重叠子问题,可以使用额外空间进行优化记录 解题思路 分析原问题的解空间(所有可能解),观察所有解之间的联系 观察候选解是否能够分组,以便定义子问题 分析子问题之间的关系,即是否能从1个子问题的解得到另一个子问题的解 分析子问题与原问题之间的关系原创 2020-08-19 10:57:42 · 397 阅读 · 0 评论 -
【算法】(2)查找
文章目录二分查找 二分查找 适用于有序数组 时间O(logn) private int searchRange(int[] nums, Integer num, int left, int right) { while (left < right) { int mid = (left + right) >> 1; if (nums[mid] == num) { return mid; } else if (原创 2020-08-11 12:59:51 · 156 阅读 · 0 评论 -
Java面试准备
文章目录数据结构算法数据库Java语言设计模式操作系统计算机网络系统设计工具框架 本系列从以下几个方面总结Java面试所需的相关理论知识。 数据结构 算法 数据库 Java语言 设计模式 操作系统 计算机网络 系统设计 工具 框架 ...原创 2020-05-20 12:37:30 · 228 阅读 · 0 评论 -
【算法】(1)排序
文章目录冒泡排序选择排序插入排序希尔排序 冒泡排序 思路:遍历n-1次数组,每次遍历就把最大的放在末尾,末尾元素不会进入下一次遍历。 实现 public void bubbleSort(int[] nums) { int l = nums.length;//待排序数组长度 while (l > 1) { boolean isSorted = true;//判断这一次遍历中有没有发生交换,如果没有发生交换,那么数组就直接是有序的,可以提前结束。 for原创 2020-06-03 09:28:55 · 234 阅读 · 0 评论