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

这篇具有很好参考价值的文章主要介绍了Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分,# Go Leetcode,golang,leetcode

目录

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 main

import "fmt"

type NestedInteger struct {
	IsInteger bool
	Value     int
	List      []*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 main

import "fmt"

func integerBreak(n int) int {
	if n <= 3 {
		return n - 1
	}
	dp := make([]int, n+1)
	dp[2] = 1
	for 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/ 

Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分,# Go Leetcode,golang,leetcode

Rust每日一练 专栏

(2023.5.16~)更新中...

Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分,# Go Leetcode,golang,leetcode

Golang每日一练 专栏

(2023.3.11~)更新中...

Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分,# Go Leetcode,golang,leetcode

Python每日一练 专栏

(2023.2.18~2023.5.18)暂停更

Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分,# Go Leetcode,golang,leetcode

C/C++每日一练 专栏

(2023.2.18~2023.5.18)暂停更

Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分,# Go Leetcode,golang,leetcode

Java每日一练 专栏

(2023.3.11~2023.5.18)暂停更文章来源地址https://www.toymoban.com/news/detail-562859.html

到了这里,关于Golang每日一练(leetDay0118) 扁平化嵌套列表迭代器、整数拆分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 022:vue中tree结构数据变成扁平化table结构数据的示例

    第022个 查看专栏目录: VUE ------ element UI 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,upda

    2024年02月12日
    浏览(44)
  • 【JavaScript】JS能力测试题:数组扁平化 | 判断质数 | 获取字符串的长度

    💎个人主页: 阿选不出来 💎个人简介: 大三学生,热爱Web前端,随机掉落学习碎片 💎目前开发的专栏: JS 🍭Vue🍭React🍭 💎祝愿今天的你比昨天更加博识了! 题目描述 请补全JavaScript代码,要求将数组参数中的多维数组扩展为一维数组并返回该数组。 注意: 数组参数中仅

    2024年02月07日
    浏览(56)
  • 5个常见的前端手写功能:浅拷贝与深拷贝、函数柯里化、数组扁平化、数组去重、手写类型判断函数

    浅拷贝 浅拷贝是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。 测试结果: 深拷贝 深拷贝是将

    2024年04月26日
    浏览(40)
  • Golang每日一练(leetDay0022)

    目录 64. 最小路径和 Minimum Path Sum  🌟🌟 65. 有效数字 Valid Number  🌟🌟🌟 66. 加一 Plus One  🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给定一个包含非负整数的  m  x  n  网格  grid  ,请找出一条从左上角到

    2023年04月21日
    浏览(43)
  • Golang每日一练(leetDay0052)

    目录 153. 寻找旋转排序数组中的最小值 Find Minimum In Rotated Sorted Array  🌟🌟 154. 寻找旋转排序数组中的最小值 II Find Minimum In Rotated Sorted Array II  🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 已知一个长度为

    2024年02月02日
    浏览(37)
  • Golang每日一练(leetDay0004)

    目录 10. 正则表达式匹配 Regular Expression Matching  🌟🌟🌟 11. 盛最多水的容器 Container with most water  🌟🌟 12. 整数转罗马数字 Integer to Roman  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个字符串 

    2023年04月08日
    浏览(67)
  • Golang每日一练(leetDay0031)

    目录 91. 解码方法  Decode Ways  🌟🌟 93. 复原 IP 地址 Restore IP Addresses  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 注:92.题 移到206.题之后 92. 反转链表 II Reverse Linked List II 一条包含字母  A-Z  的消息通过以

    2023年04月19日
    浏览(82)
  • 深度学习中Numpy的一些注意点(多维数组;数据类型转换、数组扁平化、np.where()、np.argmax()、图像拼接、生成同shape的图片)

    a.shape=(3,2);既数组h=3,w=2 a.shape=(2,3,2);这里第一个2表示axis=0维度上的,三维数组中3,2)数组的个数,这里表示两个(3,2)数组。 这里axis=0指代哪里是很重要的知识点。深度学习中经常压缩一个维度,axis=0。 numpy.squeeze()函数。 语法:numpy.squeeze(a,axis = None);作用是将shape维度为

    2024年01月18日
    浏览(49)
  • Golang每日一练(leetDay0116) 路径交叉、回文对

    目录 335. 路径交叉 Self-crossing  🌟🌟🌟 336. 回文对 Palindrome Pairs  🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一练 专栏 Java每日一练 专栏 给你一个整数数组  distance   。 从  X-Y  平面上的点  (0,0)  开始,先向北

    2024年02月12日
    浏览(39)
  • Golang每日一练(leetDay0049) 二叉树专题(9)

    目录 144. 二叉树的前序遍历 Binary-tree Preorder Traversal  🌟 145. 二叉树的前序遍历 Binary-tree Postorder Traversal  🌟 对比: 94. 二叉树的中序遍历 Binary-tree Inorder Traversal  🌟 146. LRU缓存 LRU Cache  🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C++每日一

    2024年02月04日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包