leetcode
整理leetcode刷题集,目前主要练习python
Bryce1010_贤哉回也
github: https://github.com/Bryce1010
\n
e-mail: bryceyx@gmail.com
展开
-
【Leetcode】机器人到达指定位置方法数 (动态规划)
Foreword原版是 https://www.notion.so/bryce1010/2b4b9e98bb34422084d3cf3f84534df3,原版查看体验更佳。Resources《程序员代码面试指南》《OI wiki dp部分》《labuladong动态规划详解》题目假设有排成一行的N个位置,记为1~N,N一定大于等于2.开始时机器人在其中的M位置上,机器人可以往左走,也可以往右走,如果机器人来到1位置,那么下一步只能往右来到2位置;如果机器人来到N位置,那么下一步只能往左来到原创 2020-12-01 17:00:45 · 951 阅读 · 0 评论 -
【Leetcode】换钱的方法数(暴力递归,动态规划,记忆化搜搜,路径压缩)
题目给定数组arr,arr中所有的值都是整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim,代表要找的钱数,求换钱有多少种方法数?分析这一题也是递归搜索的套路题,复习 机器人到达指定位置方法数首先可以通过递归搜索得到递归解法,复杂度比较大;其次通过记忆化搜索和动态规划进行优化;最后动态规划还能继续优化。解法1 暴力递归每张面值尝试不同的张数,如果arr=[5,10,25,1],aim=1000分析过程如下:用0张5元的货币,[10,25,1]组成剩原创 2020-12-04 15:11:35 · 494 阅读 · 0 评论 -
【Leetcode】打气球的最大分数 (暴力递归+动态规划)
题目给定一个数组arr,代表一排有分数的气球。没打爆一个气球都能获得分数,假设打爆气球的分数为X,获得分数的规则如下:如果被打爆气球的左边有没有被打爆的气球,找到离被打爆气球最近的气球,假设分数为L;如果被打爆气球的右边有没被打爆的气球,找到离被打爆气球最近的气球,假设位数为R,那么获得分数为LRX。如果被打爆气球的左边有没有被打爆的气球,找到离被打爆气球最近的气球,假设分数为L;右边没有没被打爆的气球,那么获得分为为L*R。如果被打爆气球左边没有没被打爆的气球,如果被打爆气球的右边有没被打爆的气原创 2020-12-05 19:26:38 · 819 阅读 · 0 评论 -
【Leetcode】最长递增子序列(动态规划 + 二分搜索)
题目给定数组arr,返回arr的最长递增子序列举例:arr = [2,1,5,3,6,4,8,9,7],返回的最长递增子序列为[1,3,4,8,9]要求:如果arr的长度为N,请实现时间复杂度为O(nlogn)的方法。分析这一题也是经典的动态规划,那么常规的动态规划时间复杂度为O(n^2);如果加入二分的话,可以将动态规划优化到O(nlogn)。解法1 O(n^2)的动态规划了解题目以后,状态为数组的当前位置i就能决定返回值,那么dp[i]表示arr[0…i]的最长递增子序列dp[i] =原创 2020-12-06 14:14:48 · 6539 阅读 · 1 评论 -
(二分 难题)Leetcode 4. 寻找两个有序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [...原创 2019-12-04 16:16:10 · 173 阅读 · 0 评论