跳至内容

拾光小记

标签: 算法

令牌桶的JAVA实现

令牌桶的JAVA实现

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

leetcode53_最大和子序

leetcode53_最大和子序

问题 解题 贪心算法: 从数组第一个元素开始,第x个元素的和f(x)依赖f(x-1)的和的情况。如果f(x-1)<0,那么f(x)抛弃f(x-1)的值,使得 f(x)=nums[x]。否则,f(x) = nums + f(x - 1)。即: 如下图:输入数组[-2, 1, -3, 4, …

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

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

题目(中等难度) 解答 暴力破解 核心思想:将给定字符串的所有子字符串都列出来,然后对每个字符串进行元素重复判断。 假如给定的字符串长度是n,那么本字符串的所有可能子串个数为 以第一个字符开头的子串个数为: n 以第二个字符开头的子串个数为: n-1 .. 以最后一个字符开头的子串个数为: 1 所 …

选择排序

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

插入排序

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