leetcode
shine10076
这个作者很懒,什么都没留下…
展开
-
Day12 除自身以外数组的乘积
problem describe: 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目...原创 2018-09-16 21:55:13 · 432 阅读 · 0 评论 -
leetcode 349 两个数的交集
Problem describe:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。解法:采用两个哈希集合...原创 2018-11-05 21:33:10 · 147 阅读 · 0 评论 -
Leetcode 740 删除和获得点数
Problem describe:给定一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入: nums = [3, 4, 2]输出: 6解释:删...原创 2018-11-08 21:18:25 · 251 阅读 · 0 评论 -
Leetcode763 划分字母区间
Problem describe:字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入: S = “ababcbacadefegdehijhklij”输出: [9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一...原创 2018-11-17 19:43:55 · 378 阅读 · 0 评论 -
Leetcode 367有效的完全平方数
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False解法:最简单的解法是由于1+3+5+7…完全平方数是连续的奇数之和,所以简单方法是class Solution { public boolean ...原创 2018-12-06 21:25:58 · 112 阅读 · 0 评论 -
单链表相交的一系列问题
单链表相交的一系列问题在给定的单链表中,单链表可能有环,可能无环。判断链表是否相交 要求:如果链表1的长度为N,链表2的长度为M,时间复杂度达到了O(M+N),额外空间复杂度为O(1)。这道题需要分析的情况很多,额外空间复杂度O(1)的限制。本题可以拆分为三个子问题,每个问题都可以作为一道独立的算法题,具体如下:问题一:如何判断一个链表是否有环,如果有,返回第一个进入环的节点,没有...原创 2019-05-09 17:07:23 · 225 阅读 · 0 评论 -
Day11回文子串
problem describe: 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。 解法: 简单的方法就是固定串的开头,不断的增加字串的长度,依次判断每一个是否为回文字串class Solution {public: int countSubstrings(string s)...原创 2018-09-15 22:18:58 · 202 阅读 · 0 评论 -
Day11 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。 解答:思路不是很难,可以将其划分为子问题来解决,到达(m,n)需要f(...原创 2018-09-14 21:57:56 · 171 阅读 · 0 评论 -
Day 10旋转图像
problem describe:给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]由于是n*n的矩阵,所以还是相对简单的,就观察矩阵,我的思...原创 2018-09-13 22:04:53 · 101 阅读 · 0 评论 -
Day10 非递减数列
problem describe: 给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。 我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。 解法:如果所有的A[i-1]<=A[i],那么肯定是非递减的数列,如果A[i]c...原创 2018-09-13 20:28:57 · 122 阅读 · 0 评论 -
Leetcode 343 整数拆分
Problem describe:给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。解法...原创 2018-11-06 22:06:54 · 349 阅读 · 0 评论 -
leetcode 611 有效三角形个数
Problem describe:给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。解法:如果我们将给定的数组由大到小排序时,问题就转变...原创 2018-10-31 22:20:11 · 373 阅读 · 0 评论 -
Day5 爬梯子问题,典型的动态规划题
problem describing : 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。 首先,我只能想到递归求解的方法,即将问题分解成一个个的子问题。 n阶的解=n-1阶的解+n-2阶的解; 可惜他超时了。。。class Solution {public: int ...原创 2018-09-06 21:09:57 · 631 阅读 · 0 评论 -
Day14找出数组中重复的数据
problem describe:给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?solution:因为题目限定了nums[i]的大小在1-n之间,所以我们只需改动给定的数组nums,将元素x存入nums[x-1]之中,最后检查一遍数组,...原创 2018-09-18 21:23:05 · 452 阅读 · 0 评论 -
Day15 leetcode寻找重复数
problem describe:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 数组中只有一个重复的数字,但它可能不止重复出现一次。解法:由于题目的限制条件...原创 2018-09-19 21:55:38 · 309 阅读 · 0 评论 -
Day 16 leetcode 数组版块 做好初始定义(c++实现)
Problem describe:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解法:将所有非零元素按顺序平移到最前面。class Solution {public: void moveZ...原创 2018-09-22 21:10:56 · 138 阅读 · 0 评论 -
Day 25 leetcode 215 数组中第k个最大元素
Problem describe:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。解...原创 2018-09-27 21:40:47 · 495 阅读 · 0 评论 -
Day 26leetcode 88 合并两个有序数组
Problem describe:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0],...原创 2018-09-28 20:04:48 · 120 阅读 · 0 评论 -
leetcode队列与栈,岛屿的个数
Problem describe:岛屿的个数:给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3...原创 2018-10-15 21:19:30 · 392 阅读 · 0 评论 -
leetcode 最小栈
Problem describe:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minS...原创 2018-10-15 21:43:04 · 541 阅读 · 0 评论 -
leetcode 栈与队列c++实现循环队列
循环队列是一种线性数据结构,循环队列与普通队列的区别就是循环队列可以使用队列之前用过的空间。下面是实现自己的循环队列class MyCircularQueue{private: vector<int> data; int front; int tail; int size;public: /** Initialize your data structure here....原创 2018-10-09 22:37:55 · 396 阅读 · 0 评论 -
Day 9求众数
problem describe: 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在众数。 解法: 由于数组是非空的,并且众数在数组中的存在数量是超过一半的,那么我们可以不用对每个数都做统计,而是遍历一遍数组,声明一个major变量并用nums[0]来初始化,声明一个变量count并且初始化为...原创 2018-09-11 21:53:50 · 134 阅读 · 0 评论