首页 > 其他分享 >2024-05-29:用go语言,给定一个只包含正整数的数组 nums,任务是通过多次操作最小化数组的长度。 每次操作可以从数组中选择两个不同的下标 i 和 j,使得 nums[i] 和 nums[j

2024-05-29:用go语言,给定一个只包含正整数的数组 nums,任务是通过多次操作最小化数组的长度。 每次操作可以从数组中选择两个不同的下标 i 和 j,使得 nums[i] 和 nums[j

时间:2024-05-29 14:55:13浏览次数:24  
标签:cnt nums int 复杂度 数组 go 操作

2024-05-29:用go语言,给定一个只包含正整数的数组 nums,任务是通过多次操作最小化数组的长度。

每次操作可以从数组中选择两个不同的下标 i 和 j,使得 nums[i] 和 nums[j] 均为正整数。

然后,将 nums[i] 除以 nums[j] 的余数插入数组末尾,同时删除原始的两个元素。

最终要求计算进行操作后的最短数组长度。

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

输出:1。

答案2024-05-29:

chatgpt

题目来自leetcode3012。

大体步骤如下:

1.定义一个函数 minimumArrayLength(nums []int) int,该函数接收一个整数数组 nums 作为输入并返回一个整数作为输出。

2.使用 slices.Min(nums) 函数找到数组 nums 中的最小值,将其赋值给变量 m

3.对数组 nums 中的每个元素执行以下操作:

  • 如果当前元素除以 m 的余数大于 0,则直接返回 1。这意味着无法通过操作将该元素减小到0。

4.初始化一个计数器 cnt 为0,然后对数组 nums 中的每个元素执行以下操作:

  • 如果当前元素等于 m,则增加计数器 cnt 的值。

5.最终返回操作完成后的数组最小长度:(cnt + 1) / 2。这表示将 m 减小到0所需的最小步骤数。

总的时间复杂度:

  • 找到最小值 m 的时间复杂度为 O(n),其中 n 是输入数组的长度。

  • 遍历输入数组 nums 两次以查找余数不为0的元素和统计 m 的数量的时间复杂度为 O(n)。
    综合来看,总的时间复杂度为 O(n)。

总的额外空间复杂度:

  • 除了输入数组外,算法使用了几个整数变量来进行计算,这些变量的额外空间消耗是常量级的。
    所以,总的额外空间复杂度为 O(1)。

Go完整代码如下:

package main

import (
	"fmt"
	"slices"
)

func minimumArrayLength(nums []int) int {
	m := slices.Min(nums)
	for _, x := range nums {
		if x%m > 0 {
			return 1
		}
	}
	cnt := 0
	for _, x := range nums {
		if x == m {
			cnt++
		}
	}
	return (cnt + 1) / 2
}

func main() {
	nums := []int{1,4,3,1}
	fmt.Println(minimumArrayLength(nums))
}

在这里插入图片描述

Python完整代码如下:

# -*-coding:utf-8-*-

import math

def minimum_array_length(nums):
    m = min(nums)
    for x in nums:
        if x % m > 0:
            return 1
    cnt = 0
    for x in nums:
        if x == m:
            cnt += 1
    return (cnt + 1) // 2

nums = [1, 4, 3, 1]
print(minimum_array_length(nums))

在这里插入图片描述

标签:cnt,nums,int,复杂度,数组,go,操作
From: https://www.cnblogs.com/moonfdd/p/18220299

相关文章

  • Go--生成excel表格,循环赋值并避免重复项
    先下载第三方依赖包:goget-ugithub.com/xuri/excelize/v2 假设原数据格式为:typeDatastruct{PsastringGroupstringOperatorstring} 将数据插入新生成的execl表格中,并且当group值相同时,只更新该group的operator值,即最终数据中,group没有......
  • 【go】【jwt】
    @目录写在前面installjwtgolangjwt参考资料基础/标准库/第三方库golang导航编程规范算法|面试项目写在前面相关博文个人博客首页免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。installjwtgogetgithub.com......
  • go的标准库之flag包和log包
    1、flag包用处:在Go语言中,flag包是用来解析命令行参数的例如:查看docker的版本-v就是命令行参数2种常用的用法:a、flag.Type(flag名,默认值,帮助信息) name:=flag.String("username","admin","这是一个用户名参数的描述") pwd:=flag.Int("password",123456,"这......
  • Golang中的三种指针
    三种类型的指针:类型用途备注普通类型指针传递对象的地址,不能做指针运算uintptr作为一段内容的首地址,可以做指针运算,GC不把uintptr当指针,uintptr无法持有对象。uintptr类型的目标会被回收。unsafe.Pointer不能做指针运算,可以用做在不同数据类型指针间转......
  • python社区宠物登记养宠交流系统vue+flask_django包调试pycharm
    有何创新之处(1)系统资源闭环整合,实现了综合功能高度集成。(2)采用DJANGO框架,开发软件更加方便、快捷、高效用户具体功能如下:1、社区管理员:注册、登录、个人信息管理、发帖管理、评论管理、宠物规范管理、社区用户管理、宠物类别管理、宠物信息管理(查询宠物信息,修改宠物信息,删......
  • 深入探索 MongoDB:高级索引解析与优化策略
    MongoDB是一种非常流行的NoSQL数据库,它支持丰富的索引类型和功能,以提高数据查询的效率和性能。本文将详细介绍MongoDB的高级索引,包括基本语法、常用命令、示例、应用场景、注意事项和总结。基本语法在MongoDB中,可以使用createIndex()方法创建索引,语法如下:db.col......
  • Google难架马甲多
    今年谷歌上架的难度可谓是地狱级别。可是国内马甲这么多,总要摸索出一些套路来。这里总结几条开源aab混淆策略。1、as自带混淆是必要的,否则就是源码提包,相当于到谷歌门口举个牌子说我是马甲包。不仅要驳回,还要被封号。所以这个得加上。2、做了第一步,也还只是个小孩。只是......
  • LeetCode 1329. Sort the Matrix Diagonally
    原题链接在这里:https://leetcode.com/problems/sort-the-matrix-diagonally/description/题目:A matrixdiagonal isadiagonallineofcellsstartingfromsomecellineitherthetopmostroworleftmostcolumnandgoinginthebottom-rightdirectionuntilreachin......
  • Red is good
    事先说明,看的题解题目描述桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。输入格式一行输入两个数R,B,其值在0到5000之间输出格式在最优策略下平均能得到多少钱。......
  • go语言之cron定时任务
    ####版本一定选对goget"github.com/robfig/cron/v3"代码如下:packagemainimport("fmt""github.com/robfig/cron/v3""os""runtime""time")//GetOS返回当前操作系统的字符串表示funcGetOS()......