Loading

随笔分类 -  算法题

LeetCode, 剑指Offer 题解报告
摘要:337. 打家劫舍 III 在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在 阅读全文
posted @ 2021-01-26 15:09 反身而诚、 阅读(60) 评论(0) 推荐(0) 编辑
摘要:416. 分割等和子集 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 阅读全文
posted @ 2021-01-26 14:49 反身而诚、 阅读(75) 评论(0) 推荐(0) 编辑
摘要:146. LRU 缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在 阅读全文
posted @ 2021-01-26 13:34 反身而诚、 阅读(60) 评论(0) 推荐(0) 编辑
摘要:581. 最短无序连续子数组 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 示例 1: 输入:nums = [2,6,4,8,10,9,15] 输出:5 解释:你只需要对 阅读全文
posted @ 2021-01-25 23:07 反身而诚、 阅读(74) 评论(0) 推荐(0) 编辑
摘要:338. 比特位计数 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 进阶: 给出时间复杂度为**O(n* 阅读全文
posted @ 2021-01-25 22:17 反身而诚、 阅读(77) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 阅读全文
posted @ 2021-01-24 16:21 反身而诚、 阅读(42) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 1 阅读全文
posted @ 2021-01-24 16:13 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题思路 先扫描数组, 统计空格的数量, 每个空格 阅读全文
posted @ 2021-01-24 16:08 反身而诚、 阅读(47) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQue 阅读全文
posted @ 2021-01-24 15:49 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 阅读全文
posted @ 2021-01-24 15:43 反身而诚、 阅读(56) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 阅读全文
posted @ 2021-01-24 15:41 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 11. 旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 示例 1: 输入:[3,4,5, 阅读全文
posted @ 2021-01-24 15:33 反身而诚、 阅读(57) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 17. 打印从1到最大的n位数 | 递归(大数) 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 说明: 用返回一个整数 阅读全文
posted @ 2021-01-24 13:43 反身而诚、 阅读(56) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 15. 二进制中1的个数 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001 阅读全文
posted @ 2021-01-24 13:19 反身而诚、 阅读(45) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 57 - II. 和为s的连续正数序列 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 阅读全文
posted @ 2021-01-24 13:11 反身而诚、 阅读(60) 评论(0) 推荐(0) 编辑
摘要:15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 **注意:**答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4 阅读全文
posted @ 2021-01-23 22:54 反身而诚、 阅读(51) 评论(0) 推荐(0) 编辑
摘要:1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11, 阅读全文
posted @ 2021-01-23 20:54 反身而诚、 阅读(98) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 57. 和为s的两个数字 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2] 示例 2: 输 阅读全文
posted @ 2021-01-18 22:24 反身而诚、 阅读(110) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 50. 第一个只出现一次的字符 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = "abaccdeff" 返回 "b" s = "" 返回 " " 解题思路 第一遍使用Hash表统计出现的次数, 第二次从左往右遍历找只出现 阅读全文
posted @ 2021-01-18 22:19 反身而诚、 阅读(50) 评论(0) 推荐(0) 编辑
摘要:剑指 Offer 42. 连续子数组的最大和 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和 阅读全文
posted @ 2021-01-18 22:12 反身而诚、 阅读(36) 评论(0) 推荐(0) 编辑