力扣
文章平均质量分 56
乔卿
寻找灵感而不是寻找答案。
展开
-
力扣LeetCode:32. 最长有效括号(Python)(详细题解)
给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。原创 2022-12-06 14:48:34 · 875 阅读 · 1 评论 -
力扣LeetCode:31. 下一个排列(Python、Java)(详细题解)
给你一个整数数组 nums ,找出 nums 的下一个排列。原创 2022-05-06 10:15:52 · 302 阅读 · 0 评论 -
力扣Leetcode:23. 合并K个升序链表(Python,优先队列)
优先队列是一种基于二叉堆实现的数据结构,本质上是最大堆或最小堆。本文通过优先队列的方法,实现K个有序链表的合并。原创 2022-05-03 10:10:59 · 415 阅读 · 0 评论 -
力扣Leetcode:23. 合并K个升序链表(Python,分治)
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。原创 2022-05-02 21:40:46 · 490 阅读 · 0 评论 -
力扣LeetCode:22. 括号生成(Python、Java)
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。原创 2022-04-30 11:09:43 · 368 阅读 · 0 评论 -
力扣LeetCode:21. 合并两个有序链表(Python、Java)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2022-04-29 15:12:54 · 1674 阅读 · 0 评论 -
力扣LeetCode:20. 有效的括号(Python、 Java)
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。原创 2022-04-28 19:27:20 · 1490 阅读 · 0 评论 -
力扣LeetCode:19. 删除链表的倒数第 N 个结点(Python)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。原创 2022-04-28 18:08:08 · 306 阅读 · 0 评论 -
力扣Leetcode:17. 电话号码的字母组合(Python)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。原创 2022-04-28 00:32:40 · 1111 阅读 · 0 评论 -
力扣Leetcode:15. 三数之和(Python)
题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。题解我们可以很自然地想到通过三重循环遍历,那么时间复杂度达到O(N3)。但有一个问题没办法解决——没法判断是否是重复的三元组。这一问题不能通过简单的去重解决,因为一个三元组中允许出现相同的元素,比如[-1,-1,2]。对于三重循环,什么时候会得到重复的三元组呢?当枚举的前两个数不变时,那么原创 2022-04-25 21:30:16 · 928 阅读 · 2 评论 -
力扣Leetcode:11. 盛最多水的容器(Python、Java)
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。原创 2022-04-25 15:43:16 · 244 阅读 · 0 评论 -
力扣Leetcode:10. 正则表达式匹配(Python)
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。原创 2022-04-14 20:45:56 · 1285 阅读 · 0 评论 -
力扣Leetcode:5. 最长回文子串(Python)
题目描述给你一个字符串 s,找到 s 中最长的回文子串。题解:动态规划这是一道很经典的题目。首先我想到了动态规划算法:对于子串s[i…j],它为回文子串的条件为:s[i+1 … j-1]为回文子串,且s[i]==s[j]。想到这里,状态转移方程就已经显然易见了。那么初始状态呢?我们的状态转移方程是从短的子串向长的子串转移的,因此外循环应该是子串长度。当子串长度为1,也就是只有一个字符时,显然为回文子串,这就是初始状态。由于要返回最长的回文子串(SJ),因此需要记录一下。该算法的时间复杂度为O(原创 2022-04-09 22:44:37 · 1432 阅读 · 0 评论 -
力扣Leetcode:4. 寻找两个正序数组的中位数(Python)
题目描述给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。题解由于时间复杂度要求,所以要用二分查找(看到log与有序数组,所以必然是二分)、且不要考虑合并两个有序数组为一个数组(只要合并了,复杂度至少是O(m+n))。一个直观的思路是,将该问题转换为求第k大的数的问题。但由于这儿有两个有序数组A与B,因此我们首先比较A[k/2]与B[k - k/2 - 1]这两个元素的大原创 2022-04-08 16:30:49 · 1225 阅读 · 0 评论 -
力扣Leetcode:2. 两数相加(C++、Python、Java)
题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。题解这道题目比较简单,从前到后遍历两个链表,对应位置上的数字相加,同时注意进位即可。具体地:当前位置相加后的结果需要取余10。当前位置不仅要加两个数,还要加上前一步的进位值。若当前位置相加后大于10,要向后进位。可能最后计算出的结果会多出来一位。这里原创 2022-04-08 10:40:54 · 204 阅读 · 0 评论 -
力扣Leetcode:1. 两数之和(C++、Python、Java)
题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。题解用空间换时间,使用一个字典,键为元素值,值为元素下标。遍历数组中的所有元素,对于nums[i],只需要检查字典中是否存在target-nmums[i]即可。以下分别使用了C++、Python、Java实现了这一算法,主要在于不同语言对于map的原创 2022-04-02 16:13:04 · 1636 阅读 · 1 评论 -
力扣Leetcode:45. 跳跃游戏 II(Python)
题目链接https://leetcode-cn.com/problems/jump-game-ii/题目描述给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。思路在前一篇文章中实现了动态规划算法。若数组长度为N,数组元素平均大小为M,则时间复杂度为O(MN)。下面我们将该算法优化至O(N),即仅遍历一遍。使用贪心思想,在当前位置向后跳时,选原创 2022-03-29 15:58:33 · 3634 阅读 · 0 评论 -
力扣Leetcode:3. 无重复字符的最长子串(C++、Python)
题目链接https://leetcode-cn.com/problems/jump-game-ii/题目描述给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。思路使用递推的方法,充分利用之前的结论,避免重复计算,可以在最大程度上降低时间复杂度。具体地,我们先以第一个位置为起点,向后查找最长的符合要求的子串[0…i]。那么接下来如何由这一结论原创 2022-03-26 22:20:51 · 1292 阅读 · 0 评论 -
力扣Leetcode:45. 跳跃游戏 II(C++)
题目链接https://leetcode-cn.com/problems/jump-game-ii/题目描述给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。思路动态规划,dp[i]代表以到达数组i位置时的最少跳跃次数。初始:dp[i]=0 if i==0 else ∞状态转移:从位置i出发若能最多走j步,那么根据dp[i]的值可以更新原创 2022-03-26 22:01:38 · 4997 阅读 · 0 评论