力扣刷题
文章平均质量分 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 · 251 阅读 · 0 评论 -
力扣中的双指针
题目一:26. 删除有序数组中的重复项给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外原创 2022-03-25 23:06:09 · 114 阅读 · 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 · 408 阅读 · 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 · 116 阅读 · 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 · 201 阅读 · 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 · 512 阅读 · 0 评论
分享