算法刷题
EM-FF
这个作者很懒,什么都没留下…
展开
-
最小生成树Kruskal算法
kruskal最小生成树算法原创 2023-12-30 16:13:54 · 321 阅读 · 0 评论 -
每日练习:1.增减字符串匹配 2.寻找数组中心索引
/* 由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中: 如果 perm[i] < perm[i + 1] ,那么 s[i] == 'I' 如果 perm[i] > perm[i + 1] ,那么 s[i] == 'D' 给定一个字符串 s ,重构排列 perm 并返回它 输入:s = "IDID" 输出:[0,4,1,3,2] */ //简单贪心算法,每次遇到'I',就取0-n中的最小值, //遇到'D'就.原创 2022-05-09 17:53:30 · 66 阅读 · 0 评论 -
剑指 Offer 47. 礼物的最大价值-动态规划
起点:矩阵左上角 终点:矩阵右下角 只能向下或向右,求礼物总价值最大的路径 状态定义:dp[i][j]表示从矩阵左上角开始,到(i,j)时拿到的礼物最大累计价值 转移方程: i = 0,j = 0,起始元素 i = 0,j != 0,为矩阵第一行元素,只能向右移动dp[i][j] = dp[i][j-1] + grid[i][j] i != 0,j = 0,为矩阵第一列元素,只能向下移动dp[i][j] = dp[i-1][j] + grid[i][j] i != 0,j != 0,可向下向右 dp[原创 2022-03-22 13:48:26 · 170 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
经典动态规划题---连续子数组的最大值,通过求每一个元素的最大前缀和,来解决原创 2022-03-21 21:18:15 · 55 阅读 · 0 评论 -
剑指 Offer 19 正则表达式匹配-动态规划
动态规划-正则表达式匹配-java原创 2022-03-19 23:47:47 · 272 阅读 · 0 评论 -
leetcode 393. UTF-8 编码验证
题目出自leetcode class Solution { public boolean validUtf8(int[] data) { int n = data.length; for(int i = 0;i < n;){ int t = data[i],j = 7; while(j >= 0 && (((t >> 7) & 1) == 1))j--;//统计左边有多原创 2022-03-13 15:57:15 · 6009 阅读 · 0 评论 -
剑指 Offer 59 - I. 滑动窗口的最大值 双队列
题目来自leetcode class Solution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int>res; if(nums.size()==0||k==0){ return res; } deque<int>dq; for(in原创 2022-03-04 10:58:44 · 201 阅读 · 0 评论 -
剑指 Offer 59 - II. 队列的最大值 队列-双队列
题目来自leetcode class MaxQueue { public: queue<int>que; deque<int>deq; MaxQueue() { } int max_value() { return deq.empty() ? -1:deq.front(); } void push_back(int value) { while(!deq.empty()&a原创 2022-03-03 20:39:08 · 56 阅读 · 0 评论 -
leetcode6010二分法
用二分的方法找到最短天数,这样需要设置右边界。因为time[i],totalTrips<=107,极限条件为time里只有一个数据(一辆车),而totalTrips为107,这样有边界就得为10**14. 然后就是二分查找的方式,逐渐缩小范围。 class Solution { public: long long minimumTime(vector<int>& time, int totalTrips) { long long l = 1 , r = ..原创 2022-02-27 15:51:44 · 51 阅读 · 0 评论 -
leetcode2016-前缀最小值
题目来源leetcode class Solution { public: int maximumDifference(vector<int>& nums) { int ans=-1; int premin=nums[0]; for (int i=1;i<nums.size();i++){ if (nums[i]>premin){ ans=max(ans,nums原创 2022-02-26 10:52:45 · 416 阅读 · 0 评论 -
leetcode 537 py 中map函数用法
题目出自leetcode class Solution: def complexNumberMultiply(self, num1: str, num2: str) -> str: #(a0+b0i)*(a1+b1i)=a0*a1-b0*b1+(a0*b1+b0*a1)i a0,b0=map(int,num1[:-1].split("+")) a1,b1=map(int,num2[:-1].split("+")) return "原创 2022-02-25 10:36:19 · 7321 阅读 · 0 评论