![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题
文章平均质量分 71
希境
被代码耽误了的厨师
展开
-
leetcode-239-滑动窗口最大值
解题思路1,暴力,n*n2,最先想到大顶堆,最大的永远在堆顶,但窗口有限,我们需要不断的移除不在此窗口区间的值,此时就很麻烦了。3,维护一个双向队列,队列存储的是值的下标,队列头部是最大值,尾部是新添加的。每次滑动窗口,准备添加的要比队尾值大,我们就去除队尾值。队头超过窗口范围的也可以简单的pop处理。代码class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, i...原创 2020-09-13 12:15:01 · 12993 阅读 · 0 评论 -
41,缺失的第一个正数
解题思路一,暴力肯定不可取,时间要O(n^2)二,sort一遍也不行,空间要O(n)三,时间要O(n),空间常数,只能找方法。可以想到,如果每个数字刚好对应那个空间地址(nums[i]==i+1),那么找到第一个不是(nums[i]==i+1)的就是我们要寻找的数字了。1)先for循环每个数字,当(nums[tmp]!=tmp+1)时,把该数字tmp与nums[tmp-1]替换,直到满足(nums[i]==i+1)2)最后前面的数字满足了nums[i]==i+1,第一个不满足的就是缺失的..原创 2020-08-08 10:52:36 · 17277 阅读 · 0 评论 -
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
解题思路:如果数组为空,则直接pass;模拟移动的过程,向右、向下、向左、向上。分别设置上下左右的值每移动一行(一列),就重新设置值(比如向右遍历一遍后,那么上的值就从0变成了1),如果超过范围就说明遍历完成了class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> retu; if.原创 2020-06-20 11:04:48 · 396 阅读 · 1 评论 -
有5只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成5份,它拿上自己的一份走了.第 2,3,4,5只猴子也遇到同样的问题,采
有5只猴子在海边发现一堆桃子,决定第二天来平分.第二天清晨,第一只猴子最早来到,它左分右分分不开,就朝海里扔了一只,恰好可以分成5份,它拿上自己的一份走了.第 2,3,4,5只猴子也遇到同样的问题,采用了同样的方法,都是扔掉一只后,恰好可以分成5份.问这堆桃子至少有1只?最简单的思路为:求(4+n)/(5^5)的最小整数解时,n的值。借4个桃子给猴子,那么第1、2、3、4、5个猴子看见的桃子数量都是5的整数倍。第1个猴子先丢掉一个,可以看成是它从自己那一份((n+4)/5)中拿的,它拿走自己的那一份后原创 2020-06-19 12:44:47 · 4445 阅读 · 0 评论 -
42 接雨水 leetcode
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6批注:虽然leetcode上标注为hard,...原创 2019-09-18 23:00:53 · 97 阅读 · 0 评论 -
1025 除数博弈 leetcode
爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。...原创 2019-09-15 22:40:48 · 142 阅读 · 0 评论 -
852 山峰数组的峰顶索引 leetcode
我们把符合下列属性的数组 A 称作山脉:A.length >= 3存在 0 < i < A.length - 1 使得A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length - 1]给定一个确定为山脉的数组,返回任何满足 A[0] < A[1] < … A[i-1] &l...原创 2019-09-15 21:45:58 · 184 阅读 · 0 评论 -
461 汉明距离 leetcode
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭头指出了对应二进制位不同的位置。class Solution {public: i...原创 2019-09-13 22:56:20 · 107 阅读 · 0 评论 -
1190 反转每对括号间的子串 leetcode
给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“dcba”示例 2:输入:s = “(u(love)i)”输出:“iloveu”示例 3:输入:s = “(ed(et(oc))el)”输出:“leetcode”示...原创 2019-09-21 10:05:51 · 1583 阅读 · 0 评论 -
455 分发饼干 leetcode
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小...原创 2019-09-22 22:23:24 · 282 阅读 · 0 评论 -
376 摆动序列 leetcode
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差...原创 2019-09-25 22:33:28 · 91 阅读 · 0 评论 -
5080 查找两课二叉搜索树之和 leetcode
给出两棵二叉搜索树,请你从两棵树中各找出一个节点,使得这两个节点的值之和等于目标值 Target。如果可以找到返回 True,否则返回 False。/**Definition for a binary tree node.struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(...原创 2019-10-06 12:30:26 · 146 阅读 · 0 评论 -
5213 玩筹码 leetcode
数轴上放置了一些筹码,每个筹码的位置存在数组 chips 当中。你可以对 任何筹码 执行下面两种操作之一(不限操作次数,0 次也可以):将第 i 个筹码向左或者右移动 2 个单位,代价为 0。将第 i 个筹码向左或者右移动 1 个单位,代价为 1。最开始的时候,同一位置上也可能放着两个或者更多的筹码。返回将所有筹码移动到同一位置(任意位置)上所需要的最小代价。示例 1:输入:chip...原创 2019-10-06 14:09:39 · 164 阅读 · 0 评论 -
5079 三个有序数组的交集 leetcode
给出三个均为 严格递增排列 的整数数组 arr1,arr2 和 arr3。返回一个由 仅 在这三个数组中 同时出现 的整数所构成的有序数组。示例:输入: arr1 = [1,2,3,4,5], arr2 = [1,2,5,7,9], arr3 = [1,3,4,5,8]输出: [1,5]解释: 只有 1 和 5 同时在这三个数组中出现.提示:1 <= arr1.length, ...原创 2019-10-06 17:30:43 · 384 阅读 · 0 评论 -
LCP 2 分式化简 leetcode
输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。示例 1:输入:cont = [3, 2, 0, 2]输出:[13, 4]解释:原连分数等价于3 + (1 / (2 + (1 / (0 + 1 / 2))))。注意[26, 8], [-13, -4]都不是正确答案。示例...原创 2019-10-06 17:40:28 · 190 阅读 · 0 评论 -
976 三角形的最大周长 leetcode
给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。示例 1:输入:[2,1,2]输出:5示例 2:输入:[1,2,1]输出:0示例 3:输入:[3,2,3,4]输出:10示例 4:输入:[3,6,2,3]输出:8class Solution { public: ...原创 2019-08-10 18:55:29 · 1207 阅读 · 0 评论 -
303 区域和检索-数组不可变 leetcode
给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不可变。...原创 2019-08-10 17:54:18 · 111 阅读 · 0 评论 -
只出现一次的数字(异或)leetcode136
首先数学基础:##一个数与自身异或是0,一个数与0异或是本身异或具有交换率。举个栗子:2 3 4 2 3所有数字依次异或运算:2 xor 3 xor 4 xor 2 xor 3 = (2 xor 2) xor (3 xor 3) xor 4= 0 xor 0 xor 4 = 4给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。...原创 2019-08-03 10:45:59 · 3810 阅读 · 0 评论 -
分割链表leetcode86
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5申请新空间做头结点方式class Solution {public...原创 2019-08-07 22:07:37 · 3534 阅读 · 0 评论 -
1108IP地址无效化 LeetCode
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例 1:输入:address = “1.1.1.1”输出:“1[.]1[.]1[.]1”示例 2:输入:address = “255.100.50.0”输出:“255[.]100[.]50[.]0”提示:给出的 address 是...原创 2019-08-08 16:06:33 · 1084 阅读 · 0 评论 -
237删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -...原创 2019-08-08 16:26:13 · 3506 阅读 · 0 评论 -
182 查找重复的电子邮箱leetcode
# Write your MySQL query statement belowSELECT Email FROM person GROUP BY Email HAVING COUNT(*)>1原创 2019-08-09 07:02:01 · 6396 阅读 · 0 评论 -
1021删除最外层的括号leetcode
有效括号字符串为空 ("")、"(" + A + “)” 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非空有效字符串...原创 2019-08-09 07:35:00 · 1289 阅读 · 0 评论 -
709 转换成小写字母 leetcode
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: “Hello”输出: “hello”示例 2:输入: “here”输出: “here”示例 3:输入: “LOVELY”输出: “lovely”class Solution {public: string toLower...原创 2019-08-18 16:03:49 · 2045 阅读 · 0 评论 -
804 唯一摩尔斯密码词 leetcode
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–","-.","—",".–."...原创 2019-08-18 17:03:59 · 111 阅读 · 0 评论 -
832 翻转图像 leetcode
给定一个二进制矩阵 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,0]]输...原创 2019-08-19 10:35:56 · 89 阅读 · 0 评论 -
1154 一年中的第几天 leetcode
给你一个按 YYYY-MM-DD 格式表示日期的字符串 date,请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。示例 1:输入:date = “2019-01-09”输出:9示例 2:输入:date = “2019-02-10”输出:41示例 3...原创 2019-08-14 13:25:23 · 6390 阅读 · 0 评论 -
824 山羊拉丁文 leetcode
给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。例如,单词"apple"变为"applema"。如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添...原创 2019-08-10 10:11:00 · 1190 阅读 · 0 评论 -
1046最后一块石头的重量 leetcode
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。...原创 2019-08-10 10:28:49 · 2075 阅读 · 0 评论 -
788旋转数字leetcode
我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。现在我们有一个正整数 N, 计算从 1 到...原创 2019-08-10 15:57:58 · 6357 阅读 · 0 评论 -
283 零移动 leetcode
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。class Solution {public: void moveZeroes(vector<int>& nums) { ...原创 2019-08-10 16:19:00 · 82 阅读 · 0 评论 -
1009 十进制整数的反码 leetcode
每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 “101”,11 可以用二进制 “1011” 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 “101” 的二进制反码为 “010”。给定十进制数 N,返回其二进制表示的反码所对应的十进制整数。示例 1:输入:5输出:2...原创 2019-08-10 17:26:52 · 3521 阅读 · 0 评论 -
反转链表1-2
反转链表——leetcode:92/206题简单篇示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLc++版/** * Definition for singly-linked list. * struct ListNode { ...原创 2019-07-20 15:25:59 · 1667 阅读 · 0 评论