![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 64
LeetCode解题相关代码
流浪德意志
千里之行始于足下!
展开
-
经典算法:双指针(左右边界问题)
问题描述给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数数据范围:1000≤n≤1000,0≤k≤100,数组中每个元素的值满足0≤val≤100要求:空间复杂度O(1),时间复杂度O(logn)原题链接:数字在升序数组中出现的次数_牛客题霸_牛客网思路充分利用题目条件:有序数组,这样的双指针就可以用了,算法复杂度;如果暴力算法的话:时间复杂度O(n)针对本问题:需要分别找到左右边界left right,双指针法;元素数量就是r...原创 2021-12-08 13:02:57 · 785 阅读 · 0 评论 -
经典算法:矩阵顺时针旋转
问题描述有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。数据范围:0<n<300,矩阵中的值满足 0≤val≤1000要求:空间复杂度,时间复杂度进阶:空间复杂度O(1),时间复杂度思路一:研究旋转时元素的变化关系:比如原来位置为[0,1],顺时针旋转后位置为[1,n-1];可以观察到元素的列j变成了下一个位置的行j,列值变为n-1-i;那么我们只需要索引矩阵的一角,逐次替换...原创 2021-12-08 11:37:18 · 1394 阅读 · 0 评论 -
LeetCode 1034:边界着色
问题描述:给你一个大小为m x n的整数矩阵grid,表示一个网格。另给你三个整数row、col和color。网格中的每个值表示该位置处的网格块的颜色。将给定单元格[row,col]的联通区域的边界着色成color;思路:DFS从给定单元格开始遍历,记录visited从上下左右四个方向开始扩展,如果出界或者值不是原有颜色则是边界存到boarders中;只要任意方向满足条件那么当前单元格就是边界,存起来;最后统一处理进行着色;代码:class Solutio...原创 2021-12-07 13:56:33 · 640 阅读 · 0 评论 -
LeetCode 372: 超级次方(欧拉降幂)
问题描述:你的任务是计算ab对1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入:a = 2, b = [3]输出:8示例 2:输入:a = 2, b = [1,0]输出:1024示例 3:输入:a = 1, b = [4,3,3,8,5,2]输出:1示例 4:输入:a = 2147483647, b = [2,0,0]输出:1198提示:1 <= a <= 2^31 - 11 <= b.len...原创 2021-12-05 22:45:50 · 1014 阅读 · 0 评论 -
经典算法题:丢棋子问题或者丢玻璃球问题
问题描述一座大楼有 n+1 层,地面算作第0层,最高的一层为第 n 层。已知棋子从第0层掉落肯定不会摔碎,从第 i 层掉落可能会摔碎,也可能不会摔碎。给定整数 n 作为楼层数,再给定整数 k 作为棋子数,返回如果想找到棋子不会摔碎的最高层数,即使在最差的情况下扔的最小次数。一次只能扔一个棋子。数据范围:1 \le i \le n ,k \le 10^61≤i≤n,k≤106要求:空间复杂度O(k)O(k),时间复杂度O(km)O(km)(m是最终返回的结果)示例1输入:10,1...原创 2021-12-04 23:45:07 · 1230 阅读 · 0 评论 -
LeetCode 786:第K个最小的素数分数
给你一个按递增顺序排序的数组 arr 和一个整数 k 。数组 arr 由 1 和若干 素数组成,且其中所有整数互不相同。对于每对满足 0 < i < j < arr.length 的 i 和 j ,可以得到分数 arr[i] / arr[j] 。那么第k个最小的分数是多少呢?以长度为 2 的整数数组返回你的答案, 这里answer[0] == arr[i]且answer[1] == arr[j] 。示例 1:输入:arr = [1,2,3,5], k ...原创 2021-11-30 16:03:46 · 200 阅读 · 0 评论 -
经典算法题:大数乘法之乘法累加算法 Karatsuba算法(远远超出long long范围)
问题:超过100位数字的整数的乘法,无法直接调用*运算例如:求 1234567891011121314151617181920 * 2019181716151413121110987654321 的乘积结果需要转化成数组问题或者字符串问题求解,答案也用数组表示;思路有两种:乘法累加法:输入数组num1 num2,注意要颠倒顺序 因为要从低位往高位处理(当然也可以不处理);第i位数字与第j位数字相乘的结果 应保存到arr(i+j)位; ...原创 2021-11-29 15:00:04 · 2195 阅读 · 2 评论 -
经典算法题:全错位排列问题
问题描述这是一个很经典的数学问题:有一个人写了n封信件,对应n个信封,然而粗心的秘书却把所有信件都装错了信封,那么一共有多少种装错的装法?数学抽象这个问题可抽象为以下一个数学问题:已知一个长度为n的有序序列{a1,a2,a3,…,an},打乱其顺序,使得每一个元素都不在原位置上,则一共可以产生多少种新的排列?例如:原序列为{a,b,c,d,e},则新序列{b,c,d,e,a}为其一个全错位排列,新序列中每一个元素都不在原来的位置上。问题解决首先考虑几种简单的情况:原序列长度为1序列中只原创 2021-11-28 17:03:47 · 2345 阅读 · 0 评论 -
卡特兰数Catalan等价问题:进出栈次序 身高排两排
问题1:n个自然数1~n进栈(栈无穷大),任何一个数进栈的同时可以选择出栈,比如第一个数进栈完毕,下一个动作可以选择出栈或后一个数进栈,进栈次序为1、2、3……n,问不同的出栈次序有几种?问题2:12 个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?问题3:n个1和n个0组成一个2n位的2进制数,要求从左到右扫描,1的累计数不小于0的累计数,试求满足这条件的数有多少?思路进栈看作1,出栈看作0,由于在任何时候进栈累计数都不会小原创 2021-11-28 16:47:18 · 365 阅读 · 0 评论 -
Leetcode.406 经典算法题:根据身高重建队列
假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。示例 1:输入:people = [[7,0],[4,.原创 2021-11-28 16:11:08 · 113 阅读 · 0 评论 -
经典算法题:选择客栈问题
丽江河边有 n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号。每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示) ,且每家客栈都设有一家咖啡店,每家咖啡店均有各自的最低消费。两位游客一起去丽江旅游,他们喜欢相同的色调,又想尝试两个不同的客栈,因此决定分别住在色调相同的两家客栈中。晚上,他们打算选择一家咖啡店喝咖啡,要求咖啡店位于两人住的两家客栈之间(包括他们住的客栈) ,且咖啡.原创 2021-11-27 23:31:08 · 716 阅读 · 0 评论 -
Leetcode之KMP字符串算法
针对题目28题 实现strStr()功能找出needle在haystack字符串的第一个位置 否则返回-1当然有暴力法,但是时间复杂度是O(mn)而KMP算法提前计算出needle字符串的重复数据加以利用,j能够有效的回退到可能的位置,时间复杂度是O(m+n)int strStr(string haystack, string needle) { int n = haystack.size(), m = needle.size(); if(m == 0) ret原创 2021-07-23 10:51:21 · 146 阅读 · 0 评论 -
LeetCode之快速幂算法
参考:https://zhuanlan.zhihu.com/p/95902286https://leetcode-cn.com/problems/climbing-stairs/solution/pa-lou-ti-by-leetcode-solution/#comment对于契科夫数列问题以及爬楼梯问题的解决办法。#include <cstdio>#define MOD 1000000007typedef long long ll;struct matrix{.原创 2021-05-27 16:23:22 · 135 阅读 · 0 评论 -
LeetCode之最长公共子序列问题LCS解决方法
Leetcode官网解答 使用动态规划原理,请参考原文地址:https://leetcode-cn.com/problems/longest-common-subsequence/solution/zui-chang-gong-gong-zi-xu-lie-by-leetcod-y7u0/图片来源官网解答:那么问题来了,如何实现输出答案字符串呢?下面是我的思路;使用queue用来存储中间数据(字符串及下一次的ID),相当于BFS遍历。从最后一个网格倒叙进行解答,查询字符是否一致,原创 2021-05-24 08:52:54 · 277 阅读 · 0 评论