C++
菜鸟在路上1956
这个作者很懒,什么都没留下…
展开
-
LeetCode 1 : 两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领...原创 2020-06-13 23:34:31 · 218 阅读 · 0 评论 -
new和malloc的区别
new和malloc的区别是C/C++一道经典的面试题。0. 属性new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。1. 参数使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。2. 返回类型new操作符内存分配成功时,返回的是对象类型的...转载 2018-07-04 16:11:15 · 110 阅读 · 0 评论 -
LeetCode105:从前序与中序遍历序列构造二叉树
原题:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解答:这个题目也是剑指offer中的一道题目,思路比较清...原创 2018-11-30 16:16:52 · 113 阅读 · 0 评论 -
LeetCode120:三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。...原创 2018-12-08 18:16:47 · 118 阅读 · 0 评论 -
LeetCode448:找到所有数组中消失的数字
给定一个范围在 1 ≤ a[i] ≤n(n= 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1,n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]解析: ...原创 2018-12-12 21:23:37 · 240 阅读 · 0 评论 -
LeetCode628:三个数的最大乘积
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3] 输出: 6示例 2:输入: [1,2,3,4] 输出: 24 注意: 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。解析: ...原创 2018-12-12 21:57:26 · 138 阅读 · 0 评论 -
LeetCode485:最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含0和1。 输入数组的长度是正整数,且不超过 10,000。解析: 题目非常简单,只需要一次遍历统计连续1,然后和当前连续1的最大值top进行比较就可以了。但...原创 2018-12-13 09:08:40 · 253 阅读 · 0 评论 -
LeetCode643:子数组最大平均数 I
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75注意: 1 <= k <= n <= 30,000。 所给数据范围 [-10,000,10,000]。解析: ...原创 2018-12-13 20:12:02 · 157 阅读 · 0 评论 -
LeetCode88:合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2018-12-13 21:43:45 · 140 阅读 · 0 评论 -
LeetCode118:杨辉三角
解析: 杨辉三角应该是比较熟悉的题目,可以看成是一个二维数组,数组的每一行元素个数比上一行多一个,每一行第一个元素和最后一个元素都是1,其余元素,是它左上角元素和它上面的元素之和。用公式表示就是f[m][n]=f[m-1][n-1]+f[m-1][n],前提是m->=0,n-1>=0 ; 所以根据这个公式就可以很好计算了。 用程序...原创 2018-12-06 19:50:32 · 126 阅读 · 0 评论 -
LeetCode66:加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321...原创 2018-12-14 10:40:56 · 92 阅读 · 0 评论 -
LeetCode119:杨辉三角II
解析: 此题和之前118类似,只是该题只需要输出第K行即可,因此不需要保存所有行的元素。不再需要定义一个二维数组,只需要定义两个一维数组,用来存储本行和上一行的值就可以了。 代码 :vector<int> getRow(int rowIndex) { vector<int> result; if (rowIndex...原创 2018-12-07 09:48:10 · 132 阅读 · 0 评论 -
LeetCode896:单调数列
如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有i <= j,A[i] <= A[j],那么数组A是单调递增的。 如果对于所有i <= j,A[i]> = A[j],那么数组A是单调递减的。当给定的数组A是单调数组时返回true,否则返回false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入...原创 2018-12-20 12:31:18 · 146 阅读 · 0 评论 -
LeetCode122:购买股票的最佳时机II
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...原创 2018-12-09 14:39:02 · 177 阅读 · 0 评论 -
LeetCode35:搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], ...原创 2018-12-15 09:09:08 · 117 阅读 · 0 评论 -
LeetCode665:非递减数列
转自:http://www.cnblogs.com/grandyang/p/7565424.html给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。示例 1:输入: ...转载 2018-12-27 11:56:13 · 211 阅读 · 0 评论 -
LeetCode532:数组中的K-diff数对
给定一个整数数组和一个整数k, 你需要在数组里找到不同的k-diff 数对。这里将k-diff数对定义为一个整数对 (i, j), 其中i和j都是数组中的数字,且两数之差的绝对值是k.示例 1:输入: [3, 1, 4, 1, 5], k = 2输出: 2解释: 数组中有两个 2-diff 数对, (1, 3) 和 (3, 5)。尽管数组中有两个1,但我们只应返回...原创 2018-12-21 20:12:05 · 312 阅读 · 0 评论 -
LeetCode219:存在重复元素II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2...原创 2018-12-17 15:10:03 · 132 阅读 · 0 评论 -
LeetCode561:数组拆分 I
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).提示:n 是正整数,范围在 [1, 10000...原创 2018-12-22 13:16:36 · 259 阅读 · 0 评论 -
LeetCode941:有效山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3 在 0 < i < A.length - 1 条件下,存在 i 使得: A[0] < A[1] < ... A[i-1] < A[i] A[i] > A[i+1] &g...原创 2018-12-28 10:04:12 · 187 阅读 · 0 评论 -
LeetCode189:旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,...原创 2018-12-11 19:54:58 · 106 阅读 · 0 评论 -
LeetCode217:存在重复元素
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4] 输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2] 输出: true解析: ...原创 2018-12-11 20:17:31 · 114 阅读 · 0 评论 -
LeetCode268:缺失数字
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1] 输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?解析: 该题目虽然是一个简单题目,但是也不太好想,且时...原创 2018-12-12 12:08:34 · 177 阅读 · 0 评论 -
LeetCode283:移动零
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:1、必须在原数组上操作,不能拷贝额外的数组。2、尽量减少操作次数。解析: 如果没有空间的限制,可以用额外数组来完成,但是题目中有限制,就不能采用这种方法了。需要用到双指针的方法,一个...原创 2018-12-12 12:29:33 · 122 阅读 · 0 评论 -
LeetCode867:转置矩阵
给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示: 1 <= A.length...原创 2018-12-18 12:22:46 · 190 阅读 · 0 评论 -
LeetCode566:重塑矩阵I
在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:...原创 2018-12-24 10:20:56 · 148 阅读 · 0 评论 -
LeetCode605:种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出...原创 2018-12-24 13:36:43 · 297 阅读 · 2 评论 -
LeetCode674:最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。注意:数...原创 2019-01-03 16:54:26 · 222 阅读 · 0 评论 -
LeetCode888:公平的糖果交换
爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 块糖的大小,B[j] 是鲍勃拥有的第 j 块糖的大小。因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。如果有多个...原创 2018-12-19 12:05:34 · 207 阅读 · 0 评论 -
LeetCode581:最短无序连续子数组
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入的数组长度范围在 [1, 10,000]。...原创 2018-12-25 12:18:54 · 397 阅读 · 0 评论 -
LeetCode747:至少是其他数字两倍的最大数
在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例 1:输入: nums = [3, 6, 1, 0]输出: 1解释: 6是最大的整数, 对于数组中的其他整数,6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.示例 2:输入: nums = [1,...原创 2019-01-06 12:18:29 · 263 阅读 · 0 评论 -
LeetCode661:图片平滑器
包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1], [1,0,1], [1,1,1]]输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]解释:对于点 (0...原创 2019-01-02 13:57:19 · 375 阅读 · 0 评论 -
LeetCode717:1比特与2比特字符
有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10或11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例1:输入: bits = [1, 0, 0]输出: True解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例2:输入: ...原创 2019-01-11 21:12:01 · 362 阅读 · 0 评论 -
LeetCode905:按奇偶排序数组
给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 5000 0 <= A[i] <=...原创 2019-01-07 10:34:31 · 150 阅读 · 0 评论 -
LeetCode832:翻转图像
给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],[0,0,...原创 2019-01-12 16:39:26 · 97 阅读 · 0 评论 -
LeetCode724:寻找数组的中心索引
给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入: nums = [1, 7, 3, 6, 5, 6]输出: 3解释: 索引3 (nu...原创 2019-01-18 09:40:23 · 258 阅读 · 0 评论 -
LeetCode840:矩阵中的幻方
3 x 3 的幻方是一个填充有从 1 到 9的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。给定一个由整数组成的 N × N 矩阵,其中有多少个 3 × 3 的 “幻方” 子矩阵?(每个子矩阵都是连续的)。示例 1:输入: [[4,3,8,4], [9,5,1,9], [2,7,6,2]]输出: 1解释: 下面的子矩阵是...原创 2019-01-18 11:03:41 · 393 阅读 · 0 评论 -
LeetCode697:数组的度
给定一个非空且只包含非负数的整数数组nums, 数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是找到与nums拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入: [1, 2, 2, 3, 1]输出: 2解释: 输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, ...原创 2019-01-08 13:18:47 · 248 阅读 · 0 评论 -
LeetCode830:较大分组的位置
在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 S = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。最终结果按照字典顺序输出。示例 1:输入: "abbxx原创 2019-01-14 10:08:00 · 150 阅读 · 0 评论 -
LeetCode849:到最近的人的最大距离
在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。至少有一个空座位,且至少有一人坐在座位上。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离他最近的人的最大距离。示例 1:输入:[1,0,0,0,1,0,1]输出:2解释:如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。如果亚...原创 2019-01-09 10:27:52 · 233 阅读 · 0 评论