首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

多维数组取值问题

问题简述 给予一个多维数组和一个描述取值路径的一维数组, 通过调用函数f返回取值路径描述的值,如 f([[1, 2], [3, 4], [5, 6]], [0, 0]) -> 1 原问题传送门 之所以想记录一下是因为之前有在...按大学老师教的来一套: 先找递归退出的条件,当路径取到最后或者目标数组已经取尽(这里似乎题目没有说清楚,暂定不对取值路径做限定吧) 再找递归的模式, 如果不满足递归退出的条件,则将目标数组缩小一维,传递新的取值路径并递归...既然是因为数组是引用类型而产生的问题,那么直接来一个深拷贝就可以了。...如果仔细思考一下,这里的解题的思路其实和Array.reduce的模式很像 对一个数组进行遍历(对路径数组进行遍历) 每次遍历返回一个值,并作为参数传入下一次遍历(对目标函数的降维) 在遍历完成后,返回一个结果...因为这里只做了取值的操作(a[i]),并不涉及任何的修改原数组的操作。这个答案也是在我提交后,所有答案中实现方案最好的一个。

2.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

Java 动态判断数组维数并取值

问题描述: 一个对象是一个未知的数组类型,可能是 short 二维数组,可能是 int 的三维数组等。...不想写太多 if else (该同学的最初方案是通过 instance of 枚举出所有类型,通过 if else 来写代码) 群里 程序员 DMZ 给出了很专业的建议,使用策略模式或者采用递归的方式取值...我的解法也与之类似,本文给出相对具体的参考代码(因为虽然很多同学也能考虑到递归,但递归时如何取值并不太会;如果用策略模式该怎么写也不太会)。...------- 值:1,几维数组:3 值:2,几维数组:3 值:3,几维数组:3 值:4,几维数组:3 ------- 测试 2 维数组 ------- 值:1,几维数组:2 值:2,几维数组:...2 值:3,几维数组:2 值:4,几维数组:2 值:5,几维数组:2 ------- 测试 1 维数组 ------- 值:1,几维数组:1 值:2,几维数组:1 值:3,几维数组:1 可以看到,符合预期

1K20

Java 动态判断数组维数并取值

问题描述: 一个对象是一个未知的数组类型,可能是 short 二维数组,可能是 int 的三维数组等。...不想写太多 if else (该同学的最初方案是通过 instance of 枚举出所有类型,通过 if else 来写代码) 群里 程序员 DMZ 给出了很专业的建议,使用策略模式或者采用递归的方式取值...我的解法也与之类似,本文给出相对具体的参考代码(因为虽然很多同学也能考虑到递归,但递归时如何取值并不太会;如果用策略模式该怎么写也不太会)。...------- 值:1,几维数组:3 值:2,几维数组:3 值:3,几维数组:3 值:4,几维数组:3 ------- 测试 2 维数组 ------- 值:1,几维数组:2 值:2,几维数组:...2 值:3,几维数组:2 值:4,几维数组:2 值:5,几维数组:2 ------- 测试 1 维数组 ------- 值:1,几维数组:1 值:2,几维数组:1 值:3,几维数组:1 可以看到,符合预期

1.2K20

从N个数组分别取值,穷尽全部情况

(本文年代久远,请谨慎阅读)要求是这样的: 具体要求 有N个数组,每个数组元素不定,从每个数组都中取出一个,组成长度为N的序列,求穷尽序列的所有情况。...网上资料很多,不过多用指针或者指针数组,这对于JAVA来说没一点用。 在此,我把JAVA中的实现来个详细说明。 首先,思路为递归,将其写为成员函数,方便调用。...//str[][]的赋值语句,得到存储完成的二维数组,见‘创建动态二维数组的技巧’ ... ......,curr+1. } } } 以上可完成所有情况的输出,输入集是个二维数组,可方便由多种数据类型转化得到。...输出是一维数组,也可方便进行再处理,故代码易改造,简洁明了。以上即是实现的所有代码(测试+方法)。

82830

从机器学习学python(三) ——数组冒号取值与extend

从机器学习学python(三)——数组冒号取值与extend (原创内容,转载请注明来源,谢谢) 一、数组冒号取值 1、 小白级别 python的特有取值方式,假设数组a = [0,1,2,3,4],...,每个维度上的元素个数分别是2、3、4,在不用冒号取值的情况下,b[0][0][0]即表示第一个元素0,b[0]表示取b数组第一个维度上的第一个数组元素。...当使用冒号取值,规则为:【第1维起点:终点:步长,第2维 ......,第3维】 取出整个b数组的写法为b[0:2:1,0:3:1, 0:4:1],拿第一维举例,0:2:1,表示对于第一维而言,取起点第1个元素(数组下标是0)、终点第2个元素(终点下标是1)、步长是1(...3、大师级别 还是用上面的数组b。

1.5K40

【每日一算法】(二)按规则打印数组取值

题目: 给定一个数组,如 [3,3,4,5,6,7,8,9,9,4,3,5,6,7,8,1,0] 请组成如下图形后取值每行的最后一个数 3 345 67899 4356781 0 既,需要将目标数组按照...1、3、5、7...等差数列分行,如有余数,直接插入 解题思路: 循环遍历目标数组,记录每行的数据,按需换行取值 func superposition(list []int) (nums []int...) { // 定义一个标签记录当前行的长度 target := 1 // 生命一个list存储当前行的数据 var temp []int // 开始遍历目标数组 for i :=...0; i < len(list); i++ { // 如果当前行中的数据达到目标长度 if len(temp) == target { // 将当前行最后一个值追加到结果数组中...if i == len(list)-1 { nums = append(nums, list[i]) return } // 将结果追加到当前行数组

7310
领券