
LeetCode
Golang来刷题
光九
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode(golang):20. 有效的括号
题目 给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 输入: "()" 输出: true 解析 这是一个典型的栈的问题,遍历字符串,遇到左边的进栈,遇到右边的和左边的匹配的话两个就出栈,为了方便比较,将左右对应关系存到map中 答案 //len1 := len(s) //...原创 2020-11-16 21:15:21 · 312 阅读 · 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 · 272 阅读 · 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 · 386 阅读 · 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 · 205 阅读 · 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 · 296 阅读 · 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 · 288 阅读 · 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 · 256 阅读 · 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 · 227 阅读 · 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 · 216 阅读 · 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 · 291 阅读 · 0 评论 -
LeetCode(golang):3、无重复字符的最长子串
解决此题采用的是滑动窗口的解法,所谓窗口,就是一段字符串,通过将字符串一点点向后移动,达到遍历整个 字符串中的子字符串,i是最左边的位置,j是最右边的位置,i和j同时从左边出发,此时字符串长度为1,没有重复 字符,j向后移动一位,遍历子字符串的字符是否有和新添加的字符相等的,没有就记录此时字符串的长度为 [ i , j ], 有就记录 i 的下一位为k,此时新的窗口字符串是[ k , j ]...原创 2020-01-20 11:16:39 · 411 阅读 · 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 · 296 阅读 · 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 · 240 阅读 · 0 评论