![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 63
繁华king
“I can’t change the direction of the wind, but I can adjust my sails to always reach my destination.” - Jimmy Dean
展开
-
LeetCode习题——有效的完全平方数(二分查找)
给你一个正整数 num。如果 num 是一个完全平方数,则返回 true ,否则返回 false。根据完全平方数的性质,我们只需要直接判断num*num的平方根i是否为整数即可。是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。从1 开始,从小到大遍历所有正整数,寻找是否存在满足。不能使用任何内置的库函数,如 sqrt。考虑使用二分查找来优化搜索过程。的后面不可能再出现我们需要的值了。作为二分查找搜索区间的初始边界。在遍历中,如果出现正整数。原创 2023-04-14 15:29:21 · 92 阅读 · 0 评论 -
LeetCode习题——在排序数组中查找元素的第一个和最后一个位置(二分查找)
这题的难点在于target有可能会有多个,如何确定边界值。先说有两种类型的解法,一种是暴力,一种是二分法求边界,由于必须设计时间复杂度为 O(log n) 的算法解决此问题,所以选择二分法。给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。通过遍历数组,存储第一个和最后一个,但是时间复杂度会到O(n),不符合题目要求的,但是力扣中可以通过。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。如果数组中不存在目标值 target,返回 [-1, -1]。原创 2023-04-08 08:45:36 · 60 阅读 · 0 评论 -
LeetCode算法——数组(移除元素)
以上三种方法,前两种属于稳定(即不改变原数组顺序)移除元素,第三种会改变数组顺序,更推荐第二种快慢指针,通过动态的方式来满足条件。请注意,输入数组是以**「引用」**方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。使用两层for循环,第一层for循环遍历数组,第二层for循环更新数组。的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。为什么返回数值是整数,但输出的答案是数组呢?时间复杂度为O(n^2)原创 2023-04-05 17:58:36 · 117 阅读 · 1 评论 -
LeetCode习题——x 的平方根(二分查找)
因为前方的路还很长,未来的日子更加美好。每一次的挑战都是成长的机会,每一次的努力都会有回报。从题目的要求和示例我们可以看出,这其实是一个查找非负整数的问题,并且这个整数是有范围的。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。给你一个非负整数 x ,计算并返回 x 的 算术平方根。猜的数平方以后小了,可能猜的数就是,也可能不是。猜的数平方以后恰恰好等于输入的数就找到了;输入整数,那么这个整数肯定不是结果。输入整数,那么这个整数就是结果。输入整数,那么这个整数。原创 2023-04-09 22:57:36 · 88 阅读 · 0 评论 -
LeetCode习题——(二分查找)搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。情况3:目标值不在数组中需要插入数组中。时间复杂度:O(logn)时间复杂度:O(logn)情况2:目标值在数组中。时间复杂度:O(n)空间复杂度:O(1)空间复杂度:O(1)空间复杂度:O(1)原创 2023-04-08 08:40:07 · 44 阅读 · 0 评论 -
Leetcode算法——数组(二分查找)
需要注意的是,二分查找仅适用于已排序的数组。另外,如果数组中存在多个值相等的元素,二分查找返回的下标不一定是最先出现该元素的位置。如果 target>nums[mid],表示目标元素在右半部分,将查找区间缩小到 [mid+1,right],并重复执行步骤 2。如果 target原创 2023-04-04 21:42:01 · 85 阅读 · 0 评论