在有序数组里找到大于等于target(大于target)的第一个位置

力扣744 寻找比目标字母大的最小字母

给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。

返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。

java 复制代码
class Solution {
    //找到数组里第一个大于target的位置
    public char nextGreatestLetter(char[] letters, char target) {
        int left=0;
        int right=letters.length-1;
        int mid=0;
        while (left<=right){
            mid=(left+right)/2;
            if (letters[mid]<=target){
                left=mid+1;
            }else{
                right=mid-1;
            }
        }
        if (left>=letters.length) return letters[0];
        // return left;
         return letters[right+1];
    }

}

力扣34 在排序数组里查找元素的第一个和最后一个位置

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 target,返回 [-1, -1]。

你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

java 复制代码
class Solution {
    public int[] searchRange(int[] nums, int target) {
        int l=lowBound(nums,target);
        //数组里全小于tartget,没有找到8
        if (l==nums.length || nums[l]!=target){
            return new int[]{-1,-1};
        }
        return new int[]{l,lowBound(nums,target+1)-1};
    }

    //找到数组里第一个大于等于target的位置
    public int lowBound(int[] nums,int target){
        int left=0;
        int right=nums.length-1;
        int mid=0;
        while (left<=right){
            mid=(left+right)/2;
            if (nums[mid]<target){
                left=mid+1;
            }else{
                right=mid-1;
            }
        }
        // return left;
         return right+1;
    }
}
相关推荐
乐迪信息1 小时前
乐迪信息:基于AI算法的煤矿作业人员安全规范智能监测与预警系统
大数据·人工智能·算法·安全·视觉检测·推荐算法
hsjkdhs2 小时前
C++之多层继承、多源继承、菱形继承
开发语言·c++·算法
立志成为大牛的小牛2 小时前
数据结构——十七、线索二叉树找前驱与后继(王道408)
数据结构·笔记·学习·程序人生·考研·算法
星空下的曙光2 小时前
Node.js crypto模块所有 API 详解 + 常用 API + 使用场景
算法·node.js·哈希算法
Algo-hx2 小时前
数据结构入门 (七):从“链接”到“分支” —— 初探树与二叉树
数据结构
小贾要学习3 小时前
【数据结构】C++实现红黑树
数据结构·c++
StarPrayers.4 小时前
旅行商问题(TSP)(2)(heuristics.py)(TSP 的两种贪心启发式算法实现)
前端·人工智能·python·算法·pycharm·启发式算法
爱吃橘的橘猫4 小时前
嵌入式系统与嵌入式 C 语言(2)
c语言·算法·嵌入式
235164 小时前
【LeetCode】146. LRU 缓存
java·后端·算法·leetcode·链表·缓存·职场和发展
weixin_307779135 小时前
使用Python高效读取ZIP压缩文件中的UTF-8 JSON数据到Pandas和PySpark DataFrame
开发语言·python·算法·自动化·json