首页 > 其他分享 >2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,

2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,

时间:2023-07-15 22:32:50浏览次数:32  
标签:cnt 07 nums int max result 数组 maxCnt

2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K,

判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。

输入:nums = [1,2,2,3,3,4,4], K = 3。

输出:true。

答案2023-07-15:

大体步骤如下:

1.初始化计数变量 cnt 和最大计数变量 maxCnt,初始值都为 1。

2.从索引 1 开始遍历数组 nums

  • 如果 nums[i-1] 不等于 nums[i],说明遇到了一个新的递增序列,更新 maxCnt 为之前的计数 cntmaxCnt 中的较大值,并将 cnt 重置为 1。
  • 否则,递增序列继续,将 cnt 自增 1。

3.遍历结束后,再次更新 maxCnt 为最后一个递增序列的计数 cntmaxCnt 中的较大值。

4.判断长度为 len(nums) 除以 maxCnt 后是否大于等于 k,如果是,返回 true;否则,返回 false

5.在 main 函数中,定义数组 nums 和整数 k

6.调用函数 canDivideIntoSubsequences(nums, k) 并将结果赋给变量 result

7.输出结果 Result: true

时间复杂度: 遍历数组 nums 的时间复杂度为 O(n),其中 n 是数组 nums 的长度。 因此,整个算法的时间复杂度为 O(n)。

空间复杂度: 算法使用了常数级别的额外空间,不随输入规模变化,所以空间复杂度为 O(1)。

go完整代码如下:

package main

import (
    "fmt"
)

func canDivideIntoSubsequences(nums []int, k int) bool {
    cnt := 1
    maxCnt := 1

    for i := 1; i < len(nums); i++ {
        if nums[i-1] != nums[i] {
            maxCnt = max(maxCnt, cnt)
            cnt = 1
        } else {
            cnt++
        }
    }

    maxCnt = max(maxCnt, cnt)
    return len(nums)/maxCnt >= k
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

func main() {
    nums := []int{1, 2, 2, 3, 3, 4, 4}
    k := 3

    result := canDivideIntoSubsequences(nums, k)
    fmt.Println("Result:", result)
}

2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,_#include

rust完整代码如下:

fn can_divide_into_subsequences(nums: &[i32], k: i32) -> bool {
    let mut cnt = 1;
    let mut max_cnt = 1;

    for i in 1..nums.len() {
        if nums[i - 1] != nums[i] {
            max_cnt = max_cnt.max(cnt);
            cnt = 1;
        } else {
            cnt += 1;
        }
    }

    max_cnt = max_cnt.max(cnt);
    nums.len() as i32 / max_cnt >= k
}

fn main() {
    let nums = vec![1, 2, 2, 3, 3, 4, 4];
    let k = 3;

    let result = can_divide_into_subsequences(&nums, k);
    println!("Result: {}", result);
}

2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,_#include_02

c++完整代码如下:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool canDivideIntoSubsequences(vector<int>& nums, int k) {
    int cnt = 1;
    int maxCnt = 1;

    for (int i = 1; i < nums.size(); i++) {
        if (nums[i - 1] != nums[i]) {
            maxCnt = max(maxCnt, cnt);
            cnt = 1;
        }
        else {
            cnt++;
        }
    }

    maxCnt = max(maxCnt, cnt);
    return nums.size() / maxCnt >= k;
}

int main() {
    vector<int> nums = { 1, 2, 2, 3, 3, 4, 4 };
    int k = 3;

    bool result = canDivideIntoSubsequences(nums, k);
    cout << "Result: " << boolalpha << result << endl;

    return 0;
}

2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,_#include_03

c完整代码如下:

#include <stdio.h>

int canDivideIntoSubsequences(int nums[], int length, int k) {
    int cnt = 1;
    int maxCnt = 1;

    for (int i = 1; i < length; i++) {
        if (nums[i - 1] != nums[i]) {
            if (maxCnt < cnt) {
                maxCnt = cnt;
            }
            cnt = 1;
        }
        else {
            cnt++;
        }
    }

    if (maxCnt < cnt) {
        maxCnt = cnt;
    }

    return (length / maxCnt) >= k;
}

int main() {
    int nums[] = { 1, 2, 2, 3, 3, 4, 4 };
    int length = sizeof(nums) / sizeof(nums[0]);
    int k = 3;

    int result = canDivideIntoSubsequences(nums, length, k);
    printf("Result: %s\n", result ? "true" : "false");

    return 0;
}

2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一个或几个 长度至少 为 K 的 不相交的递增子序列。 输入:nums = [1,2,2,3,3,_数组_04

标签:cnt,07,nums,int,max,result,数组,maxCnt
From: https://blog.51cto.com/moonfdd/6733950

相关文章

  • 2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一
    2023-07-15:给你一个非递减的正整数数组nums和整数K,判断该数组是否可以被分成一个或几个长度至少为K的不相交的递增子序列。输入:nums=[1,2,2,3,3,4,4],K=3。输出:true。答案2023-07-15:大体步骤如下:1.初始化计数变量cnt和最大计数变量maxCnt,初始值都为1。2......
  • 2023-07-09~07-15第一周暑假生活
    本周平均学习时间应该是2小时每天,代码时间要短一点在1个小时的样子,解决问题总时长估计是三个小时学习内容和代码内容大部分是js的知识,也有在学习Linux的操作和搭载大数据环境。下周计划重心仍然是放在熟练掌握javaweb目标上——继续学习练习HTML、学习Springboot。下个月再把......
  • Java学习day04: 方法和数组
    我在B站上大学......
  • 剑指offer_20230715
    剑指Offer67.把字符串转换成整数题目说明写一个函数StrToInt,实现把字符串转换成整数这个功能。不能使用atoi或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符......
  • Python 潮流周刊第 11 期(2023-07-15)
    查看全文:Python潮流周刊#11:如何使用Golang运行Python代码?......
  • JS 数组操作
    JS数组操作如下://at(),用于接收一个整数值并返回该索引对应的元素,允许正数和负数。负整数从数组中的最后一个元素开始倒数constarr=[{name:'a',age:15},{name:'b',age:12},{name:'c',age:13},{name:'d',age:12},{name:'e',age:12}];console.log(ar......
  • C#中数组嵌套数组
    publicclassmo{publicintq1{get;set;}publicintcount{get;set;}}classClass1{staticvoidMain(string[]args){int[]a=newint[]{1,2,3,4,5};int[]b1=n......
  • 第五节 数组
    知识点数组题目1请创建一个长度为6的整数数组,并为数组中的元素赋值。遍历数组,打印所有元素,元素之间用空格隔开。比如:数组为:{1,2,3,4,5}打印结果:12345训练提示1、数组中的元素有索引,开始索引和结束索引分别是什么?使用循环语句,依次通过索引获取元素即可遍历数组。2、......
  • 后缀数组学习笔记
    后缀数组是什么后缀数组就是主要处理字符串后缀问题的,它的实现算法主要有两种:倍增法和DC3,复杂度分别是\(O(n\logn)\)和\(O(n)\)。这里由于DC3代码答辩且难以理解,我就只写了倍增法的实现。例题引入P3809【模板】后缀排序题目大意读入一个长度为\(n\)的由大小写英文......
  • Perl学习笔记2_标量数组哈希
    1.概述Perl是弱类型语言,变量不需要指定类型,解释器根据上下文自动选择匹配类型.Perl有三个基本的数据类型:标量($),数组(@),哈希(%).2.标量,scalar标量变量以$标记.my$a=123;#数字my$b="123";#字符串my$c=0x1F;#16进制my$d=047;#8进制my$e......