![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lintcode
ShawGrower
这个作者很懒,什么都没留下…
展开
-
LintCode 142. O(1)时间检测2的幂次
代码:class Solution {public: /* * @param n: An integer * @return: True or false */ bool checkPowerOf2(int n) { // write your code here if(n <= 0) re原创 2016-03-15 19:26:43 · 327 阅读 · 0 评论 -
LintCode 44. 最小子数组
思路:可将问题分解为以当前数为结尾的最小子数组.设以当前数为结尾的最小子数组为minSub[i],则对数组中的每一个数进行遍历,取minSub[i]的最小值即可.1. i == 0, 则minSub[i] = nums[0];2. i != 0, 则: minSub[i] = (minSub[i - 1] > 0)?nums[i]:(minSub[i - 1] + nums[i])原创 2016-03-15 16:52:52 · 263 阅读 · 0 评论 -
LintCode 110. 最小路径和
思路:通过第一列初始化0~m-1行, 每一轮推进一列. e.g. distance[i]开始时保存通过第0列至第i行的最小距离 对于distance[0],要得到第j轮的distance[0],只有其左边位置向右一步这一种方式,即: distance[0] += grid[0][j];原创 2016-03-15 15:57:13 · 394 阅读 · 0 评论 -
LintCode 138. 子数组之和
思路:方法一:最直观的想法是, 对每一个区间, 计算其中数值的和.若为0则返回此区间, 此方法复杂度为O(n^3).方法二:方法一中进行了大量的重复计算, 故可以存储区间的计算值, 则此区间的父区间计算时不用再对此区间进行求值而可以直接对值进行使用.此方法复杂度为O(n^2)方法三:记录每一位下标和相加到当前位的和的映射, 若和重复出现, 则相应的区间内的和必为0.代码:原创 2016-03-16 12:00:06 · 1204 阅读 · 0 评论 -
Lintcode 39. 恢复旋转排序数组
题目描述:给定一个旋转排序数组,在原地恢复其排序。什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3]挑战:使用O(1)的额外空间和O(n)时间复杂度思路:一、直接多次循环二、假设1前面有k个数,找到1的位置后, 将其前原创 2016-03-15 21:11:04 · 2037 阅读 · 1 评论 -
LintCode 50. 数组剔除元素后的乘积
思想:对于结果数组中的每一个元素,分别先乘以其左边的元素,然后再乘以其右边的元素.代码:class Solution {public: /** * @param A: Given an integers array A * @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[原创 2016-03-15 21:01:01 · 307 阅读 · 0 评论 -
LintCode 407. 加一
思路:逐数字相加,采用进位标志标记是否需要进位代码:class Solution {public: /** * @param digits a number represented as an array of digits * @return the result */ vector plusOne(vector& digits原创 2016-03-15 20:45:36 · 238 阅读 · 0 评论 -
LintCode 197. 排列序号
思路:对原数组中的每一个位置,找到其后有多少个数比它小,然后再相加这些数与为对应的权的乘积.代码:class Solution {public: /** * @param A an integer array * @return a long integer */ long long permutationIndex(vector原创 2016-03-15 20:34:28 · 879 阅读 · 0 评论 -
LintCode 96. 链表划分
思路:遍历链表,用两个链表进行记录,遍历完成之后直接操作两个链表.代码:/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val;原创 2016-03-15 19:46:50 · 474 阅读 · 0 评论 -
LintCode 433. 岛屿的个数
思路:遍历每一个位置,若当前位置为土地(值为1),对其进行深搜,深搜同时将此位置的值置为0.代码:class Solution {public: /** * @param grid a boolean 2D matrix * @return an integer */ int numIslands(vector>& grid) {原创 2016-03-15 17:29:36 · 1111 阅读 · 0 评论