随笔分类 -  算法

算法
摘要:LeetCode 66. 加一(模板题) 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits = [1,2,3] 输出:[1,2 阅读全文
posted @ 2023-02-04 11:31 凌歆 阅读(15) 评论(0) 推荐(0) 编辑
摘要:1.前缀和 前n个元素的和作为当前元素的值 a 为元素数组 s[i] 为前缀和数组 一维前缀和 s[i]=s[i-1]+a[i] s[m]-s[n]=a[n+1]+...+a[m] m>n 二维前缀和 s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j] L 阅读全文
posted @ 2023-02-04 11:31 凌歆 阅读(23) 评论(0) 推荐(0) 编辑
摘要:更加严谨的二分 使用场景 满足类似的条件,需要找的某个数>=target 或者<=target 一般的二分 只会判断是否满足==的条件 对于边界的点会舍弃 造成有可能找不到正确的答案 二分模板 判断>=target 的情况 // 序列为0-n-1 // 为什么设置n,n为不合法的情况,即没有比tar 阅读全文
posted @ 2023-02-04 11:30 凌歆 阅读(149) 评论(0) 推荐(0) 编辑
摘要:1. 三分查找 场景 序列不满足单调增或者单调减 但满足局部的单调性 即只存在波峰或者只存在波谷 求波峰和波谷 我们并不字段波峰和波谷在哪里 定义域l-r 我们在定义域里任取两数lmid,rmid 对于f(lmid)<=f(rmid),说明极大值在 lmid-r 对于f(lmid)>=f(rmid) 阅读全文
posted @ 2023-02-04 11:30 凌歆 阅读(27) 评论(0) 推荐(0) 编辑
摘要:二叉搜索树 @(文章目录) 1. 定义 左子树小于根节点 右子树大于根节点 2. 求某个节点的后继 概念:比当前节点大的最小节点 节点存在右子树 先找到右子树 一路往左走,直到空树 节点不存在右子树 后继可能存在于查找到改节点的路上 3. 求节点的前驱 比当前节点小的最大节点 节点存在左子树 先找到 阅读全文
posted @ 2023-02-04 11:29 凌歆 阅读(23) 评论(0) 推荐(0) 编辑
摘要:239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 阅读全文
posted @ 2023-02-04 11:28 凌歆 阅读(17) 评论(0) 推荐(0) 编辑
摘要:递归 递归,将问题分解为重叠的子问题,f(n)=f(n-1)+xxx,满足这样的状态转移方程,说明原问题是不是依赖递归子问题,即f(n)依赖f(n-1) 确定递归出口 递归返回时还原现场 78. 子集(模板题) 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集) 阅读全文
posted @ 2023-02-03 22:48 凌歆 阅读(18) 评论(0) 推荐(0) 编辑
摘要:1. 贪心 贪心能解的题,搜索也可以解 贪心只是提高的效率,不保证正确性 860. 柠檬水找零(贪心模板) 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你 阅读全文
posted @ 2023-02-03 22:48 凌歆 阅读(22) 评论(0) 推荐(0) 编辑
摘要:变长数组 实现方法(三步) 初始化,分配常数空间 在插入元素的过程中,如果空间不够,新建一个2倍原来空间长度的数组,把原数组的值拷贝到扩容的数组中,释放原数组空间 如果扩容后元素有删除的情况,但总元素个人少于数组长度25,释放一半的空间 时间复杂度分析(==这里n>length才扩容,解释不是非常合 阅读全文
posted @ 2023-02-03 13:18 凌歆 阅读(17) 评论(0) 推荐(0) 编辑
摘要:双指针 一般解决分段的问题,即求某一段的数据的值 i为指针起点,j为指针终点 一种是滑动窗口,i,j一定方向相同 一种是夹逼,i,j相向 配合前缀和使用 a[i]+....a[j]=s[j]-s[i-1] LeetCode 167. 两数之和 II - 输入有序数组(模板题) 给你一个下标从 1 开 阅读全文
posted @ 2023-02-03 13:15 凌歆 阅读(23) 评论(0) 推荐(0) 编辑
摘要:原地快排模板 /** * @param {number[]} nums * @return {number[]} */ var sortArray = function(nums) { const partition=(arr)=>{ // 生成0-arr.length-1的随机数 let mid= 阅读全文
posted @ 2023-02-03 13:14 凌歆 阅读(15) 评论(0) 推荐(0) 编辑
摘要:哈希表-集合-映射 874. 模拟行走机器人 机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands : -2 :向左转 90 度 -1 :向右转 90 度 1 <= x <= 9 :向前移动 x 个单位长度 在网 阅读全文
posted @ 2023-02-03 13:13 凌歆 阅读(45) 评论(0) 推荐(0) 编辑
摘要:589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 示例 1: 输入:root = [1,null,3,2,4,null,5,6] 输出:[1,3,5,6, 阅读全文
posted @ 2023-02-03 13:11 凌歆 阅读(22) 评论(0) 推荐(0) 编辑
摘要:求子集 上图把问题抽象成为图的遍历 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23" 输出:["ad","a 阅读全文
posted @ 2023-02-03 13:10 凌歆 阅读(44) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示