随笔分类 -  algorithm

摘要:https://leetcode cn.com/problems/longest substring without repeating characters/ 暴力 滑动窗口 滑动窗口的一个小优化 海哥 TODO 动态规划解法 阅读全文
posted @ 2020-04-25 18:58 sicnu-yudidi 阅读(147) 评论(0) 推荐(0)
摘要:暴力解 O(n3) 暴力解第一种优化(海哥) TODO 去掉第3层循环 Q: 如何理解从① ②, 一次就可以排除5个子数组(1/1,1/2,1/3,2/3,3/3)。 A: 因为如果已经知道一个连续子数组的和小于s, 就没有必要去检查这个子数组中的其他子数组了。// 附录1 可能你会有疑问,这样排除 阅读全文
posted @ 2020-04-25 14:15 sicnu-yudidi 阅读(239) 评论(0) 推荐(0)
摘要:把设计思路梳理一遍+实现思路梳理1遍+调试方法梳理1遍 预备知识 "2020年3月下旬【算法讨论2】链表 17" 主要回答的问题 1. 设计 1.1 数据结构怎么选择的。 1.2 数据结构的每个字段都是怎么来的。 2. 实现 3. 调试方法 两种题型 "一种是leetcode题目, 直接让你实现pu 阅读全文
posted @ 2020-04-04 13:35 sicnu-yudidi 阅读(270) 评论(0) 推荐(0)
摘要:2020年4月上旬 快排和堆排的思路,实现及相关题目 TODO 阅读全文
posted @ 2020-04-03 17:51 sicnu-yudidi 阅读(123) 评论(0) 推荐(0)
摘要:"直觉思路编码有bug" 直觉思路编码fix bug 可以学到3点 1. cur指向删除。丢失前面的节点 = 找到被删除节点前一个,就可以删除。 2. 头节点没有上一个节点,所以单独处理。 3. 特殊测试用例 【1,2a,2b,1】 2b的前一个节点是2a,但是cur指针没有机会移动到2a,2a就被 阅读全文
posted @ 2020-04-02 08:25 sicnu-yudidi 阅读(170) 评论(0) 推荐(0)
摘要:题目 4. "合并有序链表" 5. "判断链表是否有环" 6. "142. Linked List Cycle II && 找出链表中环的位置" 4. 合并有序链表 https://www.cnblogs.com/yudidi/p/12565622.html // 速记: 递归(用[1 3,2 4] 阅读全文
posted @ 2020-04-02 08:18 sicnu-yudidi 阅读(145) 评论(0) 推荐(0)
摘要:主要考虑3个问题 1. 主要的操作 2. 扩容的策略 3. 数据迁移策略 其中,主要操作如下: 大概有3种设计方案 1. 普通方案:两倍扩容+挨个元素拷贝。 2. 仿造slice切片的方案:数组做底层存储+类似窗户的索引+ 更灵活的扩容+数组整体拷贝。 删除元素时不需要真的删除,只是移动索引。 增加 阅读全文
posted @ 2020-04-01 18:27 sicnu-yudidi 阅读(1355) 评论(0) 推荐(0)
摘要:"21. Merge Two Sorted Lists" 递归 不需要dummy head, 因为可以确定是返回哪个头节点 https://leetcode cn.com/submissions/detail/57614448/ 迭代 Q: 为什么迭代解法需要用dummy A: 如果不用dummy, 阅读全文
posted @ 2020-03-29 12:20 sicnu-yudidi 阅读(151) 评论(0) 推荐(0)
摘要:思路 实现 https://gitee.com/sicnu yudidi/interview/blob/master/%E5%89%91%E6%8C%87offer v2/%E9%93%BE%E8%A1%A8/82.%20Remove%20Duplicates%20from%20Sorted%20L 阅读全文
posted @ 2020-03-24 15:35 sicnu-yudidi 阅读(128) 评论(0) 推荐(0)
摘要:题目地址 https://leetcode cn.com/problems/remove linked list elements/ imooc讲解地址 https://coding.imooc.com/lesson/82.html mid=2671 学习点 1. 感受不使用虚拟头节点,单独处理头节 阅读全文
posted @ 2020-03-24 13:17 sicnu-yudidi 阅读(101) 评论(0) 推荐(0)
摘要:题目说明 数据结构设计 1. 操作 2. 关键点 实现1 实现2 https://leetcode cn.com/problems/lru cache/solution/man hua ceng ceng fen xi lrukan bu dong wo chi shi/ 实现3 采用双向链表,标准 阅读全文
posted @ 2020-03-23 20:26 sicnu-yudidi 阅读(179) 评论(0) 推荐(0)
摘要:速记: 三指针逐个反转 or 递归 题意理解 1 2 3 null null3 nil) pre的由来: cur需要指向前一个节点,而从cur本身是不能直到前一个节点的,所以要用pre来保存前一个节点: 比如此时2不知道前一个节点是1 (nil3(next) nil) Q: 迭代继续或终止条件 A: 阅读全文
posted @ 2020-03-23 13:29 sicnu-yudidi 阅读(148) 评论(0) 推荐(0)
摘要:题干 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 直觉思路 二分查找的思想,不断缩小查找范围。 怎么想到的 不断缩小查找范围。 代码编写思路 多少行: 阅读全文
posted @ 2020-03-23 12:50 sicnu-yudidi 阅读(167) 评论(0) 推荐(0)
摘要:1. 编程题训练方法和积累思路 解决问题分为2步 1. 有解题思路 = 记忆思路,多刷几次,形成 ,并在面试前进行快速回顾。 2. 思路转换为代码 = 明确思路,明确定义变量的含义。 分类刷题,摸索总结思路,总结题型(比如循环不变量,递归) 2. 二分查找 循环不变量 1. 明确变量定义 2. 改变 阅读全文
posted @ 2020-03-22 17:59 sicnu-yudidi 阅读(155) 评论(0) 推荐(0)
摘要:分享讨论的思路 1. 先说题意 2. 再把思路讲解一遍。思路是明确到变量级别的清晰程度。 3. 然后大家根据思路来编码。(思路 代码(8分钟); 通过test case检测功能和边界) 4. 最后来讨论下各自的代码,问题在哪里。 5. 总结速记点。(如何做到5 10分钟编码完成,bug free) 阅读全文
posted @ 2020-03-22 14:53 sicnu-yudidi 阅读(116) 评论(0) 推荐(0)
摘要:题干 从尾到头打印链表 直接思路 先访问后打印,先入后出: 借助栈实现 需要分享的思路 借助系统本身的调用栈。 代码编写思路 构造一个系统调用栈的运行情况: 不断入栈递归函数(2个指令 1.访问剩余链表 2.打印当前节点) 2种思路的选择 递归可能导致调用栈溢出。 复杂度 时间复杂度: O(n) 空 阅读全文
posted @ 2020-03-22 14:47 sicnu-yudidi 阅读(138) 评论(0) 推荐(0)
摘要:题干 在一个长度为n的数组里的所有数字都在0到n 1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 直觉思路 1. 排序 O(n 阅读全文
posted @ 2020-02-18 16:21 sicnu-yudidi 阅读(107) 评论(0) 推荐(0)
摘要:"3.数组中重复数字:每个位置放置数字与下标对应相等 O(n)" "4.二维数组中的查找:右下角开始比较 O(m+n)" 5.替换空格:python直接替换 "6.从尾到头打印链表: 借助栈或直接利用系统调用栈" // 创建链表(设置next节点时就会创建下一个节点), 打印链表(最后打印nil) 阅读全文
posted @ 2020-02-18 14:12 sicnu-yudidi 阅读(203) 评论(0) 推荐(0)
摘要:https://cao0507.github.io/2019/04/01/%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E7%AE%97%E6%B3%95%E6%80%BB%E7%BB%93/ 2020 01 16update 4. 我怀疑Go标准库中的二分查找有bug! 阅读全文
posted @ 2020-01-13 14:16 sicnu-yudidi 阅读(114) 评论(0) 推荐(0)