10 2015 档案
摘要:给出一维非负元素的数组,每个元素代表从该元素位置能跳的最远距离。假设初始位置在第一个元素,现根据输入数组判断是否能跳到数组的末尾。书中解法:第一个指针扫描当前值,第二个指针记录能跳的最远距离Curmax=max(A[i]+i,Curmax)。如果Curmax>=A.length-1,return t...
阅读全文
摘要:实现hasNext()和next()函数由于是二叉搜素树,所以中序遍历后存入数组就是一个有序数组。但是空间开销大,为了节省空间可以使用栈,每次出栈时把右子节点到其最左节点的路径上的节点都压入栈,所以空间开销为树的最大高度。
阅读全文
摘要:给定一个二维的m*n矩阵,如果某个元素为0,那么将其所在行和列的所有元素设为0。不允许使用额外空间。刚看到这题,只想到开两个数组,一个用来记录要设为0的行,一个用来记录要设为0的列,但是这需要使用额外空间。书中解法,利用了已有数组,首先找到一个位0的元素,记录其所在的行与列的位置,然后在后面的扫描过...
阅读全文
摘要:数组每行的数都是从左到右排序好的,每行的首数大于上行的尾数。在这个二维数组中搜素某一个数。我当时看到这题时,想法是使用四次二分查找,每一次缩小搜素的矩形区域,因为以前在leecode上做的那题是行元素递增,列元素递增,这两题还是有点不一样。书中所给解法是将二维映射成一维数组A,A有m*n个元素,那么...
阅读全文
摘要:我看到此题时,首先想到一个一个比较遍历过去,这是最暴力的方法,后面我想到了已经排序,那么对每个数组进行二分,然后比较这两个值。此书第三种解法,挺不错,只对那个长度较小的数组进行二分查找,保证i+j-1=k,最后讨论a[i-1],b[j]的情况。
阅读全文
摘要:选择一个数,把数组的数分为两部分,把比选中的数小或者相等的数移到数组的左边,把比选中的数大的数移到数组的右边,返回分区后的选中数所在的下标。可以用此函数来解决Top k 问题,或者数组中和大于某一值的子数组中的数最少的问题。
阅读全文
摘要:https://leetcode.com/problems/powx-n/刚开始看到这题,觉得应该先求对数,然后求指数,然后泰勒展开,展开来展开去都不知怎么搞。神牛听后,来了句二分。我还以为是什么迭代法的二分求值,原来是像矩阵快速幂那样的二分,然后,还是不会写。看了下以前查看的矩阵快速幂实现,原来是...
阅读全文

浙公网安备 33010602011771号