自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 收藏
  • 关注

原创 LeetCode 专题 -- 二分查找专题 162. 寻找峰值

LeetCode 专题 – 二分查找专题162. 寻找峰值难度:中等题目描述峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入: nums =

2020-11-18 21:28:52 207

原创 LeetCode每日一题--134. 加油站(Java)

DailyChallenge134. 加油站Medium20201118Description在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。

2020-11-18 21:27:03 272

原创 LeetCode第215场周赛20201115(Java)

第 215 场周赛202011151656. 设计有序流题目描述1有 n 个 (id, value) 对,其中 id 是 1 到 n 之间的一个整数,value 是一个字符串。不存在 id 相同的两个 (id, value) 对。设计一个流,以 任意 顺序获取 n 个 (id, value) 对,并在多次调用时 按 id 递增的顺序 返回一些值。实现 OrderedStream 类:OrderedStream(int n) 构造一个能接收 n 个值的流,并将当前指针 ptr 设为 1 。St

2020-11-18 21:24:29 330

原创 LeetCode 专题 -- 二分查找专题 153. 寻找旋转排序数组中的最小值

LeetCode 专题 – 二分查找专题153. 寻找旋转排序数组中的最小值难度:中等题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0链接:https://leetcode-cn.com/problems/

2020-11-17 22:19:51 163

原创 LeetCode 专题 -- 二分查找专题 74. 搜索二维矩阵

LeetCode 专题 – 二分查找专题74. 搜索二维矩阵难度:中等题目描述编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [ [1,

2020-11-17 22:18:36 111

原创 LeetCode 专题 -- 二分查找专题69. x 的平方根

LeetCode 专题 – 二分查找专题69. x 的平方根难度:简单题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。链接:https://leetcode-cn.com/problems/sqrtx/S

2020-11-15 22:20:46 78

原创 专题LeetCode 专题 -- 二分查找专题 35. 搜索插入位置

LeetCode 专题 – 二分查找专题35. 搜索插入位置难度: 简单题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0链接:https://lee

2020-11-15 22:17:25 85

原创 [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

LeetCode 专题 – 二分查找专题34. 在排序数组中查找元素的第一个和最后一个位置难度:中等题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], t

2020-11-11 23:02:02 463

原创 [算法]LeetCode 专题 -- 二分查找专题 33. 搜索旋转排序数组

LeetCode 专题 – 二分查找专题33. 搜索旋转排序数组难度:中等题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出:

2020-10-21 22:09:50 100

原创 [算法]LeetCode 专题 -- 二分查找专题(Java)

LeetCode 专题 – 二分查找专题题目 33搜索旋转排序数组 34在排序数组中查找元素的第一个和最后一个位置 35搜索插入位置 69x的平方根 74搜索二维矩阵 153寻找旋转排序数组中的最小值 162寻找峰值 275H指数II 278第一个错误的版本 287寻找重复数二分查找总结大白话:统一模板,刷题运用二分查找、堆、二叉树的操作时间复杂度都是O(logn),有时甚至比O(1)的算法还要高效。二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都

2020-10-18 22:19:56 241

原创 LeetCode每日一题--104. 二叉树的最大深度(Java)

DailyChallenge104. 二叉树的最大深度Easy20200728Description给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。链接:https://leetcode-cn.com/problems/

2020-07-28 22:24:48 181

原创 [算法]LeetCode每日一题--392. 判断子序列(Java)

DailyChallenge392. 判断子序列Easy20200727Description给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = "abc",

2020-07-27 22:26:44 545

原创 [算法]LeetCode每日一题--64. 最小路径和(Java)

DailyChallenge64. 最小路径和20200723难度:中等题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。链接:https://leetcode-cn.com/problems/minimum-path-sumSolution

2020-07-23 22:26:21 205

原创 [算法]LeetCode每日一题--​剑指 Offer 11. 旋转数组的最小数字(Java)

DailyChallenge剑指 Offer 11. 旋转数组的最小数字Easy20200722Description把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [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链接:https://leetcode-cn

2020-07-22 11:58:50 158

原创 [算法]167. 两数之和 II - 输入有序数组

DailyChallenge167. 两数之和 II - 输入有序数组Easy20200720Description给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11,

2020-07-20 16:33:01 193

原创 [算法]LeetCode每日一题--312. 戳气球(Java)

DailyChallenge312. 戳气球Hard20200719题目描述有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破

2020-07-19 21:09:10 434

原创 [算法]LeetCode每日一题--35. 搜索插入位置(Java)

DailyChallenge35. 搜索插入位置20200717难度:简单题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0Solu

2020-07-17 11:03:03 175

原创 [算法]LeetCode每日一题--96. 不同的二叉搜索树(Java)

DailyChallenge96. 不同的二叉搜索树20200715难度:中等题目描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / /

2020-07-15 19:00:52 246

原创 [算法]LeetCode每日一题--120. 三角形最小路径和(Java)

DailyChallenge120. 三角形最小路径和Medium20200714Description给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你

2020-07-14 10:42:33 174

原创 [算法]LeetCode每日一题--350. 两个数组的交集 II(Java)

DailyChallenge350. 两个数组的交集 IIEasy20200713题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组

2020-07-13 15:01:33 307

原创 [算法]LeetCode每日一题--174. 地下城游戏(Java)

DailyChallenge174. 地下城游戏Hard20200712Description一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间

2020-07-12 13:57:36 298

原创 LeetCode每日一题--面试题16.18. 模式匹配(Java)

面试题 17.13. 恢复空格20200709难度:中等题目描述哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识

2020-07-09 15:30:06 201

原创 [算法]LeetCode每日一题--面试题 16.18. 模式匹配(Java)

DailyChallenge面试题 16.18. 模式匹配Easy20200708Description你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示:0 < shorter <= longer0 &l

2020-07-08 09:22:12 162

原创 [算法]LeetCode每日一题--112. 路径总和(Java)

DailyChallenge112. 路径总和Easy20200707Description给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \

2020-07-07 21:51:41 189

原创 [算法]LeetCode每日一题--63.不同路径 II(Java)

DailyChallenge63. 不同路径 II20200706难度:中等题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,0,0], [0,1,0

2020-07-06 10:34:53 300

原创 [算法]LeetCode每日一题--44. 通配符匹配(Java)

DailyChallenge44. 通配符匹配20200705难度:困难题目描述给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p = "a"输出: false解

2020-07-05 15:38:59 237

原创 LeetCode每日一题--32. 最长有效括号(Java)

DailyChallenge32. 最长有效括号20200704难度:困难题目描述给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"Solution栈class Solution { public int longestValidParentheses(String s)

2020-07-04 16:44:09 169

原创 [算法]LeetCode每日一题--108. 将有序数组转换为二叉搜索树(Java)

DailyChallenge108. 将有序数组转换为二叉搜索树Easy20200703Description将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。Solution中序遍历构造二叉树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode

2020-07-03 22:13:04 158

原创 [算法]LeetCode每日一题--378. 有序矩阵中第K小的元素(Java)

第194场周赛378. 有序矩阵中第K小的元素20200702难度:中等题目描述给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。提示:你可以假设 k 的值永远是有效的,1 ≤ k ≤ n2。Solution第k小,

2020-07-02 14:28:30 185

原创 [算法]LeetCode每日一题--718. 最长重复子数组(Java)

DailyChallenge718. 最长重复子数组Medium20200701Description给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。提示:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100链接:https://leetcode

2020-07-01 18:50:38 794

原创 [算法]LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)

DailyChallenge剑指 Offer 09. 用两个栈实现队列Easy20200630Description用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[nu

2020-06-30 09:38:46 139

原创 [算法]*LeetCode每日一题--215. 数组中的第K个最大元素(Java)

DailyChallenge215. 数组中的第K个最大元素Medium20200629Description在未排序的数组中找到第 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 ≤ 数组的长度。Solution基

2020-06-29 17:12:16 148

原创 [算法]LeetCode每日一题--209长度最小的子数组(Java)

DailyChallenge209. 长度最小的子数组20200628难度:中等题目描述给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法

2020-06-28 22:19:12 209

原创 [算法]LeetCode每日一题--41. 缺失的第一个正数(Java)

DailyChallenge41. 缺失的第一个正数20200627难度:困难题目描述给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。Solution首先想到的是哈希表,但是不满足空间要求。如果数组中有≤0的数和>n的数,那么1到n中一定

2020-06-27 14:05:02 498

原创 [算法]LeetCode第194场周赛202006021

第194场周赛202006211486. 数组异或操作题目描述1给你两个整数,n 和 start 。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或(XOR)后得到的结果。示例 1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。 "^" 为按位异或 XO

2020-06-26 12:38:26 176

原创 [算法]LeetCode每日一题--面试题 02.01.移除重复节点(Java)

DailyChallenge面试题 02.01. 移除重复节点20200626难度:简单题目描述编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?Solution方法一:HashSet/*

2020-06-26 11:06:07 207

原创 [算法]LeetCode每日一题--139单词拆分(Java)

DailyChallenge139. 单词拆分Medium20200625题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet cod

2020-06-25 13:40:53 251

原创 [算法]LeetCode每日一题--16最接近的三数之和(Java)

DailyChallenge16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= n

2020-06-24 10:52:05 443

原创 [算法]LeetCode每日一题--67二进制求和(Java)

DailyChallenge67. 二进制求和Easy20200623Description给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符

2020-06-23 17:05:32 253

原创 [算法]LeetCode每日一题--面试题 16.18. 模式匹配(Java)

DailyChallenge面试题 16.18. 模式匹配Medium20200622Description你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例

2020-06-22 16:49:09 235

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除