👋 Welcome to Ike’Log

Hi, this is Egbert Ke, a code farmer, nice to meet you. I’m documenting my learning notes in this blog.

Arts打卡 第四周

1、Algorithm 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。 提示: 0 <= s.length <= 5 * 104 s 由英文字母、数字、符号和空格组成 思路 这道题主要用到思路是:滑动窗口 什么是滑动窗口? 其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列! 如何移动? 我们只要把队列的左边的元素移出就行了,直到满足题目要求! 一直维持这样的队列,找出队列出现最长的长度时候,求出解! 时间复杂度:O(n)...

September 11, 2023 · 2 min · Egbert Ke

ARTS打卡 - 第三周

1、Algorithm 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例 1: 输入:nums = [1,1,1], k = 2 输出:2 示例 2: 输入:nums = [1,2,3], k = 3 输出:2 提示: 1 <= nums.length <= 2 * 104 -1000 <= nums[i] <= 1000 -107 <= k <= 107 思路 我们可以基于方法一利用数据结构进行进一步的优化,我们知道方法一的瓶颈在于对每个 iii,我们需要枚举所有的 jjj 来判断是否符合条件,这一步是否可以优化呢?答案是可以的。 我们定义 pre[i]为[0..i]里所有数的和,则 pre[i]可以由 pre[i−1]递推而来,即: pre[i]=pre[i−1]+nums[i] 那么[j..i]这个子数组和为k这个条件我们可以转化为 pre[i]−pre[j−1]==k 简单移项可得符合条件的下标j需要满足: pre[j−1]==pre[i]−k 所以我们考虑以i结尾的和为k的连续子数组个数时只要统计有多少个前缀和为pre[i]−k的pre[j]即可。 代码 public class Solution { public int subarraySum(int[] nums, int k) { int count = 0, pre = 0; HashMap < Integer, Integer > mp = new HashMap < > (); mp....

September 4, 2023 · 2 min · Egbert Ke

ARTS打卡 - 第二周

1、Algorithm 换水问题 超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。 如果喝掉了水瓶中的水,那么水瓶就会变成空的。 给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝到多少瓶水。 示例 示例 1: 输入:numBottles = 9, numExchange = 3 输出:13 解释:你可以用 3 个空瓶兑换 1 瓶水。 所以最多能喝到 9 + 3 + 1 = 13 瓶水。 示例2 输入:numBottles = 15, numExchange = 4 输出:19 解释:你可以用 4 个空瓶兑换 1 瓶水。 所以最多能喝到 15 + 3 + 1 = 19 瓶水。 提示: 1 <= numBottles <= 100 2 <= numExchange <= 100 思路 首先我们一定可以喝到 bbb 瓶酒,剩下 bbb 个空瓶。接下来我们可以拿瓶子换酒,每次拿出 eee 个瓶子换一瓶酒,然后再喝完这瓶酒,得到一个空瓶。以此类推,我们可以统计得到答案。...

August 28, 2023 · 1 min · Egbert Ke

ARTS打卡 - 第一周

前言 我不是一个喜欢凑热闹的人, 越是热闹的东西,我越是不碰,似乎要与全世界作对,我不玩抖音、不玩微博等乱七八糟的东西,那铺面而来的信息令我惶恐不安。 但是这次不一样,陈皓老师在我前进的道路上给了我精神上很大的鼓舞,我还记得大约三年前,刚转正正式参加工作的时候,看着陈皓博客的文章,让我热血沸腾的感觉,心想有一天我也要成为这么牛逼的程序员。虽然我现在还远远没有达到,但是这种信念似乎还一直在我心中,这个更加重要。 多说几句吧 刚开始工作第一年,业余时间基本都在按照陈皓老师的专栏中介绍的路径在补充学习,汇编,unp,apue等,虽然现在几乎全忘光了,但是我怀念那种感觉。 陈皓老师去世了,世事无常阿卧槽! 1、Algorithm 颜色分类(荷兰国旗问题) 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。 进阶: 一个直观的解决方案是使用计数排序的两趟扫描算法。 首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。 你能想出一个仅使用常数空间的一趟扫描算法吗? 示例 输入: [2,0,2,1,1,0] 输出: [0,0,1,1,2,2] 思路 双指针, 开始位置分别位于数组两端, 分别分割0和2的区域, 从左向右遍历,将0交换到左边, 将2交换到右边,然后处理一下终止和边界情况。 代码 class Solution: def sortcolors(self, nums: List[int]) -> None: n = len(nums) p0, p2 = 0, n - 1 i = 0 while i <= p2: while i <= p2 and nums[i] == 2: nums[i], nums[p2] = nums[p2], nums[i] p2 -= 1 if nums[i] == 0: nums[i], nums[p0] = nums[p0], nums[i] p0 += 1 i += 1 2、Review 分享一下medium中一篇关于规则引擎介绍的文章...

August 21, 2023 · 2 min · Egbert Ke

tg交易规范

tg交易规范 判断一个对象是否能与之进行交易: 1,如果对方有公开群聊、频道,且人数有一定规模,且是tg会员,可信度则相对较高 2,如果对方小白一个,群聊、频道啥都没有,而且是小白一个,可信度极低 不管是可信度较高还是极低,都要: 1,最大化对方跑路的成本 先服务 群聊公开实时交易信息 非全款 2,最小化对方跑路后我的损失 非全款 (每次只占小部分金额150以内) 先服务 以上原则一定要遵守,交易前建议看下这篇文章

July 15, 2023 · 1 min · Egbert Ke