资讯详情

A.每日一题:2089. 找出数组排序后的目标下标

📅 2026/10/24 5:32:30 | 华诺云谱 👁 阅读
A.每日一题:2089. 找出数组排序后的目标下标
题目链接2089. 找出数组排序后的目标下标简单算法原理解法一二分查找6ms击败14.34%时间复杂度O(n logn)这是典型的 “最左端点模型”可以通过最左端点模型找到等于 target 的第一个点然后往后遍历直至不等于 target这个过程中记录下标并返回当然如果没有 target就返回空列表即可下面这篇博客有系统的 二分查找模型知识⬇️一轮复习——D.二分查找模型总结解法二一次遍历0ms击败100.00%时间复杂度O(N)记录 nums 中小于 target 的个数为 less等于 target 的个数为 equal排序后由于相同的数是连续的那么等于 target 的第一个数的下标就是 less最后一个数的下标就是 lessequal-1Java代码class Solution { //2089. 找出数组排序后的目标下标 //解法一二分查找 public ListInteger targetIndices(int[] nums, int target) { //二分查找最左端点模型 int nnums.length; ListInteger retnew ArrayList(); Arrays.sort(nums); int left0,rightn-1; while(leftright){ int midleft(right-left)/2; if(nums[mid]target) leftmid1; else rightmid; } if(nums[left]!target) return ret; while(leftnnums[left]target) ret.add(left); return ret; } }class Solution { //2089. 找出数组排序后的目标下标 //解法二一次遍历 public ListInteger targetIndices(int[] nums, int target) { int less0,equal0; for(int x:nums){ if(xtarget) less; else if(xtarget) equal; } ListInteger retnew ArrayList(); for(int i0;iequal;i) ret.add(lessi); return ret; } }
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑