leetcode
文章平均质量分 73
Arthur‘s King
这个作者很懒,什么都没留下…
展开
-
算法备忘录~二分法搜索旋转排序数组的元素
题目:81. 搜索旋转排序数组 II已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4原创 2021-08-27 11:00:03 · 158 阅读 · 0 评论 -
算法备忘录~翻转单词顺序
题目:剑指 Offer 58 - I. 翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,...原创 2021-08-23 11:09:23 · 198 阅读 · 0 评论 -
算法备忘录~滑动窗口求解和为s的连续正数序列
题目:剑指 Offer 57 - II. 和为s的连续正数序列输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target <= 10^5思路:滑动窗口滑动窗转载 2021-08-22 21:45:29 · 108 阅读 · 0 评论 -
算法备忘录~求最大公约数和最小公倍数
题目: 给定两个数,求两者的最大公约数和最小公倍数示例:思路: 对于最大公约数的求解有多种方法,这里仅提出一种,以下部分图文参考了chen_zan_yu_大佬的求最大公约数的三种方法中的辗转相除法,仅作为学习使用 对于最小公倍数,它与最大公约数的乘机为所求数之积。即x*y=最小公倍数*最大公约数 因此,题目转化为只要求解出最大公约数,即可求解出最小公倍数辗转相除法:#include <iostre...原创 2021-08-19 21:51:13 · 1405 阅读 · 0 评论 -
算法备忘录~判断是否为素数
题目: 编写一个函数,判断一个数是否为素数,并返回结果素数定义:(质数prime number)定义为在大于1的自然数中,除了1和它本身以外不再有其他因数,素数有无穷多个。思路1: 用目标数依次对从2 ~ n-1遍历的每个数作取余操作(注意不包括1和其本身),如果取余结果为零,说明存在其他的因数,返回false思路1代码实现:时间复杂度 O(n)int isPrime(int k){ int j; for ( j=...原创 2021-08-19 21:22:32 · 200 阅读 · 0 评论 -
算法备忘录~计数排序
01 计数排序算法概念计数排序不是一个比较排序算法,该算法于1954年由 Harold H. Seward提出,通过计数将时间复杂度降到了O(N)。02 基础版算法步骤第一步:找出原数组中元素值最大的,记为max。第二步:创建一个新数组count,其长度是max加1,其元素默认值都为0。第三步:遍历原数组中的元素,以原数组中的元素作为count数组的索引,以原数组中的元素出现次数作为count数组的元素值。第四步:创建结果数组result,起始索引index。第五步:遍历co.转载 2021-08-15 18:46:55 · 137 阅读 · 0 评论 -
算法备忘录~单调栈解决接雨水和柱状图最大矩形两大问题
单调栈:单调栈中存放的数据是有序的,可分为单调递增栈和单调递减栈单调递增栈:单调递增栈就是从栈底到栈顶数据是从大到小 单调递减栈:单调递减栈就是从栈底到栈顶数据是从小到大典型应用1:接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情原创 2021-08-14 18:51:21 · 138 阅读 · 0 评论 -
算法备忘录~接雨水(动态规划)
题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5] 输出:9思路1:动态规划1、沿Y轴按列计算,这样宽度为1,求面积只需要求原创 2021-08-13 14:13:34 · 311 阅读 · 0 评论 -
算法备忘录~计算二进制中1的个数
题目编写一个函数,输入是一个有符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 '1'。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 000000000000000000000000.原创 2021-08-12 18:23:29 · 170 阅读 · 0 评论 -
算法备忘录~顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix =[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <=..原创 2021-08-10 15:28:07 · 61 阅读 · 0 评论 -
算法备忘录~栈和队列的相互实现
1、两个栈实现一个队列思路: 一个栈作为输入栈,一个栈作为输出栈,入队的时候压进输入栈,出队的时候要颠倒一下顺序,因此判断输出栈是否为空,为空的话就先把输入栈的数据弹出压进输出栈,然后从输出栈弹出数据,即为先进先出的顺序。代码实现:class MyQueue {public: stack<int> stIn; stack<int> stOut; /** Initialize your data structure here...原创 2021-08-08 09:54:37 · 105 阅读 · 0 评论 -
算法备忘录~双指针找环入口
第142题.环形链表II题意:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。「说明」:不允许修改给定的链表。思路这道题目,不仅考察对链表的操作,而且还需要一些数学运算。主要考察两知识点: 判断链表是否环 如果有环,如何找到这个环的入口 判断链表是否有环可以使用快慢指针法, 分别定义 ..转载 2021-08-07 11:20:05 · 284 阅读 · 0 评论 -
算法备忘录~双指针逆序移除元素(接近满分)
27. 移除元素给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也...原创 2021-08-07 10:34:39 · 118 阅读 · 0 评论