Golang每日一练(leetDay0083) 汇总区间、多数元素II

目录
228. 汇总区间 Summary Ranges 🌟
229. 多数元素 II Majority Element ii 🌟🌟
🌟 每日一练刷题专栏 🌟
Rust每日一练 专栏
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
228. 汇总区间 Summary Ranges
给定一个 无重复元素 的 有序 整数数组 nums 。
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。
列表中的每个区间范围 [a,b] 应该按如下格式输出:
"a->b",如果a != b"a",如果a == b
示例 1:
输入:nums = [0,1,2,4,5,7] 输出:["0->2","4->5","7"] 解释:区间范围是: [0,2] --> "0->2" [4,5] --> "4->5" [7,7] --> "7"
示例 2:
输入:nums = [0,2,3,4,6,8,9] 输出:["0","2->4","6","8->9"] 解释:区间范围是: [0,0] --> "0" [2,4] --> "2->4" [6,6] --> "6" [8,9] --> "8->9"
提示:
0 <= nums.length <= 20-2^31 <= nums[i] <= 2^31 - 1nums中的所有值都 互不相同nums按升序排列
代码1: 暴力枚举
package mainimport ("fmt""strconv"
)func summaryRanges(nums []int) []string {res := []string{}if len(nums) == 0 {return res}i := 0for i < len(nums) {j := ifor j < len(nums)-1 && nums[j+1]-nums[j] == 1 {j++}if i == j {res = append(res, strconv.Itoa(nums[i]))} else {res = append(res, strconv.Itoa(nums[i])+"->"+strconv.Itoa(nums[j]))}i = j + 1}return res
}func main() {nums := []int{0, 1, 2, 4, 5, 7}fmt.Println(summaryRanges(nums))nums = []int{0, 2, 3, 4, 6, 8, 9}fmt.Println(summaryRanges(nums))
}
代码2: 双指针
package mainimport ("fmt""strconv"
)func summaryRanges(nums []int) []string {res := []string{}if len(nums) == 0 {return res}i, j := 0, 0for j < len(nums) {if j < len(nums)-1 && nums[j+1]-nums[j] == 1 {j++} else {if i == j {res = append(res, strconv.Itoa(nums[i]))} else {res = append(res, strconv.Itoa(nums[i])+"->"+strconv.Itoa(nums[j]))}j++i = j}}return res
}func main() {nums := []int{0, 1, 2, 4, 5, 7}fmt.Println(summaryRanges(nums))nums = []int{0, 2, 3, 4, 6, 8, 9}fmt.Println(summaryRanges(nums))
}
代码3: 字符串拼接
package mainimport ("fmt""strconv"
)func summaryRanges(nums []int) []string {res := []string{}if len(nums) == 0 {return res}i, j := 0, 0for j < len(nums) {if j < len(nums)-1 && nums[j+1]-nums[j] == 1 {j++} else {if i == j {res = append(res, strconv.Itoa(nums[i]))} else {res = append(res, fmt.Sprintf("%d->%d", nums[i], nums[j]))}j++i = j}}return res
}func main() {nums := []int{0, 1, 2, 4, 5, 7}fmt.Println(summaryRanges(nums))nums = []int{0, 2, 3, 4, 6, 8, 9}fmt.Println(summaryRanges(nums))
}
代码4: 迭代器
package mainimport ("fmt""strconv"
)func summaryRanges(nums []int) []string {res := []string{}if len(nums) == 0 {return res}iter, i := nums[1:], nums[0]for len(iter) > 0 {if iter[0]-i == 1 {iter, i = iter[1:], iter[0]} else {if i == nums[0] {res = append(res, strconv.Itoa(i))} else {res = append(res, fmt.Sprintf("%d->%d", nums[0], i))}nums, iter, i = iter, iter[1:], iter[0]}}if i == nums[0] {res = append(res, strconv.Itoa(i))} else {res = append(res, fmt.Sprintf("%d->%d", nums[0], i))}return res
}func main() {nums := []int{0, 1, 2, 4, 5, 7}fmt.Println(summaryRanges(nums))nums = []int{0, 2, 3, 4, 6, 8, 9}fmt.Println(summaryRanges(nums))
}
输出:
[0->2 4->5 7]
[0 2->4 6 8->9]
229. 多数元素 II Majority Element ii
给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
示例 1:
输入:[3,2,3] 输出:[3]
示例 2:
输入:[1] 输出:[1]
示例 3:
输入:[1,2] 输出:[1,2]
提示:
1 <= nums.length <= 5 * 10^4-10^9 <= nums[i] <= 10^9
进阶:
- 尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。
相关题目:
169. 多数元素 Majority Element 🌟
代码1: 哈希表
package mainimport "fmt"func majorityElement(nums []int) []int {n := len(nums)if n == 0 {return []int{}}res := []int{}count := make(map[int]int)for _, num := range nums {count[num]++}for key, val := range count {if val > n/3 {res = append(res, key)}}return res
}func main() {nums := []int{3, 2, 3}fmt.Println(majorityElement(nums))nums = []int{1}fmt.Println(majorityElement(nums))nums = []int{1, 2}fmt.Println(majorityElement(nums))
}
代码2: 排序
package mainimport ("fmt""sort"
)func majorityElement(nums []int) []int {n := len(nums)if n == 0 {return []int{}}res := []int{}sort.Ints(nums)var num, count intfor i := 0; i < n; i++ {if nums[i] == num {count++} else {if count > n/3 {res = append(res, num)}num, count = nums[i], 1}}if count > n/3 {res = append(res, num)}return res
}func main() {nums := []int{3, 2, 3}fmt.Println(majorityElement(nums))nums = []int{1}fmt.Println(majorityElement(nums))nums = []int{1, 2}fmt.Println(majorityElement(nums))
}
代码3: 摩尔投票法
package mainimport "fmt"func majorityElement(nums []int) []int {n := len(nums)if n == 0 {return []int{}}res := []int{}var num1, num2, count1, count2 intfor _, num := range nums {if num == num1 {count1++} else if num == num2 {count2++} else if count1 == 0 {num1 = numcount1 = 1} else if count2 == 0 {num2 = numcount2 = 1} else {count1--count2--}}count1, count2 = 0, 0for _, num := range nums {if num == num1 {count1++} else if num == num2 {count2++}}if count1 > n/3 {res = append(res, num1)}if count2 > n/3 {res = append(res, num2)}return res
}func main() {nums := []int{3, 2, 3}fmt.Println(majorityElement(nums))nums = []int{1}fmt.Println(majorityElement(nums))nums = []int{1, 2}fmt.Println(majorityElement(nums))
}
输出:
[3]
[1]
[1 2]
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页: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)暂停更 |
相关文章:
Golang每日一练(leetDay0083) 汇总区间、多数元素II
目录 228. 汇总区间 Summary Ranges 🌟 229. 多数元素 II Majority Element ii 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专…...
JAVA数组基础
目录 一、使用方式 1-动态初始化 ①先声明数组 ② 创建数组 ③分配方式 二、使用方式 2-静态初始化(直接在声明的同时初始化{ } ) 三、数组使用注意事项和细节 四、数组两种初始化方式都是将内存空间分配到堆上面的 一、使用方式 1-动态初始化 …...
Linux-0.11 文件系统exec.c详解
Linux-0.11 文件系统exec.c详解 模块简介 该模块实现了二进制可执行文件和shell脚本文件的加载和执行。 函数详解 create_tables static unsigned long * create_tables(char * p,int argc,int envc)该函数的作用是建立参数和环境变量指针表。 create_table的作用就是建立…...
NET框架程序设计-第1章.NET框架开发平台体系架构
1.1 .NET 框架基本组成 .NET 框架的核心便是通用语言运行时(Commomn Language Runtime,简称 CLR),CLR 是一个可被各种不同的编程语言所使用的运行时。 托管模块(mangaed module): 一个需要 CLR 才能执行的标准 Window…...
(哈希表 ) 349. 两个数组的交集 ——【Leetcode每日一题】
❓349. 两个数组的交集 难度:简单 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[…...
JavaScript基本语法(二)
JavaScript基本语法 1、变量1.1、简介1.2、变量命名规则1.3、JS的关键字和保留字1.4、声明提升 2、JavaScript数据类型2.1、基本类型2.2、引用类型2.3、两种类型的区别2.4、字符串常用方法 3、数据类型转换 1、变量 1.1、简介 在 JavaScript 中声明一个新变量的方法是使用关键…...
ChatGPT3.5-4资源汇总,直连无梯子
什么是ChatGPT? ChatGPT,全称:聊天生成预训练转换器(英语:Chat Generative Pre-trained Transformer),是OpenAI开发的人工智能聊天机器人程序,于2022年11月推出。该程序使用基于GPT-3.5、GPT-4…...
【Netty】使用 SSL/TLS 加密 Netty 程序(二十)
文章目录 前言一、SSL/TLS概述二、Sslhandler类 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二)Netty Channel 概述(三)Netty ChannelHandler(四)ChannelP…...
runway gen2
来自Runway文生成视频ai大模型Gen-2_哔哩哔哩_bilibili来自Runway文生成视频ai大模型Gen-2,距离视频制作自由又近了一步。, 视频播放量 1651、弹幕量 0、点赞数 21、投硬币枚数 2、收藏人数 42、转发人数 22, 视频作者 旭升说, 作者简介 一起聊下互联网的那些事&…...
Day2:Windows网络编程-TCP
今天开始进入Windows网络编程的学习,在学习的时候总是陷入Windows复杂的参数,纠结于这些。从老师的讲解中,这些内容属于是定式,主要学习写的逻辑。给自己提个醒,要把精力放在正确的位置,不要无端耗费精力。…...
leetcode1985. 找出数组中的第 K 大整数
给你一个字符串数组 nums 和一个整数 k 。nums 中的每个字符串都表示一个不含前导零的整数。 返回 nums 中表示第 k 大整数的字符串。 注意:重复的数字在统计时会视为不同元素考虑。例如,如果 nums 是 ["1","2","2"]&am…...
基于深度学习的高精度野生动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于深度学习的高精度野生动物检测(水牛、犀牛、斑马和大象)识别系统可用于日常生活中或野外来检测与定位野生动物目标,利用深度学习算法可实现图片、视频、摄像头等方式的野生动物目标检测识别,另外支持结果可视…...
从零开始 Spring Boot 35:Lombok
从零开始 Spring Boot 35:Lombok 图源:简书 (jianshu.com) Lombok是一个java项目,旨在帮助开发者减少一些“模板代码”。其具体方式是在Java代码生成字节码(class文件)时,根据你添加的相关Lombok注解或类来…...
深入解析Spring源码系列:Day 6 - Spring MVC原理
深入解析Spring源码系列:Day 6 - Spring MVC原理 欢迎来到本系列的第六篇博客。在前几篇博客中,我们探索了Spring框架的核心概念,包括Bean的生命周期、作用域、AOP原理和事务管理。今天,我们将深入研究Spring框架中的MVC…...
Cmake中message函数 如何优雅地输出
message函数说明 在CMake中,message()函数用于向终端输出信息。 message([<mode>] "message text" ...)函数的<mode>参数可以是以下之一: (none): 等同于STATUS,但不推荐使用。STATUS: 输出的信息会被发送到CMake的…...
人工智能基础部分20-生成对抗网络(GAN)的实现应用
大家好,我是微学AI,今天给大家介绍一下人工智能基础部分20-生成对抗网络(GAN)的实现应用。生成对抗网络是一种由深度学习模型构成的神经网络系统,由一个生成器和一个判别器相互博弈来提升模型的能力。本文将从以下几个方面进行阐述࿱…...
JavaScript表单事件(上篇)
目录 一、input: 当表单元素的值发生改变时触发,适用于大多数表单元素。 二、change: 当表单元素的值发生改变且失去焦点时触发,适用于输入框、下拉列表等。 三、submit: 当表单提交时触发,适用于 form 元素。 四、reset: 当表单重置时触…...
vb6 Webview2微软Edge Chromium内核执行JS取网页数据测速
微软Edge Chromium内核执行JS获取网页数据测试 ExcuteScript eval(document.body.innerHTML) from : https://www.163.com 采集的网页HTM字符串占用字节空间1.2MB ExcuteScript回调事件中取得JS执行结果,用时 54 毫秒 其中JSON转字符13.5209毫秒 jSON数据长度: 增…...
编码,Part 1:ASCII、汉字及 Unicode 标准
个人博客 编码的历史由来就懒得介绍了,只需要知道人类处理文本信息是以字符为基本单位,而计算机在最底层只认识 0/1,所以当计算机要为人类存储/呈现字符时,就需要有一个规则,在字符和 0/1 序列之间建立映射关系&#…...
C++ Eigen库矩阵操作
C Eigen库 序号功能例子1赋值Eigen::MatrixXf mat (12,1); \\% mat << 1, 2, 3, 4,5,6,7,8,9,10,11,12;2Inplace操作 \\% resizemat.resize(4, 3); \\% 1 5 9 \\% 2 6 10 \\% 3 7 11 \\% 4 8 123转置 \\% transposeInPlacemat.transposeInPlace(); \\% 1 2 3 4 \\% 5…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...




