朝花夕拾

A Development Engineer, a Life Liver, a Hope Holder

LeetCode_230_二叉搜索树中第K小的元素

## 题目 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/127227/1634479610925-c498ecd1-e138-4f68-a543-eacf9b28e3a8.png#clientId=u77b8b130-1f03-4&from=paste&height=486&id=uf48101d0&margin=%5Bobject%20...

水平顺序输出二叉树

### 题目 给定一个二叉树,逐行输出二叉树中的每个节点 ​ 如:二叉树[1,2,3,4,5,6] 输出:[[1],[2,3],[4,5,6]] ### 思路 #### 深度优先(DFS) 沿着二叉树的某一个路径遍历,一直到达路径最末端。然后继续遍历其他路径,直到所有路径遍历完成为止。 本题,我们可以使用二叉树的前序遍历实现。 ​ ```java public List> solution(Tre...

Leetcode-62-不同路径问题

![image.png](https://cdn.nlark.com/yuque/0/2021/png/127227/1633954927299-f368b7ab-27f7-4c34-8a3f-978634c654e1.png#clientId=u42e9ea98-1ed4-4&from=paste&height=628&id=u06deb707&margin=%5Bobject%20Object...

leetcode11_ 盛最多水的容器

### 题目 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。 #### 示例 ![image.png](https://cdn.nlark.com/yuque/0/2021...

货物装满最多箱子问题

### 问题 有一批货,体积大小随机,有一批箱子,体积固定为3,不考虑货物的体积,求给定货物最多能装满几个箱子。 > 说明:体积为6的货物可以用2个箱子装完,体积为7的箱子不能被箱子装下 _​_ ### 思路 当货物的体积为3的整数倍时,货物可以刚好装满箱子 当货物总体积除以3余1时,说明至少存在一个体积除3余1的货物,剔除其中最小的一个即可。 当货物体积除以3余2时,说明可能存在偶数个除3与1的...

令牌桶的JAVA实现

## 思想 定义一个令牌桶(Token_Bucket),以一定的速度向桶里投掷令牌 (now - lastThrowTime) * rate 业务方在处理请求前先去令牌桶获取令牌(acquire),如果获得令牌成功,则进行后续逻辑,否则就丢弃请求或者将请求放置到等待队列。 ​ ## 代码 ```java package cn.melonkid.commons.lang; import java.l...

leetcode53_最大和子序

### 问题 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/127227/1632100311402-0dc7d88b-537f-4efa-9641-15e0756d04dc.png#clientId=uaef0fc2c-b6dd-4&from=paste&height=601&id=u3ecba6d6&margin=%5Bobject%2...

算法-获取最长不重复子串

## 题目(中等难度) ![image.png](https://cdn.nlark.com/yuque/0/2021/png/127227/1631091874227-6614c7ce-0159-4e2e-93c1-fda6b6a76935.png#clientId=u0d869f26-97aa-4&from=paste&height=558&id=uffc071bb&margin=%5Bobj...

选择排序

### 核心思想 将数组分为两个子数组,其中一个子数组为有序数组,另一个为无序数组。然后从无序数组中取到最值元素,然后依次将这些最值元素追加到有序数组中。 ​ ​ ### 实现代码 ```java public void sort(int[] arr){ for(int i = 0; i arr[j]) { minPos = j; } } swap(arr, i, minPos); } } ```...

插入排序

### 核心思想 将数组分成两部分,一部分是有序数组,一部分是无序数组。每次从无序数组中拿出一个元素,将这个元素放置到有序数组中合适的位置。直到整个数组都有序为止。 ### 代码实现 ```java public void sort(int[] arr) { for(int i = 0; i = 0; j--) { if(arr[currPos] > arr[j]) { swap(arr, j, ...