0
点赞
收藏
分享

微信扫一扫

leetcode 908. 小于 K 的最大整数

问题描述

给定一个整数 k 和一个整数数组 arr,找出 arr 中小于 k 的最大整数,并返回它的下标。如果不存在这样的元素,则返回 -1。

示例 1: 输入: k = 5, arr = [3, 4, 5, 2, 7] 输出: 2(因为 arr[2] = 4 是小于 5 的最大整数)

示例 2: 输入: k = 1, arr = [1, 0, 1] 输出: 1(因为 arr[1] = 0 是小于 1 的最大整数)

示例 3: 输入: k = 7, arr = [7, 8, 9] 输出: -1(因为不存在小于 7 的整数)

解法一

解题思路:

我们需要遍历数组,找到小于 k 的最大整数。为了实现这一点,我们可以维护一个变量来存储当前找到的最大值及其索引。遍历数组时,如果发现一个元素小于 k 并且大于当前最大值,我们就更新这个变量。最后,如果找到了这样的元素,返回其索引;否则返回 -1。

/*
 * @lc app=leetcode.cn id=908 lang=javascript
 *
 * [908] Smallest Range I
 */

// @lc code=start
function smallestRangeI(k, arr) {
    let maxVal = -Infinity;
    let minVal = Infinity;
    let ans = -1;
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] < k) {
            if (arr[i] > maxVal) {
                maxVal = arr[i];
                ans = i;
            }
        } else {
            minVal = Math.min(minVal, arr[i]);
        }
    }
    return ans;
}
// @lc code=end
举报

相关推荐

0 条评论