Golang每日一练(leetDay0106) 超级丑数、右侧小于当前元素的个数

news2024/9/21 2:34:02

 

目录

313. 超级丑数 Super Ugly Number  🌟🌟

315. 计算右侧小于当前元素的个数 Count-of-smaller-numbers-after-self  🌟🌟🌟

🌟 每日一练刷题专栏 🌟

Rust每日一练 专栏

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


313. 超级丑数 Super Ugly Number

超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。

给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。

题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。

示例 1:

输入:n = 12, primes = [2,7,13,19]
输出:32 
解释:给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。

示例 2:

输入:n = 1, primes = [2,3,5]
输出:1
解释:1 不含质因数,因此它的所有质因数都在质数数组 primes = [2,3,5] 中。

提示:

  • 1 <= n <= 10^6
  • 1 <= primes.length <= 100
  • 2 <= primes[i] <= 1000
  • 题目数据 保证 primes[i] 是一个质数
  • primes 中的所有值都 互不相同 ,且按 递增顺序 排列

代码:动态规划

package main

import "fmt"

func nthSuperUglyNumber(n int, primes []int) int {
	dp := make([]int, n)
	dp[0] = 1
	idx := make([]int, len(primes))
	min := func(x, y int) int {
		if x < y {
			return x
		}
		return y
	}
	for i := 1; i < n; i++ {
		dp[i] = 1<<31 - 1
		for j := 0; j < len(primes); j++ {
			tmp := dp[idx[j]] * primes[j]
			dp[i] = min(dp[i], tmp)
		}
		for j := 0; j < len(primes); j++ {
			if dp[i]%primes[j] == 0 {
				idx[j]++
			}
		}
	}
	return dp[n-1]
}

func main() {
	n, primes := 12, []int{2, 7, 13, 19}
	fmt.Println(nthSuperUglyNumber(n, primes))

	n, primes = 1, []int{2, 3, 5}
	fmt.Println(nthSuperUglyNumber(n, primes))
}

输出:

32
1

根据丑数定义来暴力枚举:

```golang
func nthSuperUglyNumber(n int, primes []int) int {
    count := 0
    isSuperUglyNumber := func(num int, primes []int) bool {
        for _, p := range primes {
            for num%p == 0 {
                num /= p
            }
        }
        return num == 1
    }
    for num := 1; num < 1<<31; num++ {
        if isSuperUglyNumber(num, primes) {
            count++
            if count == n {
                return num
            }
        }
    }
    return -1
}
```


315. 计算右侧小于当前元素的个数 Count-of-smaller-numbers-after-self

给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是  nums[i] 右侧小于 nums[i] 的元素的数量。

示例 1:

输入:nums = [5,2,6,1]
输出:[2,1,1,0] 
解释:
5 的右侧有 2 个更小的元素 (2 和 1)
2 的右侧仅有 1 个更小的元素 (1)
6 的右侧有 1 个更小的元素 (1)
1 的右侧有 0 个更小的元素

示例 2:

输入:nums = [-1]
输出:[0]

示例 3:

输入:nums = [-1,-1]
输出:[0,0]

提示:

  • 1 <= nums.length <= 10^5
  • -10^4 <= nums[i] <= 10^4

代码:归并排序

package main

import "fmt"

func countSmaller(nums []int) []int {
	n := len(nums)
	counts := make([]int, n)
	pairs := make([]*Pair, n)
	for i := 0; i < n; i++ {
		pairs[i] = &Pair{nums[i], i}
	}
	mergeSort(pairs, 0, n-1, counts)
	return counts
}

type Pair struct {
	num, index int
}

func mergeSort(pairs []*Pair, left, right int, counts []int) {
	if left < right {
		mid := left + (right-left)/2
		mergeSort(pairs, left, mid, counts)
		mergeSort(pairs, mid+1, right, counts)
		merge(pairs, left, mid, right, counts)
	}
}

func merge(pairs []*Pair, left, mid, right int, counts []int) {
	tmp := make([]*Pair, right-left+1)
	i, j, k := left, mid+1, 0
	for i <= mid && j <= right {
		if pairs[i].num <= pairs[j].num {
			tmp[k] = pairs[j]
			k++
			j++
		} else {
			tmp[k] = pairs[i]
			counts[pairs[i].index] += (right - j + 1)
			k++
			i++
		}
	}
	for i <= mid {
		tmp[k] = pairs[i]
		k++
		i++
	}
	for j <= right {
		tmp[k] = pairs[j]
		k++
		j++
	}
	for i, pair := range tmp {
		pairs[left+i] = pair
	}
}

func main() {
	nums := []int{5, 2, 6, 1}
	fmt.Println(countSmaller(nums))

	nums = []int{-1}
	fmt.Println(countSmaller(nums))

	nums = []int{-1, -1}
	fmt.Println(countSmaller(nums))
}

输出:

[2 1 1 0]
[0]
[0 0]

暴力枚举:

```golang
func countSmaller(nums []int) []int {
    n := len(nums)
    counts := make([]int, n)
    for i := 0; i < n; i++ {
        for j := i + 1; j < n; j++ {
            if nums[j] < nums[i] {
                counts[i]++
            }
        }
    }
    return counts
}
```


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Rust每日一练 专栏

(2023.5.16~)更新中...

Golang每日一练 专栏

(2023.3.11~)更新中...

Python每日一练 专栏

(2023.2.18~2023.5.18)暂停更

C/C++每日一练 专栏

(2023.2.18~2023.5.18)暂停更

Java每日一练 专栏

(2023.3.11~2023.5.18)暂停更

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690981.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

easypoi 导出word并插入echart图片和文件

一 pom 文件引入&#xff1a;<!-- 目前的版本对应 poi 4.1.2 和 xmlbeans 3.1.0 , poi 3.17 和 xmlbeans 2.6.0 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version&…

新人必看的Java基础知识点大梳理

一个Java程序可以认为是一系列对象的集合&#xff0c;而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象&#xff1a;对象是类的一个实例&#xff0c;有状态和行为。例如&#xff0c;一条狗是一个对象&#xff0c;它的状态有&…

树莓派Pico|SHELL中microPython命令行|pico sdk开发环境搭建|点灯代码|必备开发工具|gcc涉及的include文件目录

文章目录 SHELL中microPython命令行SHELL中基于microPython的控制代码Hello Pico 代码SHELL中简单点灯代码SHELL中循环亮灯代码 基于pico sdk开发环境搭建及点灯代码必备开发工具Mingw-w64&#xff1a;著名C/C编译器GCCarm-none-eabi&#xff1a;交叉编译工具Git&#xff1a;开…

js翻转数组

arr [red, green, "blue", "pink", "purple"];var arr1 [];for (var i 1; i < arr.length; i) {console.log(arr1.length)arr1[arr1.length] arr[arr.length - i];console.log(arr1.length)}console.log(arr1);

echarts饼装图自定义图例和扇形区的文字

最近因为工作需要&#xff0c;需要开发一个大屏&#xff0c;后台给的数据是这个的&#xff0c;echarts是默认将数据data例的name属性作为图例和扇形图上展示文本&#xff0c;这里我需要自定义图例信息和内容&#xff0c;通过这篇文章&#xff0c;记录下如何修改这些内容&#x…

spring IOC详解

一、IOC IoC就是Inversion of Control&#xff0c;控制反转。在Java开发中&#xff0c;IoC意味着将你设计好的类交给系统去控制&#xff0c;而不是在你的类内部控制。这称为控制反转。 下面我们以几个例子来说明什么是IoC。假设我们要设计一个Girl和一个Boy类&#xff0c;其中G…

【PostgreSQL-16新特性之普通用户的保留连接个数(reserved_connections)】

PostgreSQL数据库为了保证在高并发&#xff0c;高连接数情况下某些用户能够正常连接到数据库里&#xff0c;设立了几个用户连接的保留个数。 本文介绍了PostgreSQL16版本前为超级用户保留的连接数&#xff08;superuser_reserved_connections&#xff09;以及PostgreSQL16版本…

【江西省研究生数学建模竞赛】题目之三 植物的多样性 建模方案及参考文献

【江西省研究生数学建模竞赛】题目之三 植物的多样性 建模方案及参考文献 1 题目 2023年江西省研究生数模竞赛题目之三 植物的多样性 植物作为食物链中的生产者&#xff0c;通过光合作用吸收二氧化碳&#xff0c;制造氧气&#xff0c;同时为其他生物提供食物和栖息地&#x…

前端JavaScript入门-day04

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 函数 为什么需要函数 函数使用 函数的声明语法 函数名命名规范 函数的调用语法 函数体 函数传参 声…

Scala集合与Java集合的互转函数asScala与asJava

只有引入隐式转换类 JavaConverters&#xff0c;才能使用Scala集合与Java集合之间的转换函数。 为方便理解&#xff0c;看下面的例子&#xff1a; import scala.collection.JavaConverters._ val javaList java.util.Arrays.asList("hi", "bye") val sca…

Restic文件备份工具

一、Restic介绍 Restic 是一款 GO 语言开发的开源免费且快速、高效和安全的跨平台备份工具。Restic 使用加密技术来保证你的数据安全性和完整性&#xff0c;可以将本地数据加密后传输到指定的存储。Restic 同样支持增量备份&#xff0c;可随时备份和恢复备份。Restic 支持大多数…

一个自动下载网页图片的python小程序

文章目录 1.一些杂七杂八的引入2.实现2.1 安装所需python包2.1.1 requests包2.1.1 BeautifulSoup包 3.源码分享4.效果展示 1.一些杂七杂八的引入 最近是端午节&#xff0c;本人碰巧又刚考完试&#xff08;数学砸了&#xff0c;估分115&#xff0c;别的还行&#xff09; 于是……

Oracle 查询优化改写(第六章)

第六章 使用数字 1 常用聚集函数&#xff08;空值处理&#xff09; 2 生成累计和 --公司为了查看用人成本&#xff0c;需要对员工的工资进行累加&#xff0c; --以便查看员工人数与工资支出之间的对应关系。 SELECT Empno,Ename,Sal,SUM(Sal) Over(ORDER BY Empno) AS 成本累…

绿色能源外交:国际间合作促进可再生能源全球普及

随着全球气候变化的威胁日益凸显&#xff0c;减少碳排放和转向可持续能源已经成为国际社会的共同目标。在这个背景下&#xff0c;绿色能源外交应运而生。绿色能源外交是指国际间合作&#xff0c;通过技术转让、政策协调和资金支持等手段&#xff0c;推动可再生能源在全球范围内…

文字PDF转换为图片格式的PDF

在我们的日常工作和生活中&#xff0c;有时候我们需要对PDF文件进行一些特殊处理。有时候&#xff0c;我们希望将PDF的每一页提取出来作为图片&#xff0c;方便在其他场景中使用&#xff1b;而有时候&#xff0c;我们则需要将PDF内的内容转换为图片格式&#xff0c;以防止他人对…

docker 操作手册

名词解释 images&#xff1a;封装了应用程序的镜像 tag&#xff1a;镜像的标记&#xff0c;一个镜像可以创建多个标记 container&#xff1a;装载镜像并运行 常用命令 查看容器 docker ps -a //查看全部镜像 启动容器 docker start mysql //启动mysql容器 停止容器 doc…

Python篇——数据结构与算法(第七部分:树)

目录 1.树与二叉树 2.树的实例&#xff1a;模拟文件系统 3.二叉树 4.二叉树的遍历 5.二叉搜索树 5.1插入 5.2查询 5.3删除 1.树与二叉树 2.树的实例&#xff1a;模拟文件系统 # 树的实例 class Node:def __init__(self, name, typedir):self.name nameself.type typ…

springboot集成mybatisPlus

1、添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-jav…

Mysql快速生成Java实体类

需求缘由 在使用MybatisPlus过程中&#xff0c;就肯定会创建实体类&#xff0c;虽然 MybatisPlus 也为我们提供了代码生成器&#xff0c;但是我感觉功能有点多了&#xff0c;我只需要创建实体的方法即可&#xff0c;假如我想快速将上述表转为如下的Bean对象&#xff0c;该怎么搞…

arcgis api for JavaScript4.2x 在vue中白膜图层的加载、(分类、分段)渲染

这篇文章是对有webgis前端开发经验的人 1、假设之前的三维视图均已成功加载&#xff0c;获取到了三维视图&#xff0c;这里的三维视图变量定义的名字是mapView。&#xff08;PS&#xff1a;三维视图mapview在项目初始化已经设置了&#xff0c;本示例中会直接使用调用结果&…