![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法题
如是雨林
熟悉java,嵌入式C语言和操作系统
展开
-
LeetCode——验证栈序列
题目:给定pushed和popped两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回true;否则,返回false。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3)...原创 2019-04-13 10:13:29 · 296 阅读 · 0 评论 -
LeetCode——存在重复元素
题目:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路:主要思路有三种...原创 2019-01-08 12:23:11 · 254 阅读 · 0 评论 -
LeetCode——合并两个有序数组【Python3】
题目:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3n...原创 2019-01-06 21:10:58 · 640 阅读 · 1 评论 -
LeetCode——加一(Plus One)
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字...原创 2018-10-25 22:50:22 · 252 阅读 · 0 评论 -
LeetCode——Length of Last Word(最后一个单词的长度)
题目:给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5思路:题目等级简单,所以思路简单,一般来说最后一个单词就是在最后一个空格之后,所以遇到空格计数重置为0,遇到字母加一。这里测试用例在末尾添加了...原创 2018-10-25 22:22:52 · 207 阅读 · 0 评论 -
LeetCode——缺失的第一个正数(First Missing Positive)(自己写的代码)
题目:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1思路:刚开始想了很久没有想出来,后面简单看了下别人的博客,发现几乎全部都是用桶排序的思想解决的,这里简单说下桶排序,就是排序一串连续的数组,然后...原创 2018-09-05 23:02:12 · 297 阅读 · 0 评论 -
LeetCode by python——全排列 II(Permutations II)
题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]思路:假如你是从开始一题一题做下来的人,这道题应该轻而易举就搞定了。首先说下,这道题和上到全排列有什么不一样:数字集中有重复数字说下我们需要注意什么:数字集是无序的 数字集含有负数接下来就是将下思...原创 2018-09-08 23:03:13 · 438 阅读 · 0 评论 -
LeetCode by python——全排列(Permutations)
题目:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路:这应该是每个程序员都应该掌握的算法题吧。基本思路就是对应一个排列来说,我们需要遍历一遍nums集合,先确定开头的数字,然后选定下一个数字,就...原创 2018-09-08 22:20:39 · 562 阅读 · 0 评论 -
LeetCode——组合总和II(Combination Sum II)
题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,...原创 2018-09-02 22:37:03 · 389 阅读 · 0 评论 -
LeetCode——丑数
题目:编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false 解释: 14 不是丑数,因为它包含了另外一个质因数 7。说明:1 是丑数。...原创 2019-01-13 22:02:43 · 133 阅读 · 0 评论 -
LeetCode——缺失数字
题目:给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?思路:如果不用线性的时间的话,那就先排序,然后一个一个看。...原创 2019-01-13 22:27:07 · 196 阅读 · 0 评论 -
LeetCode——括号的分数
给定一个平衡括号字符串S,按下述规则计算该字符串的分数:()得 1 分。 AB得A + B分,其中 A 和 B 是平衡括号字符串。 (A)得2 * A分,其中 A 是平衡括号字符串。题目:示例 1:输入: "()"输出: 1示例 2:输入: "(())"输出: 2示例3:输入: "()()"输出: 2示例4:输入: ...原创 2019-04-11 10:04:09 · 538 阅读 · 0 评论 -
LeetCode——重复的子字符串
题目:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子...原创 2019-02-24 15:27:21 · 602 阅读 · 0 评论 -
LeetCode——反转字符串中的元音字母 java
题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"说明:元音字母不包含字母"y"。思路:首先要判断字母是不是元音。然后根据判断结果来决定左边和右边是否继续前进。如果有一方不是元音,则那一方就要继续前进,而另一方就要等待对面...原创 2019-01-16 23:01:45 · 321 阅读 · 0 评论 -
LeetCode——反转字符串 java
题目:编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A"思路:很简单,就是同时从两边开始遍历,然后交换。但是在java,不要用StringBuilde字符串处理类...原创 2019-01-16 16:55:11 · 230 阅读 · 0 评论 -
LeetCode——4的幂
题目:给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。示例 1:输入: 16输出: true示例 2:输入: 5输出: false进阶:你能不使用循环或者递归来完成本题吗?思想:这里只解释进阶。不用循环的话,那肯定要做位运算了,4的幂肯定是二进制只有1个1,并且1在偶数位上,所以标志位就是0x5555 5555,但是还不...原创 2019-01-16 16:41:04 · 213 阅读 · 0 评论 -
LeetCode—— 区域和检索 - 数组不可变
题目:给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你...原创 2019-01-16 14:38:39 · 229 阅读 · 0 评论 -
LeetCode——有效的字母异位词 java
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。思路:字母异位词根据题目意思就是字符串大小要相等,并且字母的数...原创 2019-01-09 12:05:37 · 362 阅读 · 0 评论 -
LeetCode——2的幂
题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false思路:一种方法是一直除2,看看能不能到达1,另一种就是位运算,2的幂肯定是只有1位为1的,所以根据这个只要和n-1相与就行了,看...原创 2019-01-08 20:51:13 · 239 阅读 · 0 评论 -
LeetCode——字符串相乘(Multiply Strings)
题目: 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。原创 2018-09-07 22:33:27 · 382 阅读 · 0 评论 -
LeetCode——搜索插入位置
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,...原创 2018-08-25 23:18:02 · 164 阅读 · 0 评论 -
LeetCode——组合总和(Combination Sum)
题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = 7,...原创 2018-09-01 11:53:56 · 711 阅读 · 0 评论 -
LeetCode——罗马数字转整数
题目:罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12...原创 2018-07-07 09:17:03 · 193 阅读 · 0 评论 -
LeetCode——整数转罗马数字
题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...原创 2018-07-07 09:03:29 · 221 阅读 · 0 评论 -
LeetCode——有效的括号
题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: f...原创 2018-07-17 09:09:10 · 240 阅读 · 0 评论 -
LeetCode——电话号码的字母组合
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序原创 2018-07-10 12:12:09 · 260 阅读 · 0 评论 -
【算法题】字符串转整数 (atoi)
题目:实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第一个非空字符序列...原创 2018-06-09 02:19:30 · 402 阅读 · 0 评论 -
LeetCode——Z字形变换 by python
题目: 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = "PA...原创 2018-06-13 22:33:25 · 1042 阅读 · 0 评论 -
LeetCode—— 反转整数
题目: 给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。思想: ...原创 2018-06-12 22:57:26 · 387 阅读 · 0 评论 -
【算法题】两个排序数组的中位数
问题:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5思路:当看到题目中给了有序的数组,那说明这种题...原创 2018-05-10 17:30:08 · 229 阅读 · 0 评论 -
LeetCode——最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z原创 2018-07-07 22:56:49 · 214 阅读 · 0 评论 -
LeetCode——实现strStr()
题目:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", ...原创 2018-07-26 12:48:11 · 303 阅读 · 0 评论 -
LeetCode——报数( Count and Say)
题目:报数序列是指一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 "one 1" ("一个一") , 即 11。11 被读作 "two 1s" ("两个一"), 即 21。21 被读作 "one 2", "one 1" (&q原创 2018-08-31 22:09:59 · 844 阅读 · 0 评论 -
LeetCode——搜索旋转排序数组
题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,...原创 2018-08-20 23:54:38 · 944 阅读 · 0 评论 -
LeetCode——最长有效括号(更优化方法)
昨天自己做出来了,然后在网上百度了下发现有更巧妙的方法,这里记录一下。参考博客:https://blog.csdn.net/renjiewen1995/article/details/51193746先贴代码:class Solution: def longestValidParentheses(self, s): """ :type s: s...原创 2018-08-20 22:47:28 · 336 阅读 · 0 评论 -
LeetCode——有效的数独
题目:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 '.' 表示。示例 1:输入:[ ["5","3",".",...原创 2018-08-26 22:04:03 · 173 阅读 · 0 评论 -
LeetCode——最长有效括号(自己想出来的思路)
题目:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"思想:看到括号匹配问题,首先想到了栈,这道题也确实要用栈.第一种异常情况,右括号多出来:看示例我们发现右括号...原创 2018-08-19 23:53:20 · 564 阅读 · 0 评论 -
LeetCode——下一个排列
题目:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思想:题目是要求找个下一个更大的排列,但是这...原创 2018-08-16 23:18:53 · 900 阅读 · 0 评论 -
LeetCode——两数相除
题目:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除...原创 2018-07-26 22:56:37 · 369 阅读 · 0 评论 -
【算法题】无重复字符的最长子串
问题:给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。思路:首先要保存遍历到未重复的字符原创 2018-05-10 17:06:24 · 615 阅读 · 0 评论