Leetcode
LeetCode刷题
倒悬的苹果
这个作者很懒,什么都没留下…
展开
-
Go语言:LeetCode--数组中重复的数据
题目:给定一个题目:给定一个整数数组 a ,其中 1 <= a[i] <= n (n为数组长度),其中有些元素出现 两次 而其他元素出现 一次 。找到所有出现 两次 的元素。你可以不用任何额外空间并在 O(n) 时间复杂度内解决这个问题吗?示例:输入: [ 4, 3, 2, 7, 8, 2, 3, 1 ]输出: [ 2, 3 ]解法一:使用 map 。用 map 中的 ke...原创 2020-04-18 16:27:34 · 1202 阅读 · 0 评论 -
Go语言:LeetCode--删除链表的倒数第N个节点
题目:给定一个链表,删除,链表的倒数第 n 个节点,并且返回链表的头节点。示例:给定一个链表:1->2->3->4->5,和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解法一:1.第一次遍历链表,获得链表的长度 L。2.删除链表的倒数第 n 个节点...原创 2020-04-15 21:27:24 · 258 阅读 · 0 评论 -
Go语言:LeetCode-反转字符串
题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须 原地修改输入数组 、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例2:输入:[“...原创 2020-04-14 21:17:43 · 218 阅读 · 0 评论 -
Go语言:LeetCode-重复的DNA序列
题目:所有DNA都由一系列缩写为A,C,G,T的核苷酸组成。例如“ACGAATTCCG”。在研究DNA时,识别DNA中的重复序列有时会对研究非常有帮助。编写一个函数来查找DNA分子中所有出现过超过一次的10个字母长的序列(子串)。示例:输入: s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”输出:[“AAAAACCCCC”, “CCCCCAAAAA”]分析:...原创 2020-04-01 11:06:42 · 234 阅读 · 0 评论 -
Go语言:LeetCode-只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。你可以不使用额外空间来实现吗?示例1:输入:[2,2,1]输出:1示例2:输入:[4,1,2,1,2]输出:4分析:由于题目说明了设计的算法应具有线性时间复杂度,所以穷举遍历已经不在适用,这里不描述穷举法的思路和具体实现。下面给出两种解...原创 2020-03-20 10:36:32 · 217 阅读 · 0 评论 -
Go语言:LeetCode-最长回文串
题目:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写,比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过1010。示例1:输入:“abccccdd”输出: 7解释:我们可以构造最长的回文串是 “dccaccd” ,它的长度是 7 。分析:  ...原创 2020-03-19 10:48:13 · 189 阅读 · 0 评论 -
Go语言:LeetCode-二叉树的直径
题目:给定一颗二叉树,你需要计算它的直径长度。一颗二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例:给定二叉树返回3,它的长度是路径[4,2,1,3]或者[5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。分析:题目给定的示例容易让人产生这样的一个错误想法:只要求出树的左右子树的高度之和即为树的最大直径,其实不然,如以下情况:上图二叉...原创 2020-03-10 10:52:38 · 201 阅读 · 0 评论 -
Go语言:LeetCode-两数之和
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2,7,11,15],target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0,1]解法一:穷举法。两次遍历整个...原创 2020-03-10 17:43:27 · 666 阅读 · 0 评论 -
Go语言:LeetCode-两数相加
题目:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数都不回以0开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 ...原创 2020-03-11 14:56:21 · 376 阅读 · 0 评论 -
Go语言:LeetCode-无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的最长字串的长度。示例1:输入:“abcabcbb”输出:3解释:因为无重复字符的最长子串是“abc",所以其长度为3.示例2:输入:”bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1示例3:输入:“pwwkew"输出:3解释:因为无重复字符的最长子串是”wke",所以其长度为3。请注意,你的答案必...原创 2020-03-11 21:04:02 · 435 阅读 · 0 评论 -
Go语言:Leetcode-字符串的最大公因子
题目:对于字符串 S 和字符串 T,只有在 S = T + … + T (T与自身连接1次或多次)时,我们才认定 " T 能除尽 S "。返回最长字符串 X ,要求满足 X 能除尽 str1 且 X 能除尽 str2 。示例1:输入:str1 = “ABCABC” , str2 = “ABC”输出: “ABC”示例2:输入:str1 = “ABABAB” , str2 = “ABAB”...原创 2020-03-12 16:42:28 · 182 阅读 · 0 评论 -
Go语言:LeetCode-寻找两个有序数组的中位数
题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m+n)) 。你可以假设 nums1 和 nums2 不会同时为空。示例1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例2:nums1 = [1, 2]nums2 = [3,4]则中位数是 ( 2 + 3 ...原创 2020-03-13 09:34:08 · 327 阅读 · 0 评论 -
Go语言:LeetCode-最长上升子序列
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入:[10,9,2,5,3,7,101,18]输出:4解释:最长的上升子序列是[2,3,7,101],它的长度是 4 。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。解法:对原无序数组 nums 进行排序,得到排序后的数组 nums_sort 。找...原创 2020-03-14 18:44:38 · 284 阅读 · 0 评论 -
Go语言:LeetCode-拼写单词
题目:给你一份【词汇表】(字符串数组) words 中一张【字母表】(字符串) chars 。假如你可以用 chars 中的 【字母】(字符)拼写出 words 中的某个【单词】(=字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例1:输入:words = [“cat”,“bt”,“...原创 2020-03-17 20:59:16 · 146 阅读 · 0 评论