【Leetcode 每日一题】3159. 查询数组中元素的出现位置

news/2024/12/29 8:16:31/

问题背景

给你一个整数数组 n u m s nums nums,一个整数数组 q u e r i e s queries queries 和一个整数 x x x
对于每个查询 q u e r i e s [ i ] queries[i] queries[i],你需要找到 n u m s nums nums 中第 q u e r i e s [ i ] queries[i] queries[i] x x x 的位置,并返回它的下标。如果数组中 x x x 的出现次数少于 q u e r i e s [ i ] queries[i] queries[i],该查询的答案为 − 1 -1 1
请你返回一个整数数组 a n s w e r answer answer,包含所有查询的答案。

数据约束

  • 1 ≤ n u m s . l e n g t h , q u e r i e s . l e n g t h ≤ 1 0 5 1 \le nums.length, queries.length \le 10 ^ 5 1nums.length,queries.length105
  • 1 ≤ q u e r i e s [ i ] ≤ 1 0 5 1 \le queries[i] \le 10 ^ 5 1queries[i]105
  • 1 ≤ n u m s [ i ] , x ≤ 1 0 4 1 \le nums[i], x \le 10 ^ 4 1nums[i],x104

解题过程

一开始自己写了个对数组中每个元素都能进行符合条件的查询的解,果然运行效率很低。
实际上只需要记录指定的元素出现的位置,由于 n u m s nums nums 数组长度有限,可以用数组来记录。

具体实现

class Solution {public int[] occurrencesOfElement(int[] nums, int[] queries, int x) {int n = nums.length;int[] list = new int[n + 1];// 初始状态下认为所有元素都不能在 nums 中查询到Arrays.fill(list, -1);for(int i = 0, count = 0; i < n; i++) {if(nums[i] == x) {// 记录某次出现的元素所在的下标list[count++] = i;}}for(int i = 0; i < queries.length; i++) {queries[i] = queries[i] > list.length ? -1 : list[queries[i] - 1];}return queries;}
}

http://www.ppmy.cn/news/1559017.html

相关文章

Slater 条件与 KKT 条件

凸优化中的 Slater 条件与 KKT 条件详解 凸优化是数学优化中一类非常重要的问题&#xff0c;它在机器学习、信号处理、经济学等多个领域有广泛应用。本文将详细介绍凸优化中两个关键的理论工具&#xff1a;Slater 条件与Karush-Kuhn-Tucker (KKT) 条件。 一、凸优化问题的基本…

DP之背包基础

目录 DP简介 01背包问题 采药(01背包例题) 完全背包 疯狂的采药(完全背包例题) 背包变式 装箱问题 砝码称重 质数拆分 优化思考 DP简介 全称Dynamic Programming即动态规划 DP算法是解决多阶段决策过程最优化问题的一种常用方法。 多阶段决策过程是指这样一类特…

scala借阅图书保存记录(三)

BookDAO package org.app package daoimport models.BookModelimport scala.collection.mutable.ListBuffer//图书&#xff0c;数据操作 class BookDAO {//加载图书&#xff0c;从文件中读入def loadBooks(): ListBuffer[BookModel] {val books new ListBuffer[BookModel]()…

pycharm+anaconda创建项目

pycharmanaconda创建项目 安装&#xff1a; Windows下PythonPyCharm的安装步骤及PyCharm的使用-CSDN博客 详细Anaconda安装配置环境创建教程-CSDN博客 创建项目&#xff1a; 开始尝试新建一个项目吧&#xff01; 选择好项目建设的文件夹 我的项目命名为&#xff1a;pyth…

QT-基础-1-Qt 中的字符串处理与常见数据类型

在 Qt 框架中&#xff0c;字符串处理是应用程序开发中不可或缺的一部分。Qt 提供了强大的 QString 类&#xff0c;以便于开发者处理文本数据&#xff0c;支持 Unicode 字符&#xff0c;并且拥有丰富的字符串操作方法。此外&#xff0c;Qt 还提供了其他相关类&#xff0c;如 QSt…

【微信小程序】微信小程序中的异步函数是如何实现同步功能的

在微信小程序中&#xff0c;虽然很多 API 都是异步的&#xff0c;但可以通过一些方法来实现类似同步的功能。以下是几种常见的方法&#xff1a; 1. 使用 async/await async/await 是 ES2017 引入的语法糖&#xff0c;它基于 Promise 来实现异步操作的同步化写法。 示例代码 …

第二十三章 C++ 继承

C 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类&#xff0c;这使得创建和维护一个应用程序变得更容易。这样做&#xff0c;也达到了重用代码功能和提高执行时间的效果。 当创建一个类时&#xff0c;您不需要重新编写新的数据成员和…

在线excel编辑(luckysheet)

项目地址&#xff1a;Luckysheet: &#x1f680;Luckysheet &#xff0c;一款纯前端类似excel的在线表格&#xff0c;功能强大、配置简单、完全开源。 可以下载项目使用npm安装运行&#xff0c;也可以用cdn 加载excel文件&#xff08;使用luckyexcel&#xff09;&#xff1a; …