
目录
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]内
代码:
type NestedInteger struct {  
    isInteger bool   // 是否是整数  
    value    int64  // 如果是整数,则为对应的值  
    list     []*NestedInteger // 如果是列表,则为对应的子列表  
}  
  
type NestedIterator struct {  
    nestedList []*NestedInteger // 嵌套列表  
    index      int             // 当前迭代位置的索引  
}  
  
func Constructor(nestedList []*NestedInteger) *NestedIterator {  
    return &NestedIterator{nestedList: nestedList, index: -1}  
}  
  
func (it *NestedIterator) HasNext() bool {  
    for it.index >= 0 && it.nestedList[it.index].isInteger {  
        it.index--  
    }  
    return it.index >= 0  
}  
  
func (it *NestedIterator) Next() int {  
    if it.HasNext() {  
        val := it.nestedList[it.index].value  
        it.index++  
        for i := 0; i < len(it.nestedList[it.index].list); i++ {  
            val = val*10 + it.nestedList[it.index].list[i].value  
        }  
        return val  
    }  
    return -1 // 如果没有下一个元素,则返回-1或其他合适的错误码  
}
func Flatten(nestedList []*NestedInteger) []int {  
    iterator := Constructor(nestedList)  
    result := []int{}  
    for iterator.HasNext() {  
        result = append(result, iterator.Next())  
    }  
    return result  
}输出:
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
代码:
func integerBreak(n int) int {  
    // 如果n小于等于4,则直接返回n  
    if n <= 4 {  
        return n  
    }  
      
    // 对n进行从大到小的遍历,找到最大的a,使得a*b的最大值最小  
    a := n // a最大的取值范围是[n/2, n]  
    for b := n / 2; b >= 1; b-- {  
        product := a * b  
        if product > n/2 { // 如果product小于等于n/2,说明当前的a和b的组合可以构成最大的乘积  
            break  
        }  
        a = b  
    }  
      
    return a * b  
}
func main() {  
    fmt.Println(integerBreak(n)) 
}输出:
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页: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)暂停更 | 











![[Python系列] Python虚拟环境Virtualenv](https://img-blog.csdnimg.cn/06af802d2b624df09aca795276cdf72c.png)












