代码编织梦想

数据结构专题(一)二分法,寻找解题思路看这一篇就够了-爱代码爱编程

二分法 二分法又可以被称为二分查找,它描述了在有序集合中搜索特定值的过程。广义的二分查找是将问题的规模尽可能的缩小到原有的一半。 对于二分法的思想大家都能讲出几句,但我们仍然很难讲其与实际应用完美的结合到一起,所以我们尽量汇总二分法的应用场景,和大家一起深入,共勉! 一、常见问题 给定一个由数字组成的有序数组 nums,并给你一个数字 t

LeetCode题解:矩阵中战斗力最弱的 K 行-爱代码爱编程

矩阵中战斗力最弱的 K 行 一、题目 给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。 请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。 如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。 军人 总是 排在一行中

LeetCode题解:统计有序矩阵中的负数-爱代码爱编程

统计有序矩阵中的负数 一、题目 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中 负数 的数目。 示例: 输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]] 输出:8 解释:矩阵中共有 8 个负数。 二

LeetCode题解:寻找比目标字母大的最小字母-爱代码爱编程

寻找比目标字母大的最小字母 一、题目 给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。 在比较时,字母是依序循环出现的。举个例子: 如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a

LeetCode题解:有效的完全平方数-爱代码爱编程

有效的完全平方数 一、题目 给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。 说明:不要使用任何内置的库函数,如 sqrt。 示例 1: 输入:16 输出:True 示例 2: 输入:14 输出:False 题解 这道题是典型的模版I分析思路 在有序的“数组”中,查找指定

LeetCode题解:pow(x, n)-爱代码爱编程

pow(x, n) 一、题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 题解 解题思路 要判断 n 的正负,以确定我们的

LeetCode题解:找到 K 个最接近的元素-爱代码爱编程

模版III - 找到 K 个最接近的元素(middle) 一、题目 LeetCode658.找到 K 个最接近的元素 给定一个排序好的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。 整数 a 比整数 b 更接近 x 需要满足: |a - x| < |b - x|

LeetCode题解:在排序数组中查找元素的第一个和最后一个位置-爱代码爱编程

在排序数组中查找元素的第一个和最后一个位置(middle) 一、题目 LeetCode 34.在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置,如果数组中不存在目标值 target,返回 [-1, -1]。 你可以设计并实现时间复杂度为 O(

LeetCode题解:寻找旋转排序数组中的最小值-爱代码爱编程

模版 II-3 寻找旋转排序数组中的最小值(middle) 更好的阅读体验应该是: 审题-思考答题整理-归纳 ::: 一、题目 153. 寻找旋转排序数组中的最小值 假设按照升序排序的数组在预先未知的某个点上进行了旋转。例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] 。 请找出其中最小的元素。 示

LeetCode题解:寻找峰值-爱代码爱编程

寻找峰值(middle) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode:162.寻找峰值 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。 你

LeetCode题解:第一个错误的版本-爱代码爱编程

第一个错误的版本(easy) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode:278.第一个错误的版本 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2

LeetCode题解:搜索旋转排序数组-爱代码爱编程

搜索旋转排序数组(middle) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode:33.搜索旋转排序数组 给你一个整数数组 nums ,和一个整数 target 。 该整数数组原本是按升序排列,但输入时在预先未知的某个点上进行了旋转。(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,

LeetCode题解:猜数字大小-爱代码爱编程

猜数字大小(easy) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode:374.猜数字大小 猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。 你可以通过调用一个预先定义好的接口 gues

LeetCode题解:x的平方根-爱代码爱编程

x的平方根(easy) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode:69.x 的平方根 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,

LeetCode题解:704.二分查找-爱代码爱编程

二分查找(easy) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode:704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例: 输入: nums = [-1,0,3,

LeetCode题解:35.搜索插入位置-爱代码爱编程

搜索插入位置(easy) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode题目链接:35.搜索插入的位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输

LeetCode题解:两数之和 II - 输入有序数组-爱代码爱编程

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