![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode算法题
leetcode算法题
weixin_43689247
这个作者很懒,什么都没留下…
展开
-
几类岛屿问题
岛屿数量题意给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。输入:11110110101100000000输出: 1解题思路利用DFS遍历的方法,若格子为‘1’,那么遍历其四周的格子。每次遍历格子都把格子数值赋值为‘0’,避免重复遍历。代码class Solution(object): def numIslands(s原创 2020-06-27 17:37:58 · 153 阅读 · 0 评论 -
406. 根据身高重建队列
题目假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]题析使用贪心算法:按身高进行从高到低排序,根据k重新插入元素。代码class Solution(obj原创 2020-06-26 20:40:59 · 83 阅读 · 0 评论 -
79 单词搜索
题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 fals原创 2020-06-26 19:25:45 · 146 阅读 · 0 评论 -
105 从前序与中序遍历序列构造二叉树
问题描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例子:前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]题解每次访问前序遍历中的第一个数,然后找到这个值在中序遍历的位置,再分左子树和右子树,递归。代码class Solution(object): def buildTree(self, preorder, inorder): """ :type原创 2020-06-26 15:13:27 · 83 阅读 · 0 评论 -
55 跳跃游戏
问题描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。实例输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。解题思路利用深度优先搜索的方法求解每达到一个点,就遍历其可以走的步数class Solution(object): def canJump(self, nums):原创 2020-06-26 13:53:37 · 93 阅读 · 0 评论 -
删除链表的倒数第N个节点
题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.解题思路设置两个指针,让第一个指针先走n步,然后第二个指针再一起走,最后第一个指针遍历完后第二个指针指的节点就为要删除的结点。代码# Definition for singly-linked list.class ListNode(object):原创 2020-06-13 19:43:43 · 77 阅读 · 0 评论 -
电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。解析可以设置一个队列完成代码class Solution(object): def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ res = []原创 2020-06-13 19:44:14 · 117 阅读 · 0 评论 -
盛最多的水
问题描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。题解采用双指针思路解决代码class Solution(object): def maxArea(self, height): """ :type heigh原创 2020-06-13 19:44:30 · 85 阅读 · 0 评论 -
5最长回文子串
题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。比如:输入: “babad” 输出: “bab”;输入: “cbbd” 输出: “bb”。题解动态规划的思想,若s[i]=s[j],并且s[i+1]=s[j-1],即当前字符串s[i:j]里的s[i+1:j-1]也为回文,那么该子串也为回文代码class Solution(object): def longestPalindrome(self, s): """原创 2020-06-13 19:44:41 · 106 阅读 · 0 评论 -
无重复字符的最长子串
问题描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解题思路设置一个队列(python代码用list表示),遍历字符串,若当前字符存在于队列中,则删除队头,直到字符不存在队列中;若不存在于队列中,直接加入队尾代码class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """原创 2020-06-13 19:45:01 · 71 阅读 · 0 评论 -
每日温度
题目描述根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。题目分析给定列表 temperatures =原创 2020-06-13 19:45:18 · 128 阅读 · 0 评论