LeetCode
Golang来刷题
光九
这个作者很懒,什么都没留下…
展开
-
LeetCode(golang):20. 有效的括号
题目给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例输入: "()"输出: true解析这是一个典型的栈的问题,遍历字符串,遇到左边的进栈,遇到右边的和左边的匹配的话两个就出栈,为了方便比较,将左右对应关系存到map中答案//len1 := len(s) //...原创 2020-11-16 21:15:21 · 255 阅读 · 0 评论 -
LeetCode(golang):142. 环形链表 II
题目给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。示例输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。解析根据数学公式推断,慢指针和快指针分别..原创 2020-11-03 12:17:14 · 211 阅读 · 0 评论 -
LeetCode(golang):25. K 个一组翻转链表
题目给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5解析将k个节点进行分组进行反转链表,是206题号...原创 2020-11-03 12:00:38 · 317 阅读 · 0 评论 -
LeetCode(golang):24. 两两交换链表中的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:输入:head = [1,2,3,4]输出:[2,1,4,3]解法一分析:第一种解法是迭代,将节点两两分组进行迭代答案:func swapPairs(head *ListNode) *ListNode { first := &ListNode{0, head} temp := first fo原创 2020-11-03 11:16:02 · 158 阅读 · 0 评论 -
LeetCode(golang):141、环形链表
题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。解法一分析:第一种解法是使用map将经过的head都存进来,检查是否有重复的指针,如果有就是环状链表答案:func hasCycle(head *ListNo原创 2020-07-29 11:46:24 · 243 阅读 · 0 评论 -
LeetCode(golang):15、 三数之和
题目:给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]分析:本题首先想到的是用暴力解法,采用三层循环,将所有符合条件的情况都列出来,如下:func th...原创 2020-07-29 10:20:47 · 248 阅读 · 0 评论 -
LeetCode(golang):11、 盛最多水的容器
题目:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例...原创 2020-07-28 17:45:37 · 210 阅读 · 0 评论 -
LeetCode(golang):70、爬楼梯
题目:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶解法一分析:题目分析,用数学归纳法列出几个,就会发现其实是一个斐波那契数列,可以用递归方法,不过在提交时超时答案:funcclimbStairs(nint)int{ifn<=2{...原创 2020-07-16 17:57:32 · 185 阅读 · 0 评论 -
LeetCode(golang):283、移动零
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。解析:直接遍历数组,从头开始,先将零位标记,然后向后遍历,碰到非零的就向前换位,直到遍历完全。答案:funcmoveZeroes(nums[]int){//默认j是零位,需要替换的j:=0...原创 2020-07-16 14:49:40 · 170 阅读 · 0 评论 -
LeetCode(golang):206、反转链表
206、反转链表反转一个单链表。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解析反转链表就是将指针反转,逻辑上很简单,操作上有难度,主要用两种方法:1、迭代;2、递归答案type ListNode struct { Val int ...原创 2020-05-06 17:16:09 · 237 阅读 · 0 评论 -
LeetCode(golang):3、无重复字符的最长子串
解决此题采用的是滑动窗口的解法,所谓窗口,就是一段字符串,通过将字符串一点点向后移动,达到遍历整个字符串中的子字符串,i是最左边的位置,j是最右边的位置,i和j同时从左边出发,此时字符串长度为1,没有重复字符,j向后移动一位,遍历子字符串的字符是否有和新添加的字符相等的,没有就记录此时字符串的长度为 [ i , j ],有就记录 i 的下一位为k,此时新的窗口字符串是[ k , j ]...原创 2020-01-20 11:16:39 · 357 阅读 · 0 评论 -
LeetCode(golang):2、两数相加
/** [2] 两数相加*/// @lc code=start/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*///函数开始func addTwoNumbers(l1 *ListNode, l2 *ListNo...原创 2020-01-15 16:16:18 · 255 阅读 · 0 评论 -
LeetCode(golang):1、两数之和
1. 两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0,...原创 2020-04-20 17:00:08 · 201 阅读 · 0 评论