LeetCode
文章平均质量分 84
精致又勤奋的码农
网络安全小白
展开
-
【leetcode】leetcode40组合总和II的解题思路和具体实现
写在前面坚持每天刷1-2道leetcode题目,保持手感,为以后找工作打基础。今天遇到了一道leetcode题目,觉得其中的一个去重的思路十分巧妙,十分值得学习,所以记录下来。题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10原创 2021-03-18 11:33:38 · 142 阅读 · 0 评论 -
【蛇形遍历二叉树】leetcode103代码和解题思路
题目描述给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]通过的代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * Tree原创 2020-12-16 16:10:50 · 465 阅读 · 0 评论 -
【贪心算法】leetcode55跳跃游戏贪心算法和动态规划
题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。通过的代码一原创 2020-12-14 21:34:20 · 157 阅读 · 0 评论 -
【滑动窗口+哈希表】Leetcode 3无重复字符的最长子串
题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子原创 2020-12-13 19:01:06 · 165 阅读 · 0 评论 -
【leetcode】leetcode95不同的二叉搜索树 II
题目描述给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。示例:输入:3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ 3 2 1 1 3 2原创 2020-11-06 19:52:41 · 59 阅读 · 0 评论 -
【单调栈】leetcode84矩形最大面积和leetcode42接雨水的详细图解过程(包含对于单调栈的通俗图解,很直观)
题目描述给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10通过的代码class Solution {public: int largestRectangleArea(vector<int原创 2020-10-24 09:58:10 · 275 阅读 · 0 评论 -
【leetcode】leetcode160相交链表
题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [原创 2020-10-21 17:26:44 · 92 阅读 · 0 评论 -
【leetcode】leetcode86分隔链表通过的代码及解题思路
题目描述给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5通过的代码/** * Definition for singly-linked list. * struct ListNode { * int val;原创 2020-10-21 16:20:58 · 91 阅读 · 0 评论 -
leetcode234. 回文链表的通过代码及详细解题思路(附上自己思考过程和理解)
题目描述请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?通过的代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)原创 2020-10-20 11:29:49 · 129 阅读 · 0 评论 -
leetcode206. 反转链表的递归版本以及迭代版本
题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?通过的代码迭代版本:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNo原创 2020-10-10 20:38:44 · 92 阅读 · 0 评论 -
【leetcode】leetcode32最长有效括号通过代码及题解
题目描述给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”通过的代码第一次写的代码:class Solution {public: int longestValidParentheses(string s) { if(s.size()==0) return 0;原创 2020-10-10 18:32:27 · 95 阅读 · 0 评论 -
【leetcode】leetcode22括号生成通过代码及题解
题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]通过的代码我的代码:class Solution {public: int left_n; int right_n; stack<char> input; vector<char> per_compose;原创 2020-10-04 10:17:42 · 175 阅读 · 0 评论 -
【leetcode】leetcode 695题目通过代码及题解(bfs版本)
题目描述给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)通过的代码class Solution {public: int vis[52][52]; struct node{ int x; in原创 2020-10-02 11:46:17 · 870 阅读 · 0 评论 -
【leetcode】leetcode415题目代码记录
题目描述给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。提示:num1 和num2 的长度都小于 5100num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式通过的代码自己的代码:class Solution {public: string addStrings(string num1, string num2) { int si原创 2020-09-27 16:02:34 · 86 阅读 · 0 评论 -
【leetcode】leetcode221最大正方形的通过代码及题解
题目描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4通过的代码(1)我的代码class Solution {public: int maximalSquare(vector<vector<char>>& matrix) { int row=matrix.size(); if(row原创 2020-09-21 13:50:59 · 187 阅读 · 0 评论 -
【leetcode】leetcode162寻找峰值的代码及题目详解
题目描述峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入: nums = [1,2,1,3,5,6,4]输出: 1 或 5解释: 你的函数可以返回原创 2020-09-19 22:37:15 · 1158 阅读 · 1 评论 -
【leetcode】leetcode23. 合并K个升序链表的代码及题解
题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = []输出:[原创 2020-09-11 22:29:39 · 159 阅读 · 0 评论 -
【leetcode】leetcode190颠倒二进制位题目概念补充+非常详细的解释
题目描述颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:输入:111111111111111111原创 2020-09-02 23:07:29 · 222 阅读 · 0 评论 -
【leetcode】leetcode560.和为K的子数组的详细题解及代码
题目描述给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。通过代码class Solution {public: int subarraySum(vector<int>&原创 2020-09-02 21:06:08 · 261 阅读 · 0 评论 -
【leetcode】二叉树的几个重要的递归题目汇总附详细的解题思路
题目描述leetcode传送门给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:原创 2020-08-30 21:07:55 · 361 阅读 · 0 评论 -
【leetcode】leetcode31下一个排列的代码及解题思路
题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1解题思路这个题目没有考到什么算法,应该是考察对于vector的使用以及对题目的思考吧。只要把题目读懂,并且想清楚了,这道题目就很好做。题目我是理解了很久才懂它的原创 2020-08-29 15:39:27 · 406 阅读 · 0 评论 -
【leetcode】leetcode543二叉树的直径:题目思路及代码
一、题目描述传送门:leetcode 543给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树:1/ 2 3/ \4 5返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。二、思路这个题目其实是不难的,也是一个easy难度的题目,但是我平时对于树的题目都不是特别熟悉。尽管很多时候知道是用递归方法,但是还是不知道怎么设计递归的过程。这个题目其实就是个简单的递原创 2020-08-28 20:59:18 · 152 阅读 · 0 评论 -
【leetcode】剑指56删除链表中重复的结点和leetcode83删除排序链表中的重复元素的代码对比
一、写在前面在刷leetcode的一些常见考试题目的时候,做到leetcode83题,想起来之前自己写剑指的时候遇到过一个类似的题目,所以把这两个题目放在一起对比一下。二、leetcode83(1)题目描述(2)通过代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(原创 2020-08-22 22:39:48 · 104 阅读 · 0 评论 -
【leetcode】二分法题目记录:leetcode33和leetcode153
一、在前面最近准备了个面试,算法题考到了二分法。故而刷了leetcode上几个经典的二分法题目。这里记录两个medium难度的二分法题目。二、leetcode33(1)题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例原创 2020-08-21 17:33:34 · 183 阅读 · 0 评论 -
【leetcode】LeetCode15三数之和+LeetCode3无重复字符的最长子串
最近写了两道LeetCode题目,都是Medium题目,不难,但是我觉得两个题目的解题思路都差不多,而且我平时很少使用这种解题方法,所以放在一起。LeetCode15三数之和1 题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1,原创 2020-08-14 22:09:57 · 117 阅读 · 0 评论