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

news2025/1/16 13:43:10

 

目录

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/678641.html

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

相关文章

chatgpt赋能python:Python下载安装教程

Python下载安装教程 Python是一种高级编程语言&#xff0c;具有简单易学、强大多样的特点&#xff0c;不仅可以用来开发网站、应用程序、游戏&#xff0c;还可以用于数据科学、机器学习、人工智能等领域&#xff0c;被广泛应用于各行各业。 本文将为您提供详细的Python下载安…

MongoDB简介

目录 1、NoSQL概述 2、什么是MongoDB 3、MongoDB特点 一、MongoDB安装&#xff08;docker方式&#xff09; 二、MongoDB安装&#xff08;普通方式&#xff09; 三、MongoDB 概念解析 1、NoSQL概述 NoSQL(NoSQL Not Only SQL)&#xff0c;意即反SQL运动&#xff0c;指的是…

FcaNet: Frequency Channel Attention Networks论文总结

论文&#xff1a;https://arxiv.org/abs/2012.11879 中文版&#xff1a;FcaNet: Frequency Channel Attention Networks 源码&#xff1a;https://github.com/cfzd/FcaNet或https://gitee.com/yasuo_hao/FcaNet 一、论文背景和出发点 问题&#xff1a;许多工作都集中在如何设计…

【T+】安装畅捷通T+提示安装向导找不到环境检测工具,是否手动选择环境检测工具文件夹。

【问题描述】 在windows server 2008r2系统环境下&#xff0c; 安装畅捷通T专属云标准版18.0软件的时候&#xff0c;提示&#xff1a; 安装向导找不到环境检测工具&#xff0c;是否手动选择环境检测工具文件夹&#xff08;CheckEnvironment&#xff09; 点击【是】手动选择&…

leetcode数据库题第六弹

leetcode数据库题第六弹 626. 换座位1280. 学生们参加各科测试的次数1321. 餐馆营业额变化增长1327. 列出指定时间段内所有的下单产品1341. 电影评分1378. 使用唯一标识码替换员工ID1393. 股票的资本损益1407. 排名靠前的旅行者1484. 按日期分组销售产品1517. 查找拥有有效邮箱…

数字基带传输

常用码型&#xff1a; 为了适应信道的传输&#xff0c;传输码型必须具备以下基本特性&#xff1a; 1&#xff09;无直流、很少的低频分量&#xff1b; 2&#xff09;含有码元定时信息&#xff1b; 3&#xff09;主瓣宽度窄&#xff1b; 4&#xff09;适用于各种信源的…

ChatGPT从入门到精通,一站式掌握办公自动化/爬虫/数据分析和可视

课程名称适应人群ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视 全面AI时代就在转角&#xff0c;道路已经铺好了“局外人”or“先行者”就在此刻等你决定 1、对ChatGPT感兴趣并希望有人手把手教学的新手 2、希望了解GPT各类应用抓住未来风口 3、希…

【软件设计师暴击考点】UML知识高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

【Android Framework系列】第2章 Binder机制大全

1 Binder简介 1.1 什么是Binder Binder是Android中主要的跨进程通信方式。Android系统中&#xff0c;每个应用程序是由Android的Activity&#xff0c;Service&#xff0c;BroadCast&#xff0c;ContentProvider这四剑客中一个或多个组合而成&#xff0c;这四剑客所涉及的多进程…

【瑞萨RA_FSP】IWDT——独立看门狗定时器

文章目录 一、IWDT简介二、IWDT功能框图剖析1. IWDT 时钟源(1) 计数器时钟(2) 独立看门狗超时时间计算 2. IWDT 模块电路功能讲解3. 独立看门狗&#xff08;IWDT&#xff09;与看门狗&#xff08;WDT&#xff09;功能对比4. 怎么使用IWDT 三、IWDT实验1. 硬件设计2. 文件结构3.…

交通 | 考虑供需交互下的航空网络优化问题

编者按&#xff1a; 本文提出了一种包含供需交互作用的航空网络规划模型 (ANPSD)&#xff0c;该模型同时考虑了航线选择、航班频率和机队组成等问题&#xff0c;还捕捉了航空公司的供应和乘客需求之间的相互依赖关系。作者将需求实证函数与 ANPSD 模型相结合&#xff0c;开发了…

代码随想录算法训练营第四十四天|完全背包、518. 零钱兑换 II 、377. 组合总和 Ⅳ

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

【数据结构】顺序表,链表

前言 小亭子正在努力的学习编程&#xff0c;接下来将开启 javaEE 的学习~~ 分享的文章都是学习的笔记和感悟&#xff0c;如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话&#xff0c;烦请点赞关注支持一波, 感激不尽~~ 目录 前言 顺序表 ArrayList ArrayLi…

K8S存储值之PV和PVC

1. 概念&#xff1a; 1.1. PersistentVolume (PV)&#xff1a; 是由管理员设置的存储&#xff0c;它是群集的一部分。就像节点是集群中的资源一样&#xff0c;PV也是集群中的资源。PV是Volume之类的卷插件&#xff0c;但具有独立于使用PV的Pod的生命周期。此API对象包含存储实…

数字图像处理-图像复原与重建

文章目录 一、图像退化/复原过程的模型二、噪声模型2.1噪声的空间和频率特性2.2一些重要的噪声概率密度函数2.2.1高斯噪声2.2.2瑞利噪声2.2.3爱尔兰&#xff08;伽马&#xff09;噪声2.2.4指数噪声2.2.5均匀噪声2.2.6脉冲&#xff08;椒盐&#xff09;噪声 2.3周期噪声 三、只存…

【ABAP】数据类型(四)「类型组TYPE-POOL」

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…

基于电容电流前馈与电网电压全前馈的三相LCL并网逆变器谐波抑制MATLAB仿真

基于电容电流前馈&#xff0b;电网电压全前馈的三相并网逆变器谐波抑制MATLAB仿真资源-CSDN文库https://download.csdn.net/download/weixin_56691527/87940934模型简介&#xff1a; 测试环境为MATLAB2021b 一共包含两个模型&#xff1a;一个是传统无改进模型&#xff0c;一个…

chatgpt赋能python:Python画运动轨迹:探索世界的足迹

Python画运动轨迹&#xff1a;探索世界的足迹 作为一门快速发展的编程语言&#xff0c;Python在数据分析、机器学习、Web开发等多个领域中发挥着举足轻重的作用。其中&#xff0c;画运动轨迹是Python可视化库中较为常见的应用之一。本文将介绍使用Python画运动轨迹的方法&…

chatgpt赋能python:Python画点函数:如何绘制并掌握基础图形?

Python画点函数&#xff1a;如何绘制并掌握基础图形&#xff1f; Python是一个极为强大的编程语言&#xff0c;它可以用来编写各种应用程序&#xff0c;包括绘图。绘图是Python的重要特性之一&#xff0c;它提供了各种绘图函数&#xff0c;包括画点函数。Python的画点函数是一…

chatgpt赋能python:Python的frozenset:一种不可变的集合类型

Python的frozenset&#xff1a;一种不可变的集合类型 在Python中&#xff0c;集合是一种基本的数据类型。它们是无序的、可变的、且不允许重复的元素。但是&#xff0c;有时候我们需要一个不可变的集合&#xff0c;即一旦创建就不允许进行修改操作的集合。这就是frozenset的作…