leetcode
going_go7
这个作者很懒,什么都没留下…
展开
-
python 剑指 Offer 11. 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0这道题暴力解法的话时间复杂度是O(n),更好的方法是使用二分法,降低时间复杂度为O(logn)需要注意的地方是:这个数组中数字是可以重复的,边界条件的判断cl...原创 2021-04-24 15:32:22 · 145 阅读 · 0 评论 -
python 剑指 Offer 10- II. 青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100该问题解法思路与斐波那契数列一样。在跳到最后一个台阶的时候,有两种跳法,F(n) = F(n-1) + F(n-2)..原创 2021-04-24 11:38:53 · 213 阅读 · 0 评论 -
python 剑指 Offer 10- I. 斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:n = 5...原创 2021-04-23 22:11:43 · 202 阅读 · 0 评论 -
python leetcode64 最小路径和
给定一个包含非负整数的 mxn网格grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 <= m, n...原创 2021-04-16 22:34:23 · 238 阅读 · 0 评论 -
python leetcode 215. 数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。针对本题,第一想法:先从大到小排序,然后取第K个值。我掌握最熟练的冒泡排序,但是它的时间复杂度太高了,为O(n^2),运行完了提示时间超...原创 2021-04-16 21:50:05 · 592 阅读 · 0 评论 -
python leetcode283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。这道题我的思路是:首先用一个变量a记录非零值的个数,遍历整个列表,遇到非零值就将其放到第a个位置上,这个非零值的位置上放0,然后a往后挪一位。这样列表开始的数值都是非零值,后面的数值都为0。时间复杂度为O(n),空间复杂度为O(1)。后来看了官方解法,..原创 2021-04-04 23:24:08 · 337 阅读 · 0 评论 -
python剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTail"..原创 2021-04-02 16:59:22 · 165 阅读 · 0 评论 -
python剑指 Offer 07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解法一:递归法二叉树的题目有固定章法可循。首先根据前序遍历找到根节点,然后根据该根节点在中序遍历中的位置找出左子树和右子数。随后返回到前序遍历中,继续找...原创 2021-04-02 16:06:36 · 169 阅读 · 2 评论 -
python剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000解法一:栈。创建一个新的列表,然后从尾到头遍历。时间和空间复杂度都是O(n)# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.va...原创 2021-03-31 16:58:28 · 97 阅读 · 0 评论 -
python剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000这道题目很简单,本来遍历字符串,找到空格就替换为“%20”,不过我对Python很多语法还是不熟悉。python是不能够对原始字符串进行更改的。解法一:直接使用库函数s.replace()class Solution: def replaceSpa..原创 2021-03-31 15:02:49 · 268 阅读 · 0 评论 -
python剑指 Offer 04. 二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target=5,...原创 2021-03-30 21:59:23 · 236 阅读 · 1 评论