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

多维数组取值问题

问题简述 给予一个多维数组和一个描述取值路径的一维数组, 通过调用函数f返回取值路径描述的值,如 f([[1, 2], [3, 4], [5, 6]], [0, 0]) -> 1 原问题传送门 之所以想记录一下是因为之前有在...按大学老师教的来一套: 先找递归退出的条件,当路径取到最后或者目标数组已经取尽(这里似乎题目没有说清楚,暂定不对取值路径做限定吧) 再找递归的模式, 如果不满足递归退出的条件,则将目标数组缩小一维,传递新的取值路径并递归...这么简单的题目不一把过岂不是有点丢脸,然后就直接点了提交,然后就蹦了一大片的failed测试用例出来,仔细看了看失败的测试用例,并没有看懂,因为都是很多莫名奇妙的数据,并且每次返回的结果都不一致(后来才知道是随机的用例...这么一想一下就和之前每次跑用例总是产生意想不到的结果的情况联系上了,随机用例的失败原因一定是因为测试路径会有很多个,但是测试目标数组只有一个,因此有副作用的话,只有第一次测试的结果是正确的,后面都会因副作用产生不同的结果...因为这里只做了取值的操作(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

    随机产生去重数组

    需求 总共需要在100个数字中,随机抽取10个不重复的数字。 原理 在最初时,设置了一个temp数组,所有的数组元素都是没有定义的。...每次生成时使用随机函数以及数学的取整函数进行处理,之后进行判断,判断temp数组中的这个值是否存在。...如果不存在,那么将这个数组的元素设置为1(也就是设置为存在状态),之后将获取到的这个num值push到数组当中,再将控制循环的变量加1。从而更好的控制while循环。...从代码的运行上来说,性能要更好~~~ 随机产生去重数组 方法1 var result = []; for(var j = 0; j < 10; j++) { result[j] = Math.round...if(result[j] == result[m]) { j--; break; } } } } 随机产生去重数组

    1.3K60

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

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

    84030

    Java案例-数组随机

    数组案例分析 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值Max,最小值Min,平均值Avg,和Sum值,并输出出来。 ?...具体实现代码: package teacher01; /** * 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值Max,最小值Min,平均值Avg,和Sum值...void main(String[] args) { int [] arrayNumber; arrayNumber = new int [10]; System.out.println("以下是随机数的...10个整数:"); //填入随机的10个整数 for (int i = 0; i < arrayNumber.length; i++) { arrayNumber...i]; } System.out.println("其中 Max ="+ max +",Min ="+min+",Sum ="+sum+",Avg ="+sum/10.0); } } 运行结果:<em>随机</em>整数

    1.8K80

    java在数组中放入随机数_如何在Java中随机播放数组

    参考链接: Java中的数组Array java在数组中放入随机数  There are two ways to shuffle an array in Java.  ...有两种方法可以在Java中随机播放数组。    ...我们可以从数组创建一个列表,然后使用Collections类的shuffle()方法来对其元素进行随机排序。 然后将列表转换为原始数组。    ...请注意,Arrays.asList()仅适用于对象数组。 自动装箱的概念不适用于泛型 。 因此,您不能使用这种方法来为基元改组数组。     2.使用随机随机排列数组 (2....我们可以在for循环中遍历数组元素。 然后,我们使用Random类来生成随机索引号。 然后将当前索引元素与随机生成的索引元素交换。 在for循环的末尾,我们将有一个随机混排的数组

    1.4K00

    从机器学习学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.6K40

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

    题目: 给定一个数组,如 [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 } // 将结果追加到当前行数组

    8010
    领券