摘要:
[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 阅读全文
摘要:
[TOC] 1.数据倾斜 来源:读取数据之后,包括从数据源读取和shuffle后读取 后果:大部分task和小部分task完成时间相差很大、OOM(也有可能时异常数据的问题,需要完善代码)。 分析:用sample + countBykey 除以count判断key的分布情况。 解决方法: 1. 采用 阅读全文