【Leetcode】58.最后一个单词的长度 58 最后一个单词的长度题目:给定一个仅包含大小写字母和空格 ‘ ‘ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0 。 说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。 示例:输入: “Hello World”输出: 5 思路:从字符串末尾开始向前遍历,其中主要有两种情况:第一种情况 2021-02-19 算法 字符串
【Leetcode】173.二叉搜索树迭代器 173.二叉搜索树迭代器题目实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: 7 / \ 3 15 / \ 9 20 BSTIterator iterator = new BSTIterator(root); iterator.next(); 2021-02-19 算法 树
【Leetcode】146.LRU缓存机制 146. LRU缓存机制题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「 2021-02-19 算法 链表
【Leetcode】540.有序数组中的单一元素 540.有序数组中的单一元素题目给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2 示例 2: 输入: [3,3,7,7,10,11,11] 输出: 10 注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。 方法(二分查找)所给数组有序,考虑使用二分法。 2021-02-19 算法 二分查找
【Leetcode】287.寻找重复数 287 寻找重复数题目:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1:输入: [1,3,4,2,2]输出: 2 示例 2:输入: [3,1,3,4,2]输出: 3 思路:二分查找这种方法只和数组中存在哪些数有关,和数组中这些数的顺序无关。因此分析时可把数组看成 2021-02-19 算法 二分查找
【Leetcode】162.寻找峰值 162 寻找峰值题目:峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。 示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。 2021-02-19 算法 二分查找
【Leetcode】81.搜索旋转排序数组 II 81 搜索旋转排序数组 II和上面一道题相似,只是允许在数组中可以出现重复元素 思路:先找到旋转点,然后看是需要在哪一边进行二分查找 123456789101112131415161718192021222324252627282930313233 public boolean search(int[] nums, int target) { if(nums.leng 2021-02-19 算法 二分查找
【Leetcode】74.搜索二维矩阵 74 搜索二维矩阵题目:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例 1: 输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例 2: 输入:m 2021-02-19 算法 二分查找
【Leetcode】69.X的平方根 69 X的平方根题目: 实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1:输入: 4输出: 2 示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。 思路:二分查找 若x的平方根为k,则所要求的即为满足 2021-02-19 算法 二分查找
【Leetcode】34.在排序数组中查找元素的第一个和最后一个位置 34 在排序数组中查找元素的第一个和最后一个位置题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums 2021-02-19 算法 二分查找