2 三三和七七

学生身份

我要认证

暂无相关简介

等级
TA的排名 20w+

leetcode-字符串解码

问题描述给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入示例s = "3[a]2[bc]", 返回 "aaabcbc".s = "3[a2[c]]"

2020-05-28 07:13:26

leetcode-前缀和(整除类型题目)

问题给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]代码class Solution {public: int subarraysDivByK(vector<

2020-05-27 09:01:23

滑动窗口题目汇总

大佬的题解

2020-05-23 10:37:52

leetcode-前序后序得到二叉树

问题根据一棵树的前序遍历与中序遍历构造二叉树。示例例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7代码(c++)class Solution {public: TreeNode* buildTree(vector<int>& preorder, vector<int>&amp

2020-05-22 09:08:16

leetcode-最长回文子串

问题描述示例思路也是看了大佬的解答,因为回文是从前往后读以及从后往前读都是一样的所以采用寻找最长公共子串的方法(注意不是经常使用动态规划寻找的最长公共子序列),公共子串同样采用动态规划的思想,寻找最长公共子串。但是寻找结果有问题,比如说aac345caa,如果采用以上做法结果就是aac,显然是不正确的,所以我们要确保寻找到的子串在未倒置之前的最后一个值和当前遍历的源字符串的值相等,也就是说要确保找到的子串在倒置回去以后和现在遍历的源字符串是可以吻合的如果还是觉得博主说的很模糊的话可以参考:参考解答

2020-05-21 09:39:47

lettcode-每个元音包含偶数次的最长子字符串

问题给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’ ,在子字符串中都恰好出现了偶数次。示例输入:s = "eleetminicoworoep"输出:13解释:最长子字符串是 "leetminicowor" ,它包含 e,i,o 各 2 个,以及 0 个 a,u 。代码class Solution {public: int findTheLongestSubstring(string s) {

2020-05-20 09:45:58

lettcode-课程表

问题描述现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。示例输入: 2, [[1,0]] 输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 [0,1] 。输入: 4, [[1,0],[2,0],[3,1],[3,2]]输出: [0,

2020-05-17 08:20:00

lettcode-和为K的子数组

问题给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。思路(今天也是崇拜官方的一天)刚开始的思路是窗口,具体就是设定一个窗口,然后如果这个窗口内的数据大于k,那么就让窗口前面抛弃一个值,否则窗口扩充,但是后来当k=0的时候死活过不去,所以放弃!官方的解答和微妙,就是正常人的思路,如果我想知道当前值之前有没有存在和为k的子数组,那么就用当前值减去k得

2020-05-15 08:12:18

lettcode-去除重复字母

问题给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例示例 1:输入: "bcabc"输出: "abc"示例 2:输入: "cbacdcbc"输出: "acdb"思路整体的思路是贪心。贪心的结果就是每一步都要保证当前字符串的字典序最小。考虑两点:(1)遍历位置i时的当前值小于栈中前面的值,而且前面的值在原字符串中大于i的位置还存在值,那么就应当将前面的值删除,相当于选择了后者放弃了

2020-05-12 10:14:13

lettcode-模拟行走机器人

问题描述机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转 90 度-1:向右转 90 度1 <= x <= 9:向前移动 x 个单位长度在网格上有一些格子被视为障碍物。第 i 个障碍物位于网格点 (obstacles[i][0], obstacles[i][1])机器人无法走到障碍物上,它将会停留在障碍物的前一个网格方块上,但仍然可以继续该路线的其余部分。返回从原点到机器人的最大欧式距离的平方。示例

2020-05-11 10:11:12

lettcode-pow(x,y)实现

问题描述实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例输入: 2.00000, 10输出: 1024.00000输入: 2.10000, 3输出: 9.26100输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25代码(c++)class Solution {public: double myPow(double x, int n) { long long nd=n;

2020-05-11 08:25:31

lettcode-Z字形变换

问题描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例输入: s = "LE

2020-05-10 09:03:15

lettcode-找到数组中所有消失的数字

问题描述给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路(官题解)在这里深深的向官方鞠一躬,向大佬膜拜官方的不用额外空间是这样解决的:在原数组修改主要思路就是在原数组中遍历到

2020-05-09 09:07:51

lettcode-另一个树的子树(不简单的简单题)

问题描述示例思路1、暴力暴力解法就是针对原树中的每一个结点和其子树与标定的子树作对比,利用递归相当于回溯的概念2、匹配过程中加入KMP在匹配过程中,B数是A树的子串的话,说明符合条件。但是针对本题来说,可能会出现以下情况:A根为1,左结点为2,右节点为NULL,B根为1,左结点为NULL,右节点为2,此时两者的先序遍历就是相同的,所以需要在原树中插入左空结点或者右空节点标识(1)将...

2020-05-07 07:31:09

lettcode-最低票价

问题在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的旅行。...

2020-05-06 09:15:35

lettcode-跳跃游戏

问题描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。代码(c++)方法一(超时):动...

2020-05-05 10:18:31

lettcode-验证二叉树

问题描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。实例代码(c++)方法一思想是纯递归,先通过递归遍历到最后的叶子结点,然后从叶子结点向上返回当前最大值和最小值,得到返回值的结点判断是否大于左子树中的最大值,小于右子树中的最...

2020-05-05 10:17:39

lettcode-从先序遍历还原二叉树

问题描述我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。案例输入:"1-2--3--4-5--6--7...

2020-04-30 10:07:22

lettcode-可获得的最大点数

问题描述几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。示例输入:cardPoints = [1,2,3,4,5,6,1], k = 3输出:...

2020-04-26 14:05:53

lettcode-数组中的逆序对

问题描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例输入: [7,5,6,4]输出: 5代码(c++)class Solution {public: int reversePairs(vector<int>& nums) { vector<int&g...

2020-04-24 12:36:37

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。