算法
文章平均质量分 57
我顶得了
这个作者很懒,什么都没留下…
展开
-
回溯——排列组合
需要startindexstartindex为i例:lc39[组合总和] 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:示例 1: 输入:candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3]示例 2: 输入:candidates = [2,3,5], target = 8, 所求解集为:原创 2023-01-21 11:56:58 · 1552 阅读 · 0 评论 -
RateLimiter实例
Guava是Java领域优秀的开源项目,它包含了Google在Java项目中使用一些核心库,提供了令牌桶算法实现平滑突发限流使用 RateLimiter的静态方法创建一个限流器,设置每秒放置的令牌数为5个。返回的RateLimiter对象可以保证1秒内不会给超过5个令牌,并且以固定速率进行放置,达到平滑输出的效果。public static void testSmoothBursty2() throws InterruptedException { //1s创建2个令牌原创 2022-02-08 17:59:45 · 446 阅读 · 0 评论 -
【限流】令牌桶与漏桶
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场景的并发/请求量,即限流。限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可转载 2022-02-07 17:11:57 · 450 阅读 · 0 评论 -
异或符号交换元素
不要用异或符号交换元素!《linux多线程服务端编程》501页分析了,用异或运算交换变量,是错误的行为。并不能加快运算,也不能节省内存。同时如果两个需要交换的元素一样,就会把两个元素都变成0。...原创 2022-01-07 17:07:01 · 184 阅读 · 0 评论 -
【正则表达式】贪婪匹配与非贪婪匹配
例:匹配输入串A: 101000100贪婪匹配:使用 1.*1 将会匹配到1010001非贪婪匹配:使用 1.?1 将会匹配到101原创 2021-02-07 17:58:01 · 4182 阅读 · 0 评论 -
【算法】动态规划
动态规划是分治思想的延伸,在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接使用这些结果。动态规划具备了以下三个特点把原来的问题分解成了几个相似的子问题。所有的子问题都只需要解决一次。储存子问题的解。动态规划的本质是对问题状态的定义和状态转移方程的定义(状态以及状态之间的递推关系)动态规划问题一般从以下四个角度考虑:状态定义状态...原创 2019-09-04 23:44:42 · 314 阅读 · 0 评论 -
排序详解。
1. 冒泡排序:public static void bubbleSortLowBetter(int[] array){ int n = array.length; //循环n - 1次 for(int i = 0;i < n - 1;i++){ //前后交换位置 for(int j = 0;j < n - i - 1;j++){ //如果前面的大于后面的,则将其交换...原创 2019-09-09 20:31:16 · 257 阅读 · 1 评论 -
【数据结构】链表练习题
1. 链表的中间结点2. 链表中倒数第K个节点3. 链表分割4. 翻转链表(迭代与递归两种方法)*** 5. 删除链表中的相同元素链表的回文结构import java.util.*;/*public class ListNode { int val; ListNode next = null; ListNode(int val) { th...原创 2019-09-19 21:35:57 · 531 阅读 · 0 评论