随笔分类 - 算法
leetcode算法总结
摘要:推荐算法相关 [TOC] 推荐系统介绍 What:分类目录、搜索引擎、推荐系统 Why:需要在信息过载、用户需求不明确的背景下,留住用户和内容生产者,实现商业目标 评估指标 准确性 学界:RMSE、MAE、Recall、Precision 业界 头条:阅读 阅读时长 分享/评论 关注/付费 快手:播
阅读全文
摘要:leetcode:75颜色分类(3way)、215数组中的第K个最大元素(normal) 3way normal 注意这里用for循环!!! java public int findKthLargest(int[] nums, int k) { // 左右指针,调整k int left = 0, r
阅读全文
摘要:[TOC] 166分数到小数 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。 思路: 分母、分子为0的情况 新建StringBuilder 结果是否为负数,是则加上负号 分子分母取绝对值
阅读全文
摘要:[TOC] BitMap 思路: 构造函数:取商作为长度,如果有余,则长度+1 set和get思路都是先取参数在bitmap中的index和offset,注意转化为int,然后进行相应的操作。 数据范围从0开始 最小栈 思路: 新建两个栈 push和pop中,s1照常执行。s2判断其顶部元素是否大于
阅读全文
摘要:[TOC] 144前序遍历 思路:(循环前入栈、先右节点入栈) 建栈,入栈,循环,只要栈不为空 出栈,把值加入res。 如果右不为空,入栈。左一样。 94中序遍历(98验证二叉搜索树、230二叉搜索树中第K小的元素) 思路: 建栈、cur指针,不入栈循环,只要cur和栈不为空 只要cur不为空,循环
阅读全文
摘要:[TOC] 54/59螺旋矩阵 思路: 设置上下左右四个边界变量 新建ArrayList存储结果 循环:四个循环,左 右,上 下,右 左,下 上。每次循环添加结果,循环后判断边界是否相等了,是的话就退出 62不同路径 一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步
阅读全文
摘要:[TOC] 78/90子集 39/40组合总和 40(39是无重复元素的数组,所以省去排序。另外允许重复选取元素,所以递归调用函数时index不需要+1) 给定一个数组 和一个目标数 ,找出 中所有可以使数字和为 的组合。 中的每个数字在每个组合中只能使用一次。 所有数字(包括目标数)都是正整数。
阅读全文
摘要:[TOC] 3无重复字符的最长子串 思路: 新建数组int[128],用来记录各个字符处在字符串中的最新位置。注意位置从1开始,一方面区别默认的0,另一方面,下面调整left的值时,可以直接移动到刚好去掉重复字符的位置。 设置左右边界,右为遍历中的i 每遇到新的字符,看是否需要调整left位置。取当
阅读全文
摘要:[TOC] 2/445两数相加 2两数相加(链表倒排结果) 思路: 设置dummy,结果指针p 遍历,只要其中一个没有遍历完就继续; 如果l1不为空,加到sum,l1移到下一位 如果l2不为空,加到sum,l2移到下一位 p指向新节点(sum % 10), p移到下一位 sum /= 10 判断最后
阅读全文
摘要:[TOC] 4寻找两个有序数组的中位数 思路: 其中一个为空的情况,利用len/2和(len 1)/2两个结果来求中位数 两者不为空,调用helper 当其中一个被筛选完,就选另一个的left + k 当两个数组都还有候选数字,而k减到0时,取两个数组中的left最小者 k未到0时,分别从两者中取(
阅读全文
摘要:[TOC] 33/81搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 可能变为 )。 思路: 设置左右指针开始进入二分循环 判断中间的数是否为target,否则通过比较nums[mid] 注意包含边界与target的比较,如nums[left] = left
阅读全文

浙公网安备 33010602011771号