算法
记录算法题目
weixin_43766753
个人博客 : https://qwerhuan.gitee.io 热爱编程,热爱android,欢迎交流
展开
-
快速排序算法详细图解
前言排序算法非常多,几乎每个人学的第一个排序算法都是冒泡算法,但是冒泡算法的时间复杂度是很高的,是一种效率很低的算法。而目前来说,快速排序是相对比较好的一种算法:实现难度低,时间复杂度低。但快速排序在一些情况下也可能出现退化到和冒泡算法一样的时间复杂度,所以需要读者注意一下,下面我会讲到。那么接下来就来看看这个算法。笔者才疏学浅,有不同观点欢迎评论区或私信讨论。如需转载请留言告知。另外欢迎阅读笔者的个人博客一只修仙的猿的个人博客,更精美的UI,拥有更好的阅读体验。算法思路递归算法的思路其实很简原创 2020-08-21 17:37:08 · 27443 阅读 · 3 评论 -
算法:如何判断链表是否含有环
题目:判断链表是否有环给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 :输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。来源:力扣(LeetCode)链接:htt原创 2020-06-13 17:51:57 · 294 阅读 · 0 评论 -
算法:计算每日温度
题目:每日温度请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。来源:力扣(LeetCode)原创 2020-06-12 23:59:14 · 479 阅读 · 0 评论 -
算法:把数字按规则翻译成字符串
题目:把数字翻译成字符串给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 :输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr原创 2020-06-10 00:00:11 · 517 阅读 · 0 评论 -
算法:最长连续序列
题目:最长连续序列给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-consecutive-sequence分析找到一组数的集合,我们想一下可能有的方法,动态规划?貌似没有状态转移方程可以写;滑动窗原创 2020-06-09 22:27:33 · 285 阅读 · 0 评论 -
算法:求1+2+..+n
题目:求1+2+…+n求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6限制:1 <= n <= 10000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qiu-12n-lcof分析这道题如果你有什么大胆的想法,直接做就是了(手动滑稽)。先来分析一下,首先拿到这道题,第一反应就是我们原创 2020-06-02 19:47:18 · 573 阅读 · 0 评论 -
算法:拥有最多糖果的孩子
题目:拥有最多糖果的孩子给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 :输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true] 解释:孩子 1 有原创 2020-06-01 17:34:16 · 185 阅读 · 0 评论 -
算法:判断对称二叉树
题目:判断对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3示例:输入: [2,1,5,6,2,3]输出: 10来源:力扣(LeetCode)链接:https://leetcode-cn.com原创 2020-05-31 15:10:20 · 347 阅读 · 0 评论 -
算法:柱状图中最大的矩形
题目:柱状图中最大的矩形给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-rec原创 2020-05-30 21:35:26 · 326 阅读 · 0 评论 -
算法:字符串解码
题目:字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = "3[a]2[bc]", 返回 "aaabcbc".s = "3[原创 2020-05-29 18:28:33 · 755 阅读 · 0 评论 -
算法:和可被k整除的子数组数目
题目:和可被k整除的子数组数目给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <=原创 2020-05-27 17:20:37 · 1348 阅读 · 0 评论 -
算法:删除链表节点
题目:删除链表节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.```来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-原创 2020-05-25 20:09:06 · 198 阅读 · 0 评论 -
算法:旋转单向链表
题目:旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL```来源:力扣(LeetCode)链原创 2020-05-25 18:11:49 · 364 阅读 · 0 评论 -
算法:合并k个有序链表
题目:合并k个有序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-sorted-lists分析要解决这个问题,首先要解决合并2个有序链表的方法,原创 2020-05-24 16:46:20 · 422 阅读 · 0 评论 -
算法:最小覆盖子字符串
题目:最小覆盖子字符串给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-window-substring分析这道题我到手的原创 2020-05-23 20:30:05 · 520 阅读 · 0 评论 -
算法:链表两数相加
题目:两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。链接:https://leetcode-cn.com/problems/add-two-numbers/solution/liang-shu-xiang-jia-by-leetcode/来源:力扣(LeetCode)示例:输入原创 2020-05-23 13:00:48 · 192 阅读 · 0 评论 -
算法:每个元音包含偶数次的最长字符串
题目给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’ ,在子字符串中都恰好出现了偶数次。示例 1:输入:s = "eleetminicoworoep"输出:13解释:最长子字符串是 "leetminicowor" ,它包含 e,i,o 各 2 个,以及 0 个 a,u 。示例 2:输出:5解释:最长子字符串是 "leetc" ,其中包含 2 个 e 。```示例 3:输出:6解释:这个示例中,字符串 "bcb原创 2020-05-23 00:40:40 · 654 阅读 · 0 评论 -
算法:反转单链表
题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list解答分析这道题是经典链表题目,可以用迭代和递归两种不同的思路来进行解决解答一:使用迭代思路这个方法原创 2020-05-23 00:40:04 · 211 阅读 · 0 评论 -
算法:合并两个有序的链表
题目:合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists分析这道题目有两个做法,首先第一个是迭代这是做容易想到的。不断遍历,每次取出节点数字较小的拼接起来原创 2020-05-23 00:38:52 · 402 阅读 · 0 评论