竞赛题-6258. 数组中最长的方波

2023-11-05

题目:

给你一个整数数组 nums 。如果 nums 的子序列满足下述条件,则认为该子序列是一个 方波 :

子序列的长度至少为 2 ,并且
将子序列从小到大排序 之后 ,除第一个元素外,每个元素都是前一个元素的 平方 。
返回 nums 中 最长方波 的长度,如果不存在 方波 则返回 -1 。

子序列 也是一个数组,可以由另一个数组删除一些或不删除元素且不改变剩余元素的顺序得到。

示例 1 :

输入:nums = [4,3,6,16,8,2]
输出:3
解释:选出子序列 [4,16,2] 。排序后,得到 [2,4,16] 。

  • 4 = 2 * 2.
  • 16 = 4 * 4.
    因此,[4,16,2] 是一个方波.
    可以证明长度为 4 的子序列都不是方波。
    示例 2 :

输入:nums = [2,3,5,6,7]
输出:-1
解释:nums 不存在方波,所以返回 -1 。

提示:

2 <= nums.length <= 105
2 <= nums[i] <= 105

java代码:

class Solution {
    public int longestSquareStreak(int[] nums) {
        Arrays.sort(nums);
        int l = 0;
        int r = nums.length - 1;
        int max = -1;

        Set<Integer> set = new HashSet<Integer>();
        for (int n : nums) {
            set.add(n);
        }
        Set<Integer> visited = new HashSet<Integer>();
        while (l < r) {
            int count = -1;
            int pingfang = nums[l] * nums[l];
            if (pingfang > nums[r]) {
                break;
            }
            visited.add(nums[l]);
            while (set.contains(pingfang)) {
                visited.add(pingfang);
                if (count == -1) {
                    count = 2;
                } else {
                    count++;
                }

                pingfang = pingfang * pingfang;
            }
            l++;
            max = Math.max(max, count);

        }


        return max;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

竞赛题-6258. 数组中最长的方波 的相关文章

  • Unity Vuforia(高通)AR

    Unity Vuforia制作AR软件 使用过高通AR 百度AR EasyAR 还是觉得高通的使用起来更加简易 今天就记录一下怎么使用Vuforia制作一个可识别2D图片与3D物体的AR软件 使用步骤 1 想要在unity中调用与使用Vuf
  • STL 简介,标准模板库(zt)

    STL 简介 标准模板库 ZT 作者 Scott Field这篇文章是关于C 语言的一个新的扩展 标准模板库的 Standard Template Library 也叫STL 当我第一次打算写一篇关于STL的文章的时候 我不得不承认我当时低

随机推荐

  • C++:Command Line Arguments

    我们平常使用的main函数返回大多数是0 而且没有参数 类似下面的例子 int main return 0 我们可以通过Command Line Arguments来给主函数设置参数 通常main函数有两个参数 第一个是用来表示参数的个数
  • minibatch kmeans+可视化(数据集中的图片在resnet网络基础上进行聚类)

    import os import numpy as np import torch import torchvision transforms as transforms from PIL import Image from torchvi
  • 一分钟安装NinJa教程(Ubuntu Linux系统)

    阅读时间30秒 1 安装re2c 10秒钟 sudo apt install re2c 2 clone ninja代码 10秒 git clone http github com ninja build ninja 3 Configure
  • transaction (1)—mysql进阶(五十七)

    前面说了当设置的buffer pool size在1个G内 则不管如何设置 buffer pool instances都是一个 当在1个G以上 mysql才支持多个instances设置 每个都有自己独立的链表 多线程的情况下互不干扰运行
  • 使用 Fiddler 抓包PC微信小程序

    想查看小程序的请求 使用wireshark捣鼓了半天还是无法解析微信小程序的HTTPS协议 于是使用Fiddler试试 Tools gt Options 重启 Fiddler 点击右边的 Filter 选项卡 然后点击 Actions gt
  • SQA在线聊天记录二:质量文化与团队管理

    SQA在线聊天记录二 质量文化与团队管理 2005 05 20 来自 CSDN管理频道 共有评论 条 发表评论 嘉宾主持Bluesky 刘总的回答确实是非常全面 作为一个独立的质量部门 和其他部门做一个项目接口 比如说做项目审计的 就不可避
  • Linux部署Java项目

    文章目录 一 启动虚拟机 二 安装java环境 三 创建java项目 一 启动虚拟机 使用RockyLinux来实现 启动后登录rockylinux sudo su 修改root用户密码 passwd 切换到客户端软件连接虚拟机 ifcon
  • 初学者pandas安装三天,遇到的各种错误给大家分享一下

    第一步 直接安装报了超时错误 直接用pip install pandas 大概率会出现超时错误 第二步 采用国内镜像服务器安装pip3 install i https pypi tuna tsinghua edu cn simple pan
  • 键盘录入、顺序结构、选择结构(if、switch)

    键盘录入 为了让程序数据更符合开发的数据 更加灵活一些 使用键盘录入数据 键盘录入格式 package com briup day5 包 import java util Scanner 导包 用于键盘录入 public class A p
  • mysql多字段排序

    数据库可以对多个字段进行排序 优先级顺序按照书写顺序 说明 对于多字段排序是这个样子的 初始数据如下 观察c1字段中相同的数据 观察上图 对于单一字段来说 可以进行排序 如下图 再增加一个字段c2 进行多字段排序 c1为升序 c2为降序 由
  • 抖音作品想要上热门得有条件和前提

    眼下 短视频正处于风口浪尖 无论是企业知名度曝光 品牌推广 亦或是产品变现 效果都十分令人眼红 想要跟上时代的发展 短视频这块大蛋糕 很有必要为自己分出一块 以时下很火的短视频平台 抖音为例 时至今日已上线4年 人人都知道玩转这个平台 发视
  • QT qDebug打印

    QT 命令行窗口16进制显示 QString Str qDebug lt lt Str sprintf result d 0x 02x n j tmp qDebug 16进制显示可以使用0x 02x
  • PyCharm中无法调包,报错ModuleNotFoundError: No module named ‘numpy‘

    PyCharm中无法调用numpy 报错ModuleNotFoundError No module named numpy 之后将解释器修改为 重新运行 成功
  • 超级黑科技代码!Python打造电脑人脸屏幕解锁神器附带接头暗号

    前言 让我的电脑认识我 我的电脑只有认识我 才配称之为我的电脑 今天 我们用Python实现高大上的人脸识别技术 Python里 简单的人脸识别有很多种方法可以实现 依赖于python胶水语言的特性 我们通过调用包可以快速准确的达成这一目的
  • Docker学习(四)——docker portainer可视化面板

    Docker学习 四 docker portainer可视化面板 1 什么是portainer 2 下载镜像 可省略 3 运行portainer容器 4 根据映射的主机端口 通过localhost 9000进行访问 4 1 设置密码 4 2
  • Kettle的下载安装教程和使用简介(内含第一个kettle转换案例)

    本文首先介绍Kettle工具的安装及基本概念 然后通过一个案例实操介绍Kettle工具的使用 本文重要的内容如下 Kettle的安装 1 Java的安装 登录Java的官网后 进入到下载页面 http www oracle com tech
  • 设置JVM选项-ElasticSearch

    设置JVM的方法 在ElasticSearch中设置JVM选项有两种方法 一种是通过jvm options 另一种是通过环境变量ES JAVA OPTS jvm options jvm options是优选选择的方法 通过tar或者zip安
  • 函数式和面向对象编程有什么区别?

    函数式编程 Functional Programming 和 面向对象编程 Object Oriented Programming 是两个主流的编程范式 他们有各自独特的闪光点 比如函数式编程的数据不可变 惰性求值 面向对象编程的继承 多态
  • python 数据类型及转换

    常见的数据类型 使用 type 内置类可以查看变量所对应的类型 int 整数 十进制 二进制 使用0b开始表示 八进制 使用 0o 开始 十六进制 使用 0x 开始 float 浮点数 complex 复数 str 字符串 就是一段普通的文
  • 竞赛题-6258. 数组中最长的方波

    题目 给你一个整数数组 nums 如果 nums 的子序列满足下述条件 则认为该子序列是一个 方波 子序列的长度至少为 2 并且 将子序列从小到大排序 之后 除第一个元素外 每个元素都是前一个元素的 平方 返回 nums 中 最长方波 的长