力扣
LeetCode
失落的换海迷风
关注我了解最近咨询
展开
-
【力扣】[热题HOT100] 647.回文子串
1、题目给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。链接:https://leetcode-cn.com/problems/palindromic-substrings/2、思路分析1)暴力求解法中心扩展法:字符串从左到右的每个字符,都进行一次中心扩展,以该字符为中心,向两边扩展,判断是不是回文子串,如果是则 ans++,不是则遍历下一个字符,直至字符串全部遍历完毕。class Solution {原创 2021-07-08 20:36:36 · 79 阅读 · 0 评论 -
【力扣】[热题HOT100] 394.字符串解码
1、题目给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。链接:https://leetcode-cn.com/problems/decode-stri原创 2021-07-07 23:06:24 · 172 阅读 · 0 评论 -
【力扣】[热题HOT100] 322.零钱兑换
1、题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。链接:https://leetcode-cn.com/problems/coin-change/2、思路分析动态规划当需要把问题转化为子问题时用动态规划注意:开辟空间的大小,初始化开辟的空间当 i (i可以认为是当前的零花钱) 的值大于coins[j] 时,将当前值减掉,然后更新 dp[原创 2021-06-07 22:49:55 · 121 阅读 · 1 评论 -
【力扣】[热题 HOT100] 104.二叉树的最大深度
1.题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/2.思路分析递归找左边最大的,右边最大的返回最大的加1(根节点)3.代码展示/** * Definition for a binary tree node. * struct TreeNode { * int原创 2021-04-19 18:36:36 · 95 阅读 · 0 评论 -
【力扣】[热题 HOT100] 102.二叉树的层序遍历
1.题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/2.思路分析广度优先遍历利用queue的特性,将节点一个一个的入队列只有当队列空的时候,才表示循环结束用什么来表示每层的个数,然后想到,其实每层的节点,我们每次不都入队列了吗?那就直接q.size() 就知道每层的节点的个数,然后将节点放在一个临时的ve原创 2021-04-19 18:28:50 · 100 阅读 · 0 评论 -
【力扣】[热题 HOT100] 75.颜色分类
1.题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。链接:https://leetcode-cn.com/problems/sort-colors/ 2.思路解析这题不是很难,就是一个简单的排序第一种方法运用的是计数排序第二种方法是将2和0放在正确的位置上,那么1自然在正确的位置第二种方法最精妙的还是处理i位置是2,同时p2位置原创 2021-04-04 16:59:11 · 91 阅读 · 0 评论 -
【力扣】[热题 HOT100] 72.编辑距离
1.题目给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符链接:https://leetcode-cn.com/problems/edit-distance/ 2.思路分析动态规划处理掉特殊情况将开辟的数组的边界进行初始化对数组内部进行数字填写3.代码展示class Solution {public: int minDistan原创 2021-04-01 13:08:09 · 74 阅读 · 0 评论 -
【力扣】[热题 HOT100] 49.字母异位词分组
1.题目给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。链接:https://leetcode-cn.com/problems/group-anagrams/2.思路分析unordered_map<string, vector< string >>这里是要用这个数据的组织形式,这样的话,我们就根据这种排好序的字符串将相同的字符挂在了一起这样的话,直接将数据写入到二维数组中即可3.代码展示class Solution {pub原创 2021-03-28 23:30:31 · 102 阅读 · 0 评论 -
【力扣】[热题 HOT100] 46.全排列
1.题目给定一个 没有重复 数字的序列,返回其所有可能的全排列.链接:https://leetcode-cn.com/problems/permutations/ 2.思路分析回溯法回溯法的难处在于设置退出的条件,即:这里的first(表示当前数字的个数)和len(表示数组的大小)循环的时候开始的位置,以及循环次数的设置都是难点一旦确定回溯法,这些值必须给定正确3.代码展示class Solution {public: void dfs(vector<vec原创 2021-03-27 23:45:37 · 103 阅读 · 0 评论 -
【力扣】[热题 HOT100] 39.组合总和
1.题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。https://leetcode-cn.com/problems/combination-sum/ 2.思路分析回溯法dfs函数,传入数组nums,target,开始遍历数组的下标,sum表示和当sum等于target的时候,那么就将数字push到ans中最后恢复数字原创 2021-03-26 23:57:53 · 80 阅读 · 0 评论 -
【力扣】[热题 HOT100] 33.搜索旋转排序数组
1.题目整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后 的数组 nums 和一个原创 2021-03-25 23:32:44 · 193 阅读 · 0 评论 -
【力扣】[热题 HOT100] 32.最长有效括号
1.题目给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。链接:https://leetcode-cn.com/problems/longest-valid-parentheses/ 2.思路解析栈(栈中放左括号的下标)先垫一个数字,防止字节出现右括号的情况,有数字可以出将遇到的左括号入栈,不是左括号出栈然后判断如果栈空,那么就入栈(还有字符的情况)栈不为空,就修改maxLen的值3.代码展示class Solution {pu原创 2021-03-25 22:50:13 · 89 阅读 · 0 评论 -
【力扣】[热题HOT 100] 31.下一个排列
1.题目实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。https://leetcode-cn.com/problems/next-permutation/ 2.思路分析找到对应数组的下一个大于自身的数字,对其修改 [1,2,3] [1,3,2] [2,1,3] [2,3,1] [3,1,2] [3,2,1原创 2021-03-24 23:24:35 · 87 阅读 · 0 评论 -
【力扣】[热题HOT 100] 23.合并K个升序链表
1.题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。链接:https://leetcode-cn.com/problems/merge-k-sorted-lists/ 2.思路解析优先级队列解决法这里是先写了一个结构体,变量是值和ListNode指针,重载了<优先级队列里面放的是status的结构体先将链表全部挂到优先级队列中,每个优先级队列的节点后面还是有很多的ListNode节点的循环开始,q如果为空的话,那么就原创 2021-03-24 22:40:30 · 122 阅读 · 0 评论 -
【力扣】[热题HOT 100] 17.电话号码的字母组合
1.题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/ 2.思路解析深度优先遍历将数字和字母保存在map当中设定一个全局result和临时temp每当index和digits.size()相等时,那么就将temp写原创 2021-03-21 23:25:20 · 95 阅读 · 0 评论 -
【力扣】[热题HOT 100] 15.三数之和
1.题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。链接:https://leetcode-cn.com/problems/3sum/ 2.思路分析排序+双指针法先将原数组排序,然后开始遍历再写一个函数,传参(nums, i, -nums[i], nums[i], result);target是从最小的数字开始,l从i+原创 2021-03-21 22:58:04 · 123 阅读 · 0 评论 -
【力扣】[热题HOT 100] 10.正则表达式匹配
1.题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。链接:https://leetcode-cn.com/problems/regular-expression-matching/ 2.思路解析这里采用递归的方式,效率还是比较低的先判断s是不是空,对于空的情况,然后判断s只要的个数只要是奇数就返回false原创 2021-03-21 00:03:02 · 144 阅读 · 0 评论 -
[剑指 Offer 47.] 礼物的最大价值
一.题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/ 二.代码class Solution {public: int maxValue(vector<原创 2021-02-20 23:02:21 · 71 阅读 · 0 评论 -
[剑指 Offer 46.] 把数字翻译成字符串
一.题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/ 二.代码class Solution {public: int translateNum(int原创 2021-02-19 22:30:35 · 59 阅读 · 0 评论 -
[剑指 Offer 45.] 把数组排成最小的数
一.题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/ 二.代码class Solution {public: string minNumber(vector<int>& nums) { vector<string> strs;原创 2021-02-19 22:06:14 · 57 阅读 · 0 评论 -
【力扣】[剑指 Offer 39.] 数组中出现次数超过一半的数字
1.题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/代码展示int majorityElement(int* nums, int numsSize){ // 根据题意说找到大于数组长度一般的数字并返回 // 这里采用原创 2020-10-08 19:48:03 · 156 阅读 · 0 评论 -
【力扣】[剑指 Offer 31.] 栈的压入、弹出序列
一.题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列{1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2}就不可能是该压栈序列的弹出序列。链接:https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/二.代码展示bool validateStackSequenc原创 2020-09-18 13:31:27 · 194 阅读 · 0 评论 -
【力扣】[剑指 Offer 29.] 顺时针打印矩阵
一.题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/二.代码展示/** * Note: The returned array must be malloced, assume caller calls free(). */int* spiralOrder(int** matrix, int matrixSize, int* matri原创 2020-09-17 12:24:56 · 96 阅读 · 0 评论 -
【力扣】[剑指 Offer 28. ]对称的二叉树
一.题目请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。链接:https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/二.代码展示/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeN原创 2020-09-16 20:29:28 · 65 阅读 · 0 评论 -
【力扣】[剑指 Offer 27.] 二叉树的镜像
一.题目请完成一个函数,输入一个二叉树,该函数输出它的镜像。链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/二.代码展示/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *原创 2020-09-16 09:01:59 · 130 阅读 · 0 评论 -
【力扣】[剑指 Offer 26.] 树的子结构
一.题目输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/二.代码展示/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; *原创 2020-09-09 17:33:58 · 118 阅读 · 0 评论 -
【力扣】[剑指 Offer 25.] 合并两个排序的链表
一.题目输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/二.代码展示/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */stru原创 2020-09-09 16:48:28 · 78 阅读 · 0 评论 -
【力扣】[剑指 Offer 24.] 反转链表
一.题目定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/二.代码展示/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* rever原创 2020-09-06 10:44:00 · 76 阅读 · 0 评论 -
【力扣】[剑指 Offer 21.] 调整数组顺序使奇数位于偶数前面
一.题目输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/二.代码展示/** * Note: The returned array must be malloced, assume caller calls free(). *原创 2020-08-30 18:50:23 · 113 阅读 · 0 评论 -
【力扣】[剑指 Offer 20.] 表示数值的字符串
一.题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。链接:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/二.代码展示// 处理连续的数字bool scanUnsignedInt(char** ps原创 2020-08-29 15:53:21 · 95 阅读 · 0 评论 -
【力扣】[剑指 Offer 19.] 正则表达式匹配
一.题目请实现一个函数用来匹配包含’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。链接:https://leetcode-cn.com/problems/zheng-ze-biao-da-shi-pi-pei-lcof/二.代码展示bool isMatchCore(char* s, ch原创 2020-08-21 10:39:55 · 104 阅读 · 0 评论 -
【力扣】[剑指 Offer 18.] 删除链表的节点
一.题目给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/二.代码展示/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */原创 2020-08-19 08:51:50 · 68 阅读 · 0 评论 -
【力扣】[剑指 Offer 16.] 数值的整数次方
一.题目实现函数double Power(double base, intexponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/二.代码展示double myPow(double x, int n){ // 任何数的0次幂都是1 if(n == 0) return 1; //原创 2020-08-18 08:28:40 · 110 阅读 · 2 评论 -
【力扣】[剑指 Offer 14- II.] 剪绳子 II
一.题目给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。https://leetcode-cn.com/problems/ji原创 2020-08-17 08:08:22 · 76 阅读 · 0 评论 -
【力扣】[剑指 Offer 14- I.] 剪绳子
一.题目给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。链接:https://leetcode-cn.com/problems/jian-sheng-zi-lcof/二.代码展示方法一int cuttingRope(int n)原创 2020-08-16 09:01:11 · 96 阅读 · 0 评论 -
【力扣】[剑指 Offer 13. ]机器人的运动范围
一.题目地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0]的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格[35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?链接:https://leetcode-cn.com/problems/ji-qi-re原创 2020-08-15 09:28:47 · 192 阅读 · 0 评论 -
【力扣】[剑指 Offer 12.] 矩阵中的路径
一.题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”], [“s”,“f”,“c”,“s”], [“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第原创 2020-08-14 20:51:47 · 208 阅读 · 0 评论 -
【力扣】[剑指 Offer 10- II.] 青蛙跳台阶问题
一.题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/二.代码展示int numWays(int n){ if(n < 2) return 1; int a = 1原创 2020-08-12 08:27:05 · 93 阅读 · 0 评论 -
【力扣】[剑指 Offer 09.] 用两个栈实现队列
一.题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/二.代码展示typedef struct { // 两个栈,长度,top, int len;原创 2020-08-11 08:53:20 · 172 阅读 · 0 评论 -
【力扣】[剑指 Offer 07.] 重建二叉树
一.题目输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/二. 代码展示/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struc原创 2020-08-10 09:05:05 · 188 阅读 · 0 评论