Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分

news/2024/12/5 5:56:34/

 

目录

341. 扁平化嵌套列表迭代器 Flatten Nested List Iterator  🌟🌟

343. 整数拆分 Integer Break  🌟🌟

🌟 每日一练刷题专栏 🌟

Rust每日一练 专栏

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


341. 扁平化嵌套列表迭代器 Flatten Nested List Iterator

给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。

实现扁平迭代器类 NestedIterator :

  • NestedIterator(List<NestedInteger> nestedList) 用嵌套列表 nestedList 初始化迭代器。
  • int next() 返回嵌套列表的下一个整数。
  • boolean hasNext() 如果仍然存在待迭代的整数,返回 true ;否则,返回 false 。

你的代码将会用下述伪代码检测:

initialize iterator with nestedList
res = []
while iterator.hasNext()append iterator.next() to the end of res
return res

如果 res 与预期的扁平化列表匹配,那么你的代码将会被判为正确。

示例 1:

输入:nestedList = [[1,1],2,[1,1]]
输出:[1,1,2,1,1]
解释:通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。

示例 2:

输入:nestedList = [1,[4,[6]]]
输出:[1,4,6]
解释:通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,4,6]。

提示:

  • 1 <= nestedList.length <= 500
  • 嵌套列表中的整数值在范围 [-10^6, 10^6] 内

代码:

package mainimport "fmt"type NestedInteger struct {IsInteger boolValue     intList      []*NestedInteger
}type NestedIterator struct {FlattenedList []int // 扁平化后的列表Index         int   // 当前迭代位置的索引
}func Constructor(nestedList []*NestedInteger) *NestedIterator {flattenedList := make([]int, 0)dfs(nestedList, &flattenedList)return &NestedIterator{FlattenedList: flattenedList, Index: -1}
}// 使用深度优先搜索将嵌套列表扁平化
func dfs(nestedList []*NestedInteger, flattenedList *[]int) {for _, ni := range nestedList {if ni.IsInteger {*flattenedList = append(*flattenedList, ni.Value)} else {dfs(ni.List, flattenedList)}}
}func (it *NestedIterator) HasNext() bool {return it.Index+1 < len(it.FlattenedList)
}func (it *NestedIterator) Next() int {it.Index++return it.FlattenedList[it.Index]
}func main() {nestedList := []*NestedInteger{&NestedInteger{IsInteger: false, List: []*NestedInteger{&NestedInteger{IsInteger: true, Value: 1},&NestedInteger{IsInteger: true, Value: 1},}},&NestedInteger{IsInteger: true, Value: 2},&NestedInteger{IsInteger: false, List: []*NestedInteger{&NestedInteger{IsInteger: true, Value: 1},&NestedInteger{IsInteger: true, Value: 1},}},}iterator := Constructor(nestedList)result := make([]int, 0)for iterator.HasNext() {result = append(result, iterator.Next())}fmt.Println(result)nestedList = []*NestedInteger{&NestedInteger{true, 1, nil},&NestedInteger{false, 0, []*NestedInteger{&NestedInteger{true, 4, nil},&NestedInteger{false, 0, []*NestedInteger{&NestedInteger{true, 6, nil},}},}},}iterator = Constructor(nestedList)result = make([]int, 0)for iterator.HasNext() {result = append(result, iterator.Next())}fmt.Println(result)}

输出:

[1 1 2 1 1]
[1 4 6]


343. 整数拆分 Integer Break

给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回 你可以获得的最大乘积 。

示例 1:

输入: n = 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

输入: n = 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

提示:

  • 2 <= n <= 58

代码:

package mainimport "fmt"func integerBreak(n int) int {if n <= 3 {return n - 1}dp := make([]int, n+1)dp[2] = 1for i := 3; i <= n; i++ {for j := 1; j < i-1; j++ {dp[i] = max(dp[i], max(j*(i-j), j*dp[i-j]))}}return dp[n]
}func max(a, b int) int {if a > b {return a}return b
}func main() {fmt.Println(integerBreak(2))fmt.Println(integerBreak(10))
}

输出:

1
36


🌟 每日一练刷题专栏 🌟

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

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

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

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

 主页: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.ppmy.cn/news/770114.html

相关文章

自制0-36V便携电源:typec+pd诱骗

1、芯片选择&#xff1a; 1.1、LDR6321 选用LDR6321&#xff0c;最高诱骗输出20V&#xff0c;手册如下&#xff1a; https://atta.szlcsc.com/upload/public/pdf/source/20211112/6C547DE14631DD2A11892D79A9F4FADD.pdf 该芯片立创商城有售&#xff0c;淘宝也有售&#xff0c…

思瑞浦高效率开关电源产品,聚焦通信和工业应用

思瑞浦&#xff08;3PEAK&#xff09;针对工业与通信市场推出一系列高效率、高性能开关电源转换器产品&#xff0c;和运算放大器、模数转换器等模拟产品形成协同优势&#xff0c;为客户提供一站式解决方案。工业应用常使用交流输入&#xff0c;通过变压器或AC/DC转换器将交流电…

一款专为升压、升降压开关电源设计的专用DC-DC 控制器芯片 OC6801B

OC6801B 是一款专为升压、升降压开关电源设计的专用DC-DC 控制器芯片。 OC6801B典型应用支持5-40V输入电压范围。通过扩展输入供电&#xff0c;也可以支持400V 以上的输入电压范围。芯片采用固定频率的 PWM 控制方式&#xff0c;并在轻载条件下自动降频提高转换效率。 芯片内置…

HBase(19):Hbase项目实例

1 项目初始化 新建一个maven文件 1.1 导入POM依赖 <groupId>org.example</groupId><artifactId>hbase_chatpro</artifactId><version>1.0-SNAPSHOT</version><repositories><!-- 代码库 --><repository><id>ali…

idea将代码片段提取成一个方法快捷方式

CtrlAltM 今天写代码发现有的方法太长了&#xff0c;为了使我们的代码更加简洁&#xff0c;就可以使用idea的这个功能 效果如图 改造前&#xff1a; 提取出两个方法 如何使用

win10共享打印机搜索不到计算机,win10为什么搜索不到共享打印机

我们在使用win10操作系统的时候&#xff0c;有些情况下需要连接网络共享打印机。但是我们在搜索的时候发现查找不到打印机设备。对于这个问题&#xff0c;小编觉得可能是网络设置的问题。我们可以尝试在电脑的网络中进行相关设置或者是通过第三方软件进行查看修复。具体解决方法…

win10共享打印机搜索不到计算机,Win10系统搜不到共享打印机的解决方法

有不少win10系统用户反映说碰到这样一个情况&#xff0c;就是将打印机共享之后&#xff0c;其他win7系统的电脑都可以直接搜索到共享打印机&#xff0c;可是win10系统却搜不到&#xff0c;这是怎么回事呢&#xff0c;本文就给大家讲解一下Win10系统搜不到共享打印机的解决方法吧…

手提计算机10发现不到打印机,笔记本电脑搜索不到打印机怎么样解决

随着电脑的发展及人们生活水平的提高,越来越多的人开始使用笔记本电脑,笔记本电脑一是携带方便,而且也时尚,但在很多使用笔记本的朋友一定会遇到一个问题,就是搜索不到打印机,遇到这种情况我们具体该怎么解决呢?下面就由学习啦小编跟大家分享一下解决方法吧,欢迎大家来…