![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法刷题
文章平均质量分 68
mhuang..
这个作者很懒,什么都没留下…
展开
-
python刷题-二分法小总结
二分法要求:二分查找的对象必须是有序的(单调)时间复杂度:查找的时间复杂度为logN(所以适用于数据规模比较大的情况)二分查找的内部查找顺序:(直接查找目标值or和左右侧逼近值(包括目标值))"""第一种二分查找法,查找到目标值即返回,向目标值逼近的方向是不确定的,因为left和right都可以移动"""def binary_1(left, right, target): while left < right: mid = (left+right) &..原创 2022-03-08 17:52:48 · 600 阅读 · 0 评论 -
python刷题-单调栈
力扣https://leetcode-cn.com/problems/sum-of-subarray-ranges/暴力法:遍历每个序列的最大值最小值,时间复杂度为o(n2)class Solution: def subArrayRanges(self, nums: List[int]) -> int: dp = 0 for i in range(1, len(nums)): dpmin = nums[i]原创 2022-03-04 13:43:54 · 168 阅读 · 0 评论 -
python刷题-dfs回朔经典习题(全局变量,bool类型加减运算)
最多1601. 最多可达成的换楼请求数目心得:这道dfs题是对所有情况遍历然后取满足情况的解,而我当时之所以死磕这题半天没磕出来,是因为一直想去控制搜索的方向,在遍历的过程中去给遍历限制条件。这其实也就对应着解dfs题的两种思路,一种是从整体出发“全扫描”最后去筛选结果,一种则是在遍历的时候有选择性的去遍历(像下面的解数独和N皇后问题都是这种思路), 而这道题如果也用这种思路去想的话,虽然可以找到符合题意的特解,就很难去找所有情况中的最优解(因为找到特解后不好控制让他重新回朔遍历找最优解),所以找特解的原创 2022-03-02 12:11:10 · 898 阅读 · 0 评论 -
python刷题-单链表
题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。力扣class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next# 个人题解:双指针class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: ..原创 2022-02-26 00:57:30 · 620 阅读 · 0 评论 -
Python刷题-最长回文子串(dp)
解法一:双指针遍历(从外向内)思路:从最大子串(自身)开始遍历,逐渐缩小子串长度(右边界right向左移),对于每一个长度要注意遍历该长度下的所有子串代码:class Solution_double: def longestPalindrome(self, s: str) -> str: def judge(i, j) -> bool: while i < j: if s[i] != s[j]:...原创 2022-02-26 00:07:43 · 583 阅读 · 0 评论 -
python刷题-位运算,对zip(*__)的小应用
1.利用异或运算简化奇偶性判断540. 有序数组中的单一元素给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10提示:1 <= nums原创 2022-02-15 22:01:30 · 547 阅读 · 0 评论 -
python刷题-dfs & bfs
1.通过dfs或bfs遍历一个二维数组1020. 飞地的数量给你一个大小为m x n的二进制矩阵grid,其中0表示一个海洋单元格、1表示一个陆地单元格。一次移动是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过grid的边界。返回网格中无法在任意次数的移动中离开网格边界的陆地单元格的数量。示例 1:输入:grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]输出:3解释:有三个 1...原创 2022-02-15 21:47:21 · 574 阅读 · 0 评论 -
python刷题-dp(最大正方形)+最大公约数问题
目录1.最简分数(公约数问题)2.最大正方形3.最小路径和4. 杨辉三角官方题解:(学学滚动数组的用法)1.最简分数(公约数问题)1447. 最简分数给你一个整数n,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于n的最简分数。分数可以以任意顺序返回。示例 1:输入:n = 2输出:["1/2"]解释:"1/2" 是唯一一个分母小于等于 2 的最简分数。示例 2:输入:n = 3输出:["1/2...原创 2022-02-10 23:58:08 · 797 阅读 · 0 评论 -
python刷题-动态规划
目录一、动态规划题型1.计数问题3.求存在性二、动态规划的组成部分☆以一道题为例:小结一、动态规划题型1.计数问题-有多少种方式走到右下角-有多少种方法选出k个数使得和为sumhttps://leetcode-cn.com/problems/unique-paths/2.求最大最小值-从左上角走到右下角路径的最大数字和-最长上升子序列长度https://leetcode-cn.com/problems/maximum-product-s原创 2022-02-09 23:48:19 · 199 阅读 · 0 评论 -
python刷题-日常刷题
1.题目:唯一的元素和https://leetcode-cn.com/problems/sum-of-unique-elements/https://leetcode-cn.com/problems/sum-of-unique-elements/题解:(注意列表等数据结构的深拷贝问题)class Solution: def sumOfUnique(self, nums: List[int]) -> int: a = set(nums) b = a.co原创 2022-02-07 23:40:04 · 906 阅读 · 0 评论 -
python刷题--N数之和问题(双指针+剪枝)
1.两数之和(双指针)这题前面已经做过,当时是用哈希表做的,时间复杂度为N但如果换一种思路,用今天学的双指针来做,虽然在时间复杂度上不降反增(排序的复杂度为NlogN)但理解起来十分简单清晰。思路:即先排序,得到一个有序的列表,一个指针指向列表开头,一个指向末尾。...原创 2022-02-03 23:22:44 · 1544 阅读 · 0 评论 -
python刷题—日常刷题
1.题目https://leetcode-cn.com/problems/add-two-numbers/2.个人题解# 第一次完美提交,和官方答案思路一样,记录下class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nextclass Solution: def addTwoNumbers(self, l1, l2) :原创 2022-02-01 21:09:10 · 1487 阅读 · 0 评论 -
python刷题-寻找有序数组的中位数(二分查找)(重点)
1.题目给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3...原创 2022-02-01 21:04:34 · 432 阅读 · 0 评论 -
python刷题-双指针滑动窗口解决重复遍历的问题
1.题目:无重复的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注...原创 2022-02-01 20:11:09 · 162 阅读 · 0 评论 -
python刷题-检测正方形(哈希表法)+collections模块+sorted()
1、题目给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点,并会视作不同的点进行处理。给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 面积为正 的 轴对齐正方形 ,统计 满足该要求的方案数目。轴对齐正方形 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。实现 DetectSquares 类:DetectSquares() 使用空数据结构初始原创 2022-01-26 18:58:06 · 1353 阅读 · 0 评论 -
python刷题-母牛问题(递归)
1.题目题目描述有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。输出对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。样例输入复制2450样例输出复制246https://www.dotcpp.com原创 2022-01-26 00:28:43 · 3441 阅读 · 0 评论 -
python刷题-n皇后(回朔法递归)
1.题目n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两个不同的解法...原创 2022-01-24 21:24:41 · 1373 阅读 · 0 评论