缺失的第一个正数
题目 解题思路 设数组长度为 n: 要找的答案一定在 [1, n+1] 里面。 把数组当做一个哈希表,值 x 放在 x - 1 的位置。 ...
题目 解题思路 设数组长度为 n: 要找的答案一定在 [1, n+1] 里面。 把数组当做一个哈希表,值 x 放在 x - 1 的位置。 ...
题目 不定长滑动窗口 + 计数哈希 右指针扩张窗口,直到覆盖了 t 的全部需求 一旦覆盖成功,左指针尽量收缩,变短 在收缩过程中持续更新最优答案 当收缩到不再满足条件时,再继续右扩 Java 解法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 class Solution { public String minWindow(String s, String t) { int m = s.length(), n = t.length(); if (n > m) return ""; int[] need = new int[128]; for (int i = 0; i < n; i ++) { need[t.charAt(i)] ++; } int missing = n; int bestLen = Integer.MAX_VALUE; int bestL = 0; int l = 0; for (int r = 0; r < m; r ++) { char c = s.charAt(r); if (need[c] > 0) { missing--; } need[c]--; while(missing == 0) { int len = r - l + 1; if (len < bestLen) { bestLen = len; bestL = l; } char leftChar = s.charAt(l); need[leftChar]++; if (need[leftChar] > 0) { missing ++; } l ++; } } return bestLen == Integer.MAX_VALUE ? "" : s.substring(bestL, bestL + bestLen); } } Python 解法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 class Solution: def minWindow(self, s: str, t: str) -> str: if len(t) > len(s): return "" need = [0] * 128 for ch in t: need[ord(ch)] += 1 missing = len(t) best_len = float("inf") best_l = 0 l = 0 for r, ch in enumerate(s): idx = ord(ch) if need[idx] > 0: missing -= 1 need[idx] -= 1 while missing == 0: cur_len = r - l + 1 if cur_len < best_len: best_len = cur_len best_l = l left_idx = ord(s[l]) need[left_idx] += 1 if need[left_idx] > 0: missing += 1 l += 1 return "" if best_len == float("inf") else s[best_l: best_l + best_len] JS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 /** * @param {string} s * @param {string} t * @return {string} */ var minWindow = function(s, t) { if (t.length > s.length) return ""; const need = new Array(128).fill(0); for(let i = 0; i < t.length; i ++) { need[t.charCodeAt(i)] ++; } let missing = t.length; let bestLen = Infinity; let bestL = 0; let l = 0; for (let r = 0; r < s.length; r ++) { const idx = s.charCodeAt(r); if (need[idx] > 0) { missing --; } need[idx]--; while(missing === 0) { const len = r - l + 1; if (len < bestLen) { bestLen = len; bestL = l; } const leftIdx = s.charCodeAt(l); need[leftIdx]++; if (need[leftIdx] > 0) { missing ++; } l++; } } return bestLen === Infinity ? "" : s.slice(bestL, bestL + bestLen); }; Go 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 func minWindow(s string, t string) string { if len(t) > len(s) { return "" } need := make([]int, 128) for i:=0; i < len(t); i ++ { need[t[i]] ++ } missing := len(t) bestLen := 1<<30 bestL := 0 l := 0 for r := 0; r < len(s); r++ { c := s[r] if need[c] > 0 { missing-- } need[c]-- for missing == 0 { if r-l+1 < bestLen { bestLen = r-l+1 bestL = l } left := s[l] need[left]++ if need[left] > 0 { missing ++ } l++ } } if bestLen == 1 << 30 { return "" } return s[bestL : bestL + bestLen] }
mindmap
牛车水 交通方式: 地铁紫线 NE Line - Chinatown站 峇峇娘惹海南鸡饭I娘惹菜 白切甘榜海南鸡 ...
Cat/Cow Puppy Dog Stretch 4-7-8 呼吸 嘴巴大口呼气后闭上嘴。 鼻子轻轻吸气,默数 4 s。 屏息 7 s。 嘴呼气,持续 8 s。
输入法 - 微信输入法 https://z.weixin.qq.com 设置使用 shift 键切换中英文 Raycast https://blog.ans20xx.com/posts/%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%AE%A1%E7%90%86/ ...
单边哑铃划船 把手肘朝向外的方向调整,离躯干远一点。 ...
编辑 绝对,绝对,绝对不要焦虑,这个是第一要素。 遇到不懂的东西,可以开一个画板,将其记录并放大,时刻记得提醒,注意可以使用费曼学习法,突然有一天你就理解了。 脑子里有想法要及时记录下来。 晚上 11:40 - 12:30 入睡,早上最晚 7:00 - 7:30 起床。 想办法让大脑充血,这样思维会更活跃,但是怎么让大脑充血呢(洗澡、运动?) 假期不要在家待,更不要在睡觉时间外躺在床上。 多做能出汗的运动,出汗后身体会轻松很多(跳绳,HIIT)。 有时间去学个游泳(有氧),学习健身力量训练(无氧)。 需要提高专注力,设置一个专注时长,这个专注时长内,天塌下来也不要干别的事情,可以使用番茄时钟,至少 25 分钟内集中注意力,5 分钟放在微冒险上,注意这 5 分钟不要玩手机。 不要害怕和别人对视,和人对话时看着对方的眼睛说话。 工作积极沟通和反馈,不要闷头干。 及时沉淀文档,文档是你工作的证明。 拉起会议前要有议程,会议结束后要有会议总结,会议前记得要开启会议录制。 做什么事情前要深思熟虑。 尽管很累,但是要做好计划。 养成东西物归原位的习惯。 不要害怕冲突,克服恐惧心理。 注意自己的仪表,整理好头发,每天洗澡,刮胡子,别偷懒,仪表反应了个人的精神面貌。 不要一味答应别人的请求,别人询问前先想一想。 活用 raycast 的 quick link 和 short code 功能,提高效率。 每天建一个文件夹,记录每天的工作,有一个暂存画板,工作上遇到的进展和问题都要及时在画板上同步。 做什么东西都要有明确的时间点。 学会排期和估时,如果信息不足就说:“基于现有的信息,给出的估时是 xx,后续有其他变化,需要增加估时“。 做什么事情之前都要给心理预期,并不是所有事情的结果都是好的。 学学看别人的架构文档是怎么写的,会议是怎么进行的。 一定要学会拒绝,不要别人一开口就接受。 极简主义,不轻易买东西,特别是大件的水果。 不知道干什么的时候,就动起来,去跑步、骑车,什么都不要想。 坚持写日报,虽然很难受。 肩颈不舒服,要去正规中医院的针灸推拿科,不要硬挺。 学会拆解任务,用最简单的第一步开启任务,及时记录结果,获得正反馈。 不要坐在床上,除了睡觉外,不应该呆在床上,可以在椅子上用筋膜球按摩。 垃圾必须丢进垃圾桶,垃圾桶倒完垃圾要套上垃圾袋。 表格可以通过代码来生成,活用 %09d - 制表符 1 a b 编程是一个关于数据和控制的哲学,数据可以通过表格来体现,控制可以用流程图和时序图来体现。 经常整理思维导图,使用幕布软件。 每天晚上至少要跑 1km,戴上耳机听歌,走也要走下来。 我的基因报告锌、维生素 B6 代谢能力较差,平时要多吃海鲜(生蚝),鱼,蛋,坚果,动物肝脏等食品,加强锻炼。 不穿的拖鞋要放在鞋架子里,不要到处乱摆。 不要买书,如果想要看书,直接看电子版或者去图书馆看。 平时能少看手机就少看手机,休闲可以玩电脑。 减少买不必要的东西,特别是电子产品,想要打游戏直接去网吧。 床上不要放衣服,其他东西也不要放,应该只有被子和枕头。 每天晚上睡觉前,手机要充好电,充电线不要放在地上,防止踩到,很脏。 定期刷下鞋子,鞋子反映了一个人的精神状况。 耳机很容易丢,一定要时刻注意耳机的位置,出行的时候,耳机要放在包的小口袋里面,身份证不用的时候也要放在包里面。 没事的时候可以多刷刷美剧。 大公司里面什么时候都不要自作主张,需要向领导汇报后才能推动做某事(反面教材是风骚律师中吉米没有通知老板而擅自播出了广告)。 坚持贴口呼吸贴睡觉。 睡觉时眼镜要放床头柜上,避免醒来时找不到眼睛。 健康低糖饮食,吃饭要迅速解决,最好自己做饭。 早上多喝水,睡前少喝水。 小便时要抖干净。 早上起床要远眺。 积极锻炼英语的听说能力,有时间去国外旅游,真实的情境比课本更有效。 经常做引体向上,锻炼肩颈能力,纠正脊椎侧弯。 到家第一件事是洗澡刷牙。 尝试自己写点文章,锻炼写作技巧。 先行动起来,再继续迭代。 快速切换,一秒上手。 困的时候,用冷水洗脸,站一会,喝一些茶饮料,试试冥想。 减少抱怨,减少负能量。 大脑是反系统的,学习的时候要带着问题去学,比如学习一个东西,先抛出具体的问题,然后再给解决方案,总结的时候再去系统整理。 手机成瘾的原因是无聊,对手机成瘾实际上是对无聊生活的逃避,与其抗拒手机的诱惑,不如让日常生活中的事情比手机更具有吸引力。 眼镜戴的时候很容易歪,经常注意调整下。 每天起床后的前 90 分钟,会为之后一天的生活设定状态,“皮质醇觉醒效应“,起床后大脑会分泌皮质醇,这种皮质醇会让人专注、清醒、蓄势待发。 手机不要放在卧室里面,至少要放在房间的另一头,或者洗手间,用它来当闹钟,关闭闹钟时刚好洗漱,放在床够不着的地方,醒来的 10 分钟内去外面走走,接触阳光。 坐姿端正,不要翘二郎腿。 醒来后来一杯热水,加一点柠檬。 尝试晨间随笔,拿起笔记本,随便写下三页脑海中浮现的东西,手写,意识流,不是为了表达深刻,可以写一堆垃圾,这是在清楚噪声,让更加精彩的东西入脑。 大脑渴望新鲜感,进行耗时不到 10 分钟的微冒险,(微小说挑战:用 10-15 分钟写一个故事,包含开头、发展和结尾;质感搜寻:触摸周围的五种不同质感;闭上眼睛,列出所有能够听到的声音;5-7-5 俳句,描述眼前所见之物,三分钟描述周围的事物;涂鸦:观察并画出身边的东西)。 进行时间审计,每半个小时记录你在做什么,标注每个时刻你的感受(专注、无聊、焦虑、麻木)。 像安排会议一样安排娱乐时间的规划。 尝试新鲜的娱乐活动(德州扑克,狼人杀、桌游、唱歌,舞蹈)
简介 设计模式是软件设计中,针对 “反复出现的常见问题” 的 “可复用解决方案”(比如 “如何让多个服务通信更高效”“如何解耦业务与非业务逻辑” 这类高频难题,都有对应的成熟模式)。 ...
分类 基于页 + 偏移量 基于游标 基于页/偏移量的分页 基于页的分页: ...