![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode菜鸟刷题
Autter
即将搬砖的重邮小渣硕!
展开
-
每天一道 leetcode——875. 爱吃香蕉的珂珂
875. 爱吃香蕉的珂珂珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。示例 1:输入: piles = [3,6,7,11],原创 2020-07-25 12:00:06 · 4714 阅读 · 0 评论 -
字节面试中的一些编程题练习
字节面试编程小练题目描述1.给定一个数组,前面一部分已经排好序,后面一部分也排好序,将整个数组排序。分析:类似leetcode上的一道原题的基础上加排序[153. 寻找旋转排序数组中的最小值][1],数组类似[4,5,6,0,1,2]利用二分查找找到最小值 0 ,然后还原成有序的数组。利用二分查找,找出第一个变小的数,二分查找,其实就是一个缩小范围的过程,慢慢接近 target.nums[mid] 与目标值的比较有两种选择,分别是 nums[left],num[right],左右端点,无论选择哪原创 2020-07-08 11:23:41 · 334 阅读 · 0 评论 -
leetcode_139. 单词拆分(dp + dfs + 记忆化 dfs )
题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。分析:第一感觉是用回溯法做,从字符串 s 开头开始,判断字典中的单词是否匹原创 2020-06-25 11:14:55 · 229 阅读 · 0 评论 -
lc_5418. 二叉树中的伪回文路径
5418. 二叉树中的伪回文路径题目描述给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。示例 1:输入:root = [2,3,1,3,1,null,1]输出:2解释:上图为给定的二叉树。总共有 3 条从根到叶子的路径:红色路径 [2,3,3] ,绿色路径 [2,1,1] 和路径 [2,3,1] 。在这些路径中,只有红色和绿色的路径是伪回原创 2020-05-24 20:49:35 · 159 阅读 · 0 评论 -
lc_5419. 两个子序列的最大点积
5419. 两个子序列的最大点积题目描述给你两个数组 nums1 和 nums2 。请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。比方说,[2,3,5] 是 [1,2,3,4,5] 的一个子序列而 [1,5,3] 不是。示例 1:输入:nums1 = [2,1,-2,5], nums2 = [3,0,-6]输出:18解释:从 nums1 中得到子序列原创 2020-05-24 20:36:55 · 174 阅读 · 0 评论 -
leetcode_152. 乘积最大子数组
题目描述给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。分析: 动态规划dp_max[i]:以第 i 个元素的结尾的连续子序列的最大乘积, 如果当前的第 i 个元素为正,可以直接乘,如果为负,就不乘,按照这个想法,最原创 2020-05-18 17:35:26 · 104 阅读 · 0 评论 -
leetcode_31_下一个排列
31. 下一个排列题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。要求:必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1分析:首先明白,下一个排...原创 2020-04-28 11:55:33 · 83 阅读 · 0 评论 -
剑指offer-链表-寻找链表的环的入口
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。分析: 快慢指针设快慢指针,fast,slow,快慢指针初始都指向链表头部,快指针每次走两步,慢指针每次走一步,若链表没环,快指针会走到链表末尾。若链表存在环,那么快慢指针一定会在环内的某个结点相遇,因为快指针每次走两步,比慢指针快一步,所以早晚会赶上慢指针然后相遇。我们设 不含环的链表部分结点数为 a(不...原创 2020-04-21 21:45:24 · 121 阅读 · 0 评论 -
leetcode_石头游戏合集
题目描述石头游戏1:亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回...原创 2020-04-05 16:35:26 · 735 阅读 · 0 评论 -
leetcode_289_生命游戏
题目描述生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;...原创 2020-04-02 14:57:02 · 133 阅读 · 0 评论 -
leetcde_两数相除
题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, d...原创 2020-03-25 15:42:41 · 105 阅读 · 0 评论 -
最大连续子序列
DP - 最大连续子序列和问题的变形给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。现在增加...原创 2020-02-29 17:04:25 · 221 阅读 · 0 评论 -
leetcode_378. 有序矩阵中第K小的元素
leetcode_378. 有序矩阵中第K小的元素给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。思路:方法一:暴力法,把矩阵的所有元素排...原创 2019-11-06 13:48:12 · 135 阅读 · 0 评论 -
leetcode_240_搜索二维矩阵 II
240. 搜索二维矩阵 II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:1.每行的元素从左到右升序排列。2. 每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], ...原创 2019-10-31 16:01:28 · 110 阅读 · 0 评论 -
leet_code_ 436_寻找右区间
leet_code_ 436_寻找右区间题目描述给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的“右侧”。对于任何区间,你需要存储的满足条件的区间 j 的最小索引,这意味着区间 j 有最小的起始点可以使其成为“右侧”区间。如果区间 j 不存在,则将区间 i 存储为 -1。最后,你需要输出一个值为存储的区间值的数组。...原创 2019-10-28 19:31:28 · 92 阅读 · 0 评论 -
leetcode_658. 找到 K 个最接近的元素
给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。方法一:删除法从两端遍历数组,比较头尾数组元素与 x 的距离,哪端距离大,哪端数组出栈,直到出栈后的数组长度为k 。class Solution(object): #删除法 def find...原创 2019-10-24 14:56:42 · 155 阅读 · 0 评论 -
二分查找的边界问题探索
二分查找基本思想:前提条件:序列有序的。过程:首先与序列中间的元素进行比较,如果大于这个中间元素,就在这个当前序列的后半部分查找,如果小于中间元素,则在序列的前部分查找,直到找到或则查找完整个序列为止。二分查找的边界:–边界一般会有两种情况,左闭右闭,左闭右开。–左闭右闭,类似于[left,right],左闭右开 --> [left,right)根据边界的闭合情况,循环体内的初...原创 2019-10-23 20:13:51 · 216 阅读 · 0 评论 -
leetcode_300.最长上升子序列
分析:动态规划定义:dp[0,…i-1] ,dp[i]定义为以num[i] 元素结尾的子序列的最大长度。例如:状态转移方程:dp[i] = max( 1 + dp[j] if i > j and nums[i] > nums[j])class Solution(object): def lengthOfLIS(self, nums): dp = [1]...原创 2019-10-23 15:38:32 · 93 阅读 · 0 评论 -
leetcode_11. 盛最多水的容器
‘’’给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。 目标:找出最大的一组(i,j), 是的Area 最大!Area =max(min(heig...原创 2019-10-13 10:26:28 · 97 阅读 · 0 评论 -
leetcode-501. 二叉搜索树中的众数
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(假设由递归产生的...原创 2018-11-15 15:04:06 · 300 阅读 · 0 评论 -
leetcode-637. 二叉树的层平均值(python)
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入:3/ 9 20/ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:注意:节点值的范围在32位有符号整数范围内。class Solution: def averageOfLev...原创 2018-11-12 12:16:16 · 353 阅读 · 0 评论 -
leetcode-404. 左叶子之和
class Solution(object): def sumOfLeftLeaves(self, root): """ :type root: TreeNode :rtype: int """ if not root: return 0 if root.left an...原创 2018-11-16 20:51:54 · 191 阅读 · 0 评论 -
leetcode--python-107 二叉树的层次遍历II
方法一:直接用广度遍历bfs的方法遍历二叉树,从上到下,从左到右,把每一层的元素存在一个数组中,然后再把这些数组存入一个数组,最后数组使用reverse()方法倒序或者数组切片逆序[::-1]即可。# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# ...原创 2018-11-19 21:48:29 · 322 阅读 · 0 评论 -
笔试题目描述:判断是“01”交叉的字符串最大长度
#题目描述:判断是“01”交叉的字符串最大长度s = '1110110100101010'length = len(s)a= []for i in s: a.append(i)print(a)maxl = 1temp = a[0]cnt = 1for i in range(1,len(s)): if a[i]==temp: if cnt > ...原创 2019-03-13 09:30:13 · 145 阅读 · 0 评论 -
leetcode_650_只有两个键的键盘
最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 'A'。输出能够打印出 n 个 'A' 的最少操作次数。示例 1:输入: 3输出: ...原创 2019-03-26 14:38:43 · 137 阅读 · 0 评论 -
2019 力扣杯-全国高校春季编程大赛
易混淆数 显示英文描述用户通过次数 708用户尝试次数 810通过次数 736提交次数 2243题目难度 Easy给定一个数字 N,当它满足以下条件的时候返回 true:把原数字旋转180°以后得到新的数字。如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 。2, 3, 4, 5, 7 旋转 180° 后,得到的不是数字。易...原创 2019-04-15 19:32:09 · 823 阅读 · 0 评论 -
leetcode227.基本计算器ii
实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。分析:直接法,更具运算法则,先计算乘除法, 在计算加减法。class Solution(object): def calculate(self, s): """ :type s: str ...原创 2019-10-10 09:50:33 · 80 阅读 · 0 评论 -
leetcode_341. 扁平化嵌套列表迭代器
题目描述给定一个嵌套的整型列表。设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的项或者为一个整数,或者是另一个列表。python# """# This is the interface that allows for creating nested lists.# You should not implement it, or speculate about its ...原创 2019-10-11 10:45:43 · 87 阅读 · 0 评论 -
leetcode:784.字母大小写全排列
leetcode:784.字母大小写全排列给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。示例:输入: S = “a1b2”输出: [“a1b2”, “a1B2”, “A1b2”, “A1B2”]输入: S = “3z4”分析:深度优先遍历dfs,依次遍历数组,遇到数字直接往下走,遇到字母,把字母分成大小写字母后继续往下...原创 2018-11-04 14:15:00 · 180 阅读 · 0 评论