08 2021 档案
发表于 2021-08-24 08:48阅读:166评论:0推荐:0
摘要:80. 删除有序数组中的重复项 II 知识点:数组;排序;双指针; 题目描述 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 输
阅读全文 »
发表于 2021-08-24 08:31阅读:291评论:0推荐:0
摘要:26. 删除有序数组中的重复项 知识点:数组;排序;双指针; 题目描述 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 输入:nu
阅读全文 »
发表于 2021-08-22 11:38阅读:505评论:0推荐:0
摘要:88. 合并两个有序数组 知识点:数组;排序;双指针; 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
阅读全文 »
发表于 2021-08-18 08:53阅读:213评论:0推荐:0
摘要:752. 打开转盘锁 知识点:图;BFS 题目描述 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为 '0','0' 变为 '9' 。每次旋转都只
阅读全文 »
发表于 2021-08-17 21:23阅读:362评论:0推荐:0
摘要:796. 旋转字符串 知识点:字符串;KMP算法; 题目描述 给定两个字符串, A 和 B。 A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = 'abcde',在移动一次之后结果就是'bcdea' 。如果在若干次旋转操作之后,A 能变成B,那么返回True。 示例 示例 1:
阅读全文 »
发表于 2021-08-16 07:15阅读:376评论:0推荐:0
摘要:322. 零钱兑换 知识点:动态规划 题目描述 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例 输入:co
阅读全文 »
发表于 2021-08-14 03:07阅读:368评论:0推荐:1
摘要:动态规划 1.概念 动态规划常用于的一个问题就是求最值, 比如说最常见的求最长递增子序列啊等待。 其实动态规划的问题核心仍然是穷举,想一下求最值,那最可能的就是把所有结果列出来,谁最大要谁。 动态规划大部分是自底向上的,所以也就脱离了递归,更多的是采用for循环的迭代; 动态规划的典型类型: 背包问
阅读全文 »
发表于 2021-08-14 03:06阅读:114评论:0推荐:0
摘要:509. 斐波那契数 知识点:递归;动态规划 题目描述 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n
阅读全文 »
发表于 2021-08-14 02:58阅读:152评论:0推荐:0
摘要:120. 三角形最小路径和 知识点:动态规划;最小路径 题目描述 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下
阅读全文 »
发表于 2021-08-14 02:43阅读:107评论:0推荐:0
摘要:5. 最长回文子串 知识点:动态规划;回文串 题目描述 给你一个字符串 s,找到 s 中最长的回文子串。 示例 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 输入:s = "cbbd" 输出:"bb" 输入:s = "a" 输出:"a" 输入:s = "a
阅读全文 »
发表于 2021-08-14 02:11阅读:169评论:0推荐:0
摘要:213. 打家劫舍 II 知识点:动态规划;打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报
阅读全文 »
发表于 2021-08-14 02:00阅读:84评论:0推荐:0
摘要:198. 打家劫舍 知识点:动态规划;打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触
阅读全文 »
发表于 2021-08-14 01:52阅读:312评论:0推荐:0
摘要:64. 最小路径和 知识点:动态规划 题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因
阅读全文 »
发表于 2021-08-14 01:43阅读:204评论:0推荐:0
摘要:121. 买卖股票的最佳时机 知识点:数组;哨兵;动态规划 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返
阅读全文 »
发表于 2021-08-14 01:28阅读:162评论:0推荐:0
摘要:746. 使用最小花费爬楼梯 知识点:动态规划 题目描述 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。 请你找出达到楼层顶部的
阅读全文 »
发表于 2021-08-14 01:21阅读:208评论:0推荐:0
摘要:70. 爬楼梯 知识点:动态规划 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶
阅读全文 »
发表于 2021-08-14 00:48阅读:5953评论:4推荐:12
摘要:回溯 1.概念 回溯是很经典的一个算法,什么是回溯,回溯其实是一种暴力枚举的方式,为啥都暴力了还是很经典的一种方法呢,其实是因为有些问题我们能暴力出来就不错了,就别要其他自行车了。常见的回溯类问题:组合;排列;切割;子集;棋牌; 其实回溯算法就是常说的DFS,本质上是一种暴力枚举算法; 回溯算法常用
阅读全文 »
发表于 2021-08-14 00:46阅读:1463评论:0推荐:1
摘要:【回溯】77. 组合 知识点:递归;回溯;组合;剪枝 题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 输入:n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [
阅读全文 »
发表于 2021-08-14 00:44阅读:285评论:0推荐:1
摘要:51. N 皇后 知识点:递归;回溯;N皇后;剪枝 题目描述 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 输入:n = 4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释
阅读全文 »
发表于 2021-08-14 00:19阅读:212评论:0推荐:0
摘要:47. 全排列 II 知识点:递归;回溯;排列 题目描述 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 输入:nums = [1,2,3] 输出:[[1,2,3
阅读全文 »
发表于 2021-08-14 00:07阅读:591评论:2推荐:0
摘要:46. 全排列 知识点:递归;回溯;排列 题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
阅读全文 »
发表于 2021-08-13 23:49阅读:155评论:0推荐:0
摘要:216. 组合总和 III 知识点:递归;回溯;组合;剪枝 题目描述 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 示例 输入: k = 3, n = 7 输出: [[1,2,4]] 输入: k = 3, n = 9 输
阅读全文 »
发表于 2021-08-13 23:39阅读:294评论:0推荐:0
摘要:40. 组合总和 II 知识点:递归;回溯;组合;剪枝 题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 注意:解集不能包含重复的组合。
阅读全文 »
发表于 2021-08-13 23:24阅读:495评论:0推荐:0
摘要:39. 组合总和 知识点:递归;回溯;组合;剪枝 题目描述 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。 candidates 中的数字可以无限制重复被选取。如果至少一个所选数字
阅读全文 »
发表于 2021-08-13 22:16阅读:172评论:4推荐:1
摘要:78. 子集 知识点:数组;位运算;; 题目描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,
阅读全文 »
发表于 2021-08-13 22:01阅读:62评论:0推荐:0
摘要:剑指 Offer 15. 二进制中1的个数 知识点:数学;位运算 题目描述 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量).)。 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定
阅读全文 »
发表于 2021-08-13 21:55阅读:78评论:0推荐:0
摘要:剑指 Offer 65. 不用加减乘除做加法 知识点:数学;位运算 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 示例 输入: a = 1, b = 1 输出: 2 解法一:位运算 不能用四则运算,那其实可以用的只要逻辑运算和位运算了,
阅读全文 »
发表于 2021-08-13 13:33阅读:651评论:0推荐:0
摘要:316. 去除重复字母 知识点:栈;单调 题目描述 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 输入:s = "bcabc" 输出:"abc" 输入:s = "cbacdcbc" 输出:"acdb"
阅读全文 »
发表于 2021-08-13 13:12阅读:77评论:0推荐:0
摘要:503. 下一个更大元素 II 知识点:栈;单调 题目描述 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -
阅读全文 »
发表于 2021-08-13 09:35阅读:58评论:0推荐:0
摘要:42. 接雨水 知识点:栈;单调 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2
阅读全文 »
发表于 2021-08-13 08:25阅读:127评论:0推荐:0
摘要:【单调】739. 每日温度 知识点:栈;单调 题目描述 请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 输入: temperatures = [73,74,75,71,69,72,76,73]
阅读全文 »
发表于 2021-08-13 08:10阅读:117评论:2推荐:1
摘要:155. 最小栈 知识点:栈;单调 题目描述 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例
阅读全文 »
发表于 2021-08-12 17:22阅读:148评论:0推荐:0
摘要:23. 合并K个升序链表 知识点:链表;递归;分治;堆;单调; 题目描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:
阅读全文 »
发表于 2021-08-12 16:54阅读:44评论:0推荐:0
摘要:剑指 Offer 40. 最小的k个数 知识点:Top-K;数组;排序;分治;堆;单调; 题目描述 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 输入:arr = [3,2,1], k = 2 输出:[
阅读全文 »
发表于 2021-08-12 16:51阅读:617评论:0推荐:0
摘要:215. 数组中的第K个最大元素 知识点:数组;排序;分治;堆;单调; 题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 输入: [3,2,1,5,6,4] 和 k = 2 输出
阅读全文 »
发表于 2021-08-12 16:08阅读:67评论:0推荐:0
摘要:229. 求众数 II 知识点:数组;消消乐;摩尔投票法; 题目描述 给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 示例 输入:[3,2,3] 输出:[3] 输入:nums = [1]
阅读全文 »
发表于 2021-08-12 15:49阅读:404评论:0推荐:0
摘要:169. 多数元素 知识点:数组;排序;消消乐;分治; 题目描述 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 输入:[3,2,3] 输出:3 输入:[2,2,1,1,1,
阅读全文 »
发表于 2021-08-12 15:25阅读:167评论:0推荐:0
摘要:【贪心】435. 无重叠区间 知识点:贪心; 题目描述 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 输入: [ [1,2], [2,3], [3,4]
阅读全文 »
发表于 2021-08-12 14:54阅读:136评论:0推荐:0
摘要:738. 单调递增的数字 知识点:字符串;贪心 题目描述 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。 (当且仅当每个相邻位数上的数字 x 和 y 满足 x ⇐ y 时,我们称这个整数是单调递增的。) 示例 输入: N = 10 输出:
阅读全文 »
发表于 2021-08-12 14:33阅读:133评论:0推荐:0
摘要:56. 合并区间 知识点:贪心 题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 示例 输入:intervals = [[1
阅读全文 »
发表于 2021-08-12 14:17阅读:102评论:0推荐:0
摘要:406. 根据身高重建队列 知识点:贪心 题目描述 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返
阅读全文 »
发表于 2021-08-12 14:02阅读:145评论:0推荐:0
摘要:134. 加油站 知识点:贪心;KMP 题目描述 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一
阅读全文 »
发表于 2021-08-12 11:08阅读:84评论:0推荐:0
摘要:122. 买卖股票的最佳时机 II 知识点:贪心; 题目描述 给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之
阅读全文 »
发表于 2021-08-12 11:02阅读:102评论:0推荐:0
摘要:860. 柠檬水找零 知识点:贪心 题目描述 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5
阅读全文 »
发表于 2021-08-12 10:47阅读:108评论:0推荐:0
摘要:376. 摆动序列 知识点:贪心 题目描述 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6,
阅读全文 »
发表于 2021-08-12 10:36阅读:92评论:0推荐:0
摘要:452. 用最少数量的箭引爆气球 知识点:贪心 题目描述 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。 一支弓箭可以沿着 x 轴从不同点完全垂直地射
阅读全文 »
发表于 2021-08-12 10:26阅读:87评论:0推荐:0
摘要:455. 分发饼干 知识点:贪心; 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以
阅读全文 »
发表于 2021-08-12 10:00阅读:1873评论:1推荐:3
摘要:滑动窗口 1.概念 滑动窗口是一类很常见的题型,最常见的就是子串问题,因为滑动窗口是一个连续的,所以很容易就是问满足条件的最大或者最小子串啊,这个条件就是不同的地方,但万变不离其宗,滑动窗口就是一个窗口的移动。 总之:子串+最值 --> 滑动窗口 滑动窗口有两大类 固定长度的滑动窗口:窗口的大小是固
阅读全文 »
发表于 2021-08-12 09:58阅读:424评论:0推荐:0
摘要:424. 替换后的最长重复字符 知识点:字符串,滑动窗口; 题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。 注意:字符串长度 和 k 不会超过 104。 示例 输入:s = "AB
阅读全文 »
发表于 2021-08-12 09:12阅读:671评论:2推荐:0
摘要:239. 滑动窗口的最大值 知识点:队列;滑动窗口;单调 题目描述 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值
阅读全文 »
发表于 2021-08-11 22:53阅读:267评论:0推荐:0
摘要:3. 无重复字符的最长子串 知识点:字符串,滑动窗口 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 输入: s = "bbbbb" 输出:
阅读全文 »
发表于 2021-08-11 22:26阅读:34评论:0推荐:0
摘要:剑指 Offer 30. 包含min函数的栈 知识点:栈;单调 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。。 示例 MinStack minStack = new MinStack()
阅读全文 »
发表于 2021-08-11 21:58阅读:53评论:0推荐:0
摘要:剑指 Offer 59 - II. 队列的最大值 知识点:队列;单调 题目描述 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_val
阅读全文 »
发表于 2021-08-11 19:16阅读:349评论:0推荐:0
摘要:53. 最大子序和(剑指 Offer 42) 知识点:数组;前缀和;哨兵;动态规划;贪心;分治; 题目描述 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例 输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
阅读全文 »
发表于 2021-08-05 14:08阅读:430评论:0推荐:1
摘要:【二分查找】35. 搜索插入位置 知识点:数组,二分查找; 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 输入: nums = [1,3,5,6], tar
阅读全文 »
发表于 2021-08-05 14:03阅读:1305评论:0推荐:1
摘要:二分查找 1.概念 如果想要在数组中查找一个数,最基本的方法就是暴力解法:一次遍历,这时候时间复杂度是O(N),二分查找就是其中的一种优化,时间复杂度是O(logN);具体做法是一步一步逼近直到找到。前提是数组需要是一个排序数组。 定义:二分查找也称折半查找(Binary Search),是一种在有
阅读全文 »
发表于 2021-08-05 10:37阅读:86评论:0推荐:0
摘要:剑指 Offer 53 - II. 0~n-1中缺失的数字 知识点:数组,二分查找; 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 输入: [0,1,3] 输出:
阅读全文 »
发表于 2021-08-05 10:26阅读:109评论:0推荐:0
摘要:剑指 Offer 53 - I. 在排序数组中查找数字 I 知识点:数组,二分查找; 题目描述 统计一个数字在排序数组中出现的次数。 示例 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 输入: nums = [5,7,7,8,8,10], target =
阅读全文 »
发表于 2021-08-05 10:08阅读:162评论:0推荐:0
摘要:74. 搜索二维矩阵 知识点:数组,二分查找; 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 link 输入:matrix = [[1,3,5,7],[10,11,
阅读全文 »
发表于 2021-08-05 09:59阅读:113评论:0推荐:0
摘要:153. 寻找旋转排序数组中的最小值 知识点:数组,二分查找; 题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,
阅读全文 »
发表于 2021-08-05 09:29阅读:81评论:0推荐:0
摘要:81. 搜索旋转排序数组 II 知识点:数组,二分查找; 题目描述 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 ⇐ k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+
阅读全文 »
发表于 2021-08-04 22:54阅读:302评论:0推荐:0
摘要:33. 搜索旋转排序数组 知识点:数组,二分查找; 题目描述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 ⇐ k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., num
阅读全文 »
发表于 2021-08-04 22:33阅读:272评论:0推荐:0
摘要:34. 在排序数组中查找元素的第一个和最后一个位置 知识点:数组,二分查找; 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂
阅读全文 »
发表于 2021-08-04 21:32阅读:79评论:0推荐:0
摘要:328. 奇偶链表 知识点:链表;双指针 题目描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节
阅读全文 »
发表于 2021-08-04 21:21阅读:102评论:0推荐:0
摘要:15. 三数之和 知识点:数组,双指针; 题目描述 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 输入:nums = [-1,0,1
阅读全文 »
发表于 2021-08-04 21:20阅读:51评论:0推荐:0
摘要:18. 四数之和 知识点:数组,双指针; 题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意:答案中不可以包含
阅读全文 »
发表于 2021-08-04 20:42阅读:241评论:0推荐:0
摘要:209. 长度最小的子数组 知识点:数组;前缀和;二分查找;双指针;滑动窗口 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返
阅读全文 »
发表于 2021-08-04 17:39阅读:97评论:0推荐:0
摘要:69. x 的平方根 知识点:二分查找;数学 题目描述 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 输入: 4 输出: 2 输入: 8 输出: 2 说明: 8 的平方根是 2.82
阅读全文 »
发表于 2021-08-04 13:55阅读:3329评论:0推荐:2
摘要:传输层详解 1.传输层概述 1.1 概述 TCP隶属于传输层,所以要首先明白传输层的作用是什么,传输层能够实现端到端的连接。比如说我们用QQ与别人发信息,网络层能够将信息发送到对方的主机上,主机上使用什么协议来接受这个信息就由传输层来完成,所以传输层实现的是进程到进程间的连接。 传输层提供的是应用程
阅读全文 »
发表于 2021-08-03 10:14阅读:101评论:0推荐:0
摘要:1162. 地图分析 知识点:图;递归 题目描述 你现在手里有一份大小为 N x N 的 网格 grid,上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的。 我们这里说的距离是「曼哈顿距离」(
阅读全文 »
发表于 2021-08-03 09:45阅读:124评论:0推荐:1
摘要:133. 克隆图 知识点:图;递归;BFS 题目描述 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node { public int val; public List<Nod
阅读全文 »
发表于 2021-08-03 09:19阅读:207评论:0推荐:0
摘要:841. 钥匙和房间 知识点:图;递归;BFS 题目描述 有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。 在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由
阅读全文 »
发表于 2021-08-02 22:21阅读:42评论:0推荐:0
摘要:700. 二叉搜索树中的搜索 知识点:二叉树;递归 题目描述 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。 示例 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和值: 2 返回: 2 /
阅读全文 »
发表于 2021-08-02 22:16阅读:89评论:0推荐:0
摘要:297. 二叉树的序列化与反序列化 知识点:二叉树;递归 题目描述 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定
阅读全文 »
发表于 2021-08-02 21:39阅读:63评论:0推荐:0
摘要:669. 修剪二叉搜索树 知识点:二叉树;递归 题目描述 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。
阅读全文 »
发表于 2021-08-02 21:16阅读:115评论:0推荐:0
摘要:235. 二叉搜索树的最近公共祖先 知识点:二叉树;递归 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是
阅读全文 »
发表于 2021-08-02 20:58阅读:414评论:0推荐:1
摘要:98. 验证二叉搜索树 知识点:二叉树;递归 题目描述 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 输入: 2 / \ 1 3 输出
阅读全文 »
发表于 2021-08-02 20:23阅读:128评论:0推荐:0
摘要:701. 二叉搜索树中的插入操作 知识点:二叉树;递归 题目描述 给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即
阅读全文 »