![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 60
LeetCode算法思想
情绪小妖精
这个作者很懒,什么都没留下…
展开
-
LeetCode 21. 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。代码:function ListNode(val, next) { this.val = (val === undefined ? 0 : val) this.next = (next === undefined ? null : next)}let mergeTwoLists = function(list1, list2) { let preHead = new ListNode(0)原创 2022-04-23 17:31:04 · 509 阅读 · 0 评论 -
Leetcode 5.最长回文子串
给定一个字符串,找到其中最长的回文子串回文串的定义为左右对称,例如 abcba ,这个字符串以 c 为中心左右对称;又例如 abccba ,这个字符串也是对称的,虽然中心不在某个字符上。现在假设字符串 str 为 abcdeffeab ,不难看出其中有一个回文子串 abcd effe ab,有假设现在字符串为 abadeffea,里面有两个回文子串 aba d effe a,那么这个字符串的最长回文子串应该为 effe由于字符串 str 中可能出现多个回文子串,因此,现在假定有两个索引 left 和原创 2022-04-17 17:43:02 · 223 阅读 · 0 评论 -
Leetcode热题70:爬楼梯
Leetcode热题70:爬楼梯题目如下:假设需要爬一个n阶的楼梯,每次都可以选择爬1阶或者2阶,问有多少种方式?示例1:n = 2总共有两种情况:①:1 + 1 = 2②:2 = 2示例2:n = 3总共有三种情况:①:1 + 1 + 1 = 3②:1 + 2 = 3③:2 + 1 = 3分析:不妨多列举几种情况,假设n = 4,此时有如下可能①:1 + 1 + 1 + 1 = 4②:1 + 1 + 2 = 4③:1 + 2 + 1 = 4④:2 + 1 + 1 = 4⑤原创 2022-04-15 17:28:26 · 192 阅读 · 0 评论 -
LeetCode另一个树的子树
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s:给定的树 t:返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。示例 2:给定的树 s:给定的树 t:返回 false。/** * Definition ...原创 2020-05-07 21:39:34 · 117 阅读 · 0 评论 -
LeetCode面试题 04.10. 检查子树
检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。示例1:输入:t1 = [1, 2, 3], t2 = [2]输出:true示例2:输入:t1 = [1, null,...原创 2020-05-05 13:13:22 · 173 阅读 · 0 评论 -
LeetCode不浪费原料的汉堡制作方案
圣诞活动预热开始啦,汉堡店推出了全新的汉堡套餐。为了避免浪费原料,请你帮他们制定合适的制作计划。给你两个整数 tomatoSlices 和 cheeseSlices,分别表示番茄片和奶酪片的数目。不同汉堡的原料搭配如下:巨无霸汉堡:4 片番茄和 1 片奶酪小皇堡:2 片番茄和 1 片奶酪请你以 [total_jumbo, total_small]([巨无霸汉堡总数,小皇堡总数])的格式返回...原创 2020-05-05 12:42:06 · 227 阅读 · 0 评论 -
LeetCode验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:示例 2:解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。/** * Definition for a bin...原创 2020-05-05 12:28:46 · 102 阅读 · 0 评论 -
LeetCode同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: false示...原创 2020-05-03 12:38:01 · 127 阅读 · 0 评论 -
LeetCode最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。class Solution {public: int maxS...原创 2020-05-03 11:59:05 · 65 阅读 · 0 评论 -
LeetCode祖父节点值为偶数的节点和
给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)如果不存在祖父节点值为偶数的节点,那么返回 0 。输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:18解释:图中红色节点的祖父节点的值为偶数,蓝色节点为这些红色节点的祖父节点。提示:树中...原创 2020-04-29 10:42:54 · 192 阅读 · 0 评论 -
LeetCode合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6#include <iostream>#include <windows.h>#include <...原创 2020-04-26 16:50:00 · 84 阅读 · 0 评论 -
LeetCode跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达...原创 2020-04-17 19:36:57 · 81 阅读 · 0 评论 -
LeetCode最小差值 I
给你一个整数数组 A,对于每个整数 A[i],我们可以选择处于区间 [-K, K] 中的任意数 x ,将 x 与 A[i] 相加,结果存入 A[i] 。在此过程之后,我们得到一些数组 B。返回 B 的最大值和 B 的最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], K = 2输出:6解释...原创 2020-04-06 13:39:48 · 199 阅读 · 0 评论 -
LeetCode编辑距离
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:1、插入一个字符2、删除一个字符3、替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose...原创 2020-04-06 13:20:06 · 104 阅读 · 0 评论 -
LeetCode面试题58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”限制...原创 2020-04-06 12:08:11 · 78 阅读 · 0 评论 -
LeetCode车的可用捕获量
在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外,车不能与其他...原创 2020-03-26 14:07:41 · 108 阅读 · 0 评论 -
LeetCode三维形体的表面积
在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1,1],[1,0,...原创 2020-03-25 13:46:48 · 81 阅读 · 0 评论 -
LeetCode面试题 01.02. 判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = “abc”, s2 = “bca”输出: true示例 2:输入: s1 = “abc”, s2 = “bad”输出: false#include <iostream>#include <string>#include &l...原创 2020-03-24 13:07:48 · 211 阅读 · 0 评论 -
LeetCode面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = “leetcode”输出: false示例 2:输入: s = “abc”输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。#include <iostream>#include <algorithm>usi...原创 2020-03-22 21:34:11 · 142 阅读 · 0 评论 -
LeetCode寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)...原创 2020-03-21 16:29:38 · 76 阅读 · 0 评论 -
LeetCode无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...原创 2020-03-19 14:41:49 · 61 阅读 · 0 评论 -
LeetCode两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2020-03-16 23:08:54 · 59 阅读 · 0 评论 -
LeetCode两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]class Solut...原创 2020-03-14 12:30:16 · 56 阅读 · 0 评论