
算法
文章平均质量分 63
算法
结构化思维wz
敬他人,即是敬自己;靠自己,胜于靠他人。
展开
-
常见的限流算法与实现
限流在开发中的应用有很多,常见的限流算法有什么呢?系统学习常见的限流算法,不但可以更好的应用,对学习开源限流框架也有很大的帮助。原创 2022-11-20 20:36:32 · 729 阅读 · 0 评论 -
【恋上数据结构】回溯 | N皇后问题
N皇后问题8皇后问题❓ 在 8*8 的棋盘上,摆放八个皇后,使其不能互相攻击:任意两个皇后不能处于同一行、列、对角线上。 问有多少种摆法?回溯解法首先,缩小问题范围(4皇后问题),理解回溯的思想:剪枝:根据限制条件,发现同一行同一列、对角线不能摆放皇后,可以进行剪枝操作。package 回溯;/** * @ClassName: Quen * @Description: 八皇后问题 * @author: WangZe * @date: 2022/3/14 14:40 */原创 2022-03-14 16:07:35 · 544 阅读 · 0 评论 -
刷题日记Day6 | BST计算合法BST
文章目录96.不同的二叉搜索树96.不同的二叉搜索树解答:class Solution { // 备忘录 int[][] memo; int numTrees(int n) { // 备忘录的值初始化为 0 memo = new int[n + 1][n + 1]; return count(1, n); } int count(int lo, int hi) { if (lo > hi原创 2021-11-21 22:14:07 · 374 阅读 · 0 评论 -
刷题日记Day5 | BST(增删改查)
看见BST就要想到,中序遍历是有序的(升序)700.BST中的搜索思路:利用 BST 左小右大的特性,可以避免搜索整棵二叉树去寻找元素,从而提升效率。代码实现:class Solution { public TreeNode searchBST(TreeNode root, int val) { if(root == null){return null;} //当root.val > val 就去左子树搜 if(root.val.原创 2021-11-20 23:00:32 · 434 阅读 · 0 评论 -
刷题日记Day4 | BST
BST :1、对于 BST 的每一个节点 node,左子树节点的值都比 node 的值要小,右>子树节点的值都比 node 的值大。2、对于 BST 的每一个节点 node,它的左侧子树和右侧子树都是 BST。从做算法题的角度来看 BST,除了它的定义,还有一个重要的性质:BST 的中序遍历结果是有序的(升序)。文章目录230.寻找第k小的元素230.寻找第k小的元素分析:最简单的思路:根据BST中序遍历的特点,只需要中序排序后找到第k个值。class Solution { .原创 2021-11-18 22:34:19 · 507 阅读 · 0 评论 -
刷题日记Day3 | 二叉树序列化
如何判断我们应该用前序还是中序还是后序遍历的框架?根据题意,思考一个二叉树节点需要做什么,到底用什么遍历顺序就清楚了。文章目录652.寻找重复的子树297.二叉树的序列化和反序列化(困难)前序遍历后序遍历层序遍历652.寻找重复的子树输入是一棵二叉树的根节点root,返回的是一个列表,里面装着若干个二叉树节点,这些节点对应的子树在原二叉树中是存在重复的。分析:解决此问题需要知道两点:以root为根的节点二叉树长什么样?以其他节点为根的二叉树长什么样?让每个节点把自己序列化的结果存进去.原创 2021-11-17 22:08:18 · 877 阅读 · 0 评论 -
刷题日记Day2 | 构造二叉树
把题目的要求细化,搞清楚根节点应该做什么,然后剩下的事情抛给前/中/后序的遍历框架就行了,我们千万不要跳进递归的细节里,你的脑袋才能压几个栈呀。文章目录654.最大二叉树105.根据前序和中序序列构造二叉树106.根据中序和后续遍历构造二叉树654.最大二叉树分析:1.根节点要做什么??把自己构建出来。2.具体做什么??遍历数组把找到最大值 maxVal,把根节点 root 做出来,然后对 maxVal 左边的数组和右边的数组进行递归调用,作为 root 的左右子树。解题思路:Tre.原创 2021-11-16 21:48:57 · 5385 阅读 · 1 评论 -
LeetCode刷题合集
LeetCode刷题笔记(合集持续更新…)宝剑锋从磨砺出,梅花香自苦寒来!现在已经是11月中旬,经历了秋招的失意,发现最大的短板就是算法。所以写一个合集,坚持打卡刷算法题,请各位大佬监督!二叉树Day1…明日更新!...原创 2021-11-15 22:17:56 · 731 阅读 · 2 评论 -
刷题日记Day1 | 二叉树
写树相关的算法,简单说就是,先搞清楚当前 root 节点「该做什么」以及「什么时候做」,然后根据函数定义递归调用子节点,递归调用会让孩子节点做相同的事情。文章目录226.翻转二叉树116.填充二叉树每个节点的右侧指针114.将二叉树展开为链表226.翻转二叉树分析:当前节点需要做什么?交换左右子节点。什么时候做?前序遍历 或 后序遍历的时候。解答:/** * Definition for a binary tree node. * public class TreeN.原创 2021-11-15 22:15:50 · 1386 阅读 · 1 评论 -
排序 | 秒懂排序算法(Java)
十大经典排序算法文章目录十大经典排序算法冒泡排序1. 算法步骤2.算法实现选择排序1. 算法步骤2.算法实现插入排序1. 算法步骤2. 算法实现希尔排序1.算法步骤2.算法实现归并排序1.算法步骤2.算法实现快速排序1.算法步骤2.算法实现堆排序1.算法步骤2.算法实现本文参考自<菜鸟教程>和<Rwto>博客。稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。O(1) < O(logn) <原创 2021-10-24 10:26:07 · 3459 阅读 · 2 评论 -
BST | 二叉搜索树的基本操作(Java)
二叉搜索树 (BST),是一种很常用的二叉树。它的定义时:一个二叉树中,任意节点的值要>=左子树所有节点的值,而且<=右子树的所有节点的值。本文主要介绍BST的基本操作:判断合法性,增,删,改,查。文章目录1.构建二叉搜索树2.判断BST的合法性1.构建二叉搜索树给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。分析问题:根据递归的思路,本质.原创 2021-10-22 21:51:02 · 643 阅读 · 0 评论 -
二叉树的基本操作(Java实现)
在Java中可以通过下面这种方式定义一个二叉树的类:public class TreeNode { int data; TreeNode left; TreeNode right; public TreeNode(int data) { this.data = data; }下面介绍一些操作二叉树的基本方法:文章目录1.构建二叉树2.深度优先遍历3.层序遍历4.如何判断两个二叉树相同5.如何判断一个二叉树是否对称1.构建二叉树/** * 构建二叉树 .原创 2021-10-20 09:51:43 · 1390 阅读 · 1 评论 -
Java多线程----CAS
文章目录CAS使用CAS实现线程安全的计数器CAS中的ABA问题CASCAS(Compare And Swap)协议/算法是由硬件实现的。CAS可以将 read - modify -write 这类的操作转换为 原子操作。i++ 包括三个原子操作:从主内存读取i变量的值对i的值加1再把加一之后的值保存到主内存CAS原理:在把数据更新到主内存时,再次读取主内存变量的值,如果现在变量的值与期望的值(操作起始时读取的值)一致就更新。理想状态:并发问题可能的状态:CAS就是把数据更新原创 2021-10-03 21:41:48 · 355 阅读 · 0 评论 -
凑零钱问题的三种解法(Java)
文章目录问题描述:1.递归解法2.带备忘录的递归解法3.dp数组动态规划解法问题描述: 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], a原创 2021-09-20 21:28:37 · 2313 阅读 · 0 评论 -
面试官:斐波那契数列你能想出几种解法?(Java实现)
文章目录1.递归解法2.带备忘录的递归解法3.dp数组(自底向上的动态规划思路)解法4.优化空间复杂度为O(1)的自底向上解法1.递归解法/** * @author 王泽 * 斐波那契数列 * 时间复杂度O(2^n) */public class Fibo { public static void main(String[] args) { System.out.println(fib(10)); } static int fib(int N){原创 2021-09-17 09:25:45 · 545 阅读 · 1 评论