![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣刷题
文章平均质量分 62
木南成长之路
记录日常学习
展开
-
力扣中的滑动窗口
题目一: 3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例: 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 思路: 窗口起始位置为start,结束位置为end,都在0,利用哈希表判断窗口内是否有重复字符,若有,则 len(窗口) != len(set(窗口)),将 start 后移一位,利用长度和 s 相同的 count 列表记录最长长度。 代码: class Solution:原创 2022-03-26 16:31:39 · 171 阅读 · 0 评论 -
力扣中的双指针
题目一: 26. 删除有序数组中的重复项 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。 将最终结果插入 nums 的前 k 个位置后返回 k 。 不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外原创 2022-03-25 23:06:09 · 92 阅读 · 0 评论 -
力扣中的动态规划问题
题目一: 剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 思路: 本质是斐波那契数列。设跳上 n 级台阶有 f(n) 种跳法。在所有跳法中,青蛙的最后一步只有两种情况: 跳上 1 级或 2 级台阶。 当为 1 级台阶: 剩 n-1 个台阶,此情况共有 f(n-1) 种跳法; 当为 2 级台阶: 剩 n-2原创 2022-03-22 17:38:51 · 359 阅读 · 0 评论 -
力扣中的二叉树
题目一: 剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 ...原创 2022-03-21 14:48:25 · 97 阅读 · 0 评论 -
力扣中的二分法
题目一: 剑指 Offer 53 - I. 在排序数组中查找数字 I 统计一个数字在排序数组中出现的次数。 示例: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 思路: 因为数组是排序过的,所以只需要找到数字的开始位置和结束位置,相减加一即可。 遍历一遍需要的时间复杂度时O(n),而利用二分法统计需要的时间复杂度为O(log(n))。 进行两次二分法,分别找出数字的结束位置后一个right和开始位置前一个left。 代码: class Solution: d原创 2022-03-20 16:46:58 · 180 阅读 · 0 评论 -
力扣中的哈希表
题目一: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 思路: 哈希表中没有重复元素,所以当某数存在于哈希表中,则该数重复 代码: class Solution: def findRepeatNumber(self, nums: List[int]) ->原创 2022-03-20 15:41:11 · 449 阅读 · 0 评论