
查找
文章平均质量分 69
查找
山顶夕景
互联网大厂AI算法工程师。实践出真知。
展开
-
【LeetCode33】搜索旋转排序数组(二分查找变种)
一、题目二、思路对于有序数组或者部分有序数组,并且注意题目的时间复杂度要求为O(logn)O(logn)O(logn),一般使用二分搜索及其变种。既然数组会经过旋转,则我们不能只是用常规的二分查找,而是需要进行判断,基于在有序段中进行二分查找。比如当在左边(nums[left]和nums[mid])这段有序时,要进行分类讨论:(1)如果target就在这段内,则常规的二分;(2)如果target不在这段内,那就去另一段(nums[mid+1]和nums[right])中找target,注意此时原创 2021-11-07 10:18:29 · 634 阅读 · 2 评论 -
【LeetCode69】x的平方根(二分or牛顿迭代法)
1.题目2.法一:二分查找上界为0,下界为x(可以直接写为x/2+1),二分查找。(1)mid=(left+right)/2,为了防止2个数之和过大,造成溢出,也可以写成left+(right-left)/2,或者除二用移位运算——int mid=left+((right-left)>>1),注意后面这块需要加个括号(因为位运算的优先级更低)。(2)mid*mid显然不能用int了(否则可能溢出),要用long long强制类型转换。(3)class Solution {publ原创 2021-02-22 20:56:16 · 825 阅读 · 1 评论 -
【1010】Radix (25分)
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm> #include<map>#include<vector>#inclu...原创 2019-12-28 11:18:58 · 481 阅读 · 0 评论 -
二分查找&lower_bound()
二分查找算法思想很简单,但是处理好边界要细心。1.单调递增序列(1)二分查找的过程与序列的下标从0开始还是从1开始无关。(2)若二分上界超过int型数据范围的一半时,且欲查数在靠后位置时,mid=(left+right)/2的left+right可能会超过int导致溢出——可换为:mid=left+(right-left)/2防止溢出。#include<stdio.h>#include<stdlib.h>//A[]为严格递增序列,left为二分下界,right为二分上界,原创 2021-01-08 19:42:37 · 1775 阅读 · 0 评论