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

多维数组取值问题

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

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

    【说站】js数组如何理解

    js数组如何理解 1、js数组是值的有序集合,每个值称为元素或元素。 每个元素在数组中都有一个位置,用数字表示,称为索引或下标。 2、js数组没有类型,数组元素可以是任何类型。...同一数组中的不同元素可能是对象或数组,可以重复如何顺序。 3、数组元素的索引不一定是连续的,可以有间隙。 每个数组都有一个lengrh属性,length属性是数组元素的数量。...实例 var nums = []; for(var i =0 ;i <=10; i++){   nums[i] = i+1; } var samenums = nums;/*只是为被赋值的数组增加了一个新的引用...*/ nums[0] = 400;/*当改变nums数组的值得时候samenums的值也会变*/ console.log(samenums) 以上就是js数组的理解,希望对大家有所帮助。

    1.2K30

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

    不想写太多 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 动态判断数组维数并取值

    不想写太多 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

    Postgresql中plpgsql数组的赋值与取值分析

    总结 数组赋值 如果是默认值数组 编译时只组装expr出来记录ARRAY[1,2,3,4,5] 在执行赋默认值时走执行器把expr变成value记录到datum中 执行时语义解析阶段就会把只拼出来...如果是传入数组,直接当做常量赋值即可。 数组取值 取值阶段即调用SPI执行"x = arr[3];"语句的过程,注意赋值逻辑全部交给PG执行器,PL只给回调用于查询变量。...cursor_options = 0, value = 0, isnull = true, freeval = false, promise = PLPGSQL_PROMISE_NONE} 【如何赋值...expr_simple_plan_lxid = 0, expr_simple_state = 0x0, expr_simple_in_use = false, expr_simple_lxid = 0} 【如何取值...】数组取值给普通变量 x = arr[3]; exec_stmt_assign exec_assign_expr exec_assign_expr 阶段一:exec_prepare_plan

    1.6K20

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

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

    83230

    js数组浅拷贝_js数组深度复制

    数组的浅拷贝, 可用concat、slice返回一个新数组的特性来实现拷贝 var arr = ['old', 1, true, null, undefined]; var new_arr = arr.concat...source.a.b = 10; console.log(source); // { a: { b: 10 } }; console.log(target); // { a: { b: 10 } }; 但是如果数组嵌套了对象或者数组的话用...== 'object') return; // 根据obj的类型判断是新建一个数组还是一个对象 var newObj = Array.isArray(obj) ?...,就会拷贝一份,互不影响,而如果是对象或者数组,就会只拷贝对象和数组的引用,这样我们无论在新旧数组进行了修改,两者都会发生变化。...数组的深拷贝 方法一:JSON.stringify()不仅可拷贝数组还能拷贝对象(但不能拷贝函数,也不能解决循环引用问题) var arr = ['old', 1, true, ['old1', 'old2

    13.2K50

    【说站】js一维数组如何访问

    js一维数组如何访问 1、访问数组就是访问数组元素。可以使用数组名[下标表达式] 的形式来进行访问,读写数组。 2、下标表达式是值为非负整数的表达式。...例如上文中的 delete a[1] 就是使用delete关键字删除a数组中下标为1的元素(即删除第二个元素)。...还有: var a = [];  //空数组 a[0]=1; a[2]="hello"; 就是分别为a数组中下标为0和2的元素赋值,下标为1的元素的值没有赋值则为undefined。...console.log(a[2]);  //读取第三个元素,返回值为hello 以上就是js一维数组的访问方法,希望对大家有所帮助。...更多js学习指路:js教程 推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

    86510

    html js 数组添加,js数组添加数据

    本文介绍js数组添加数据的三种方法:1、结尾添加push()方法;2、头部添加unshift() 方法;3、向/从数组指定位置添加/删除项目,然后返回被删除的项目splice() 方法。...要添加到数组的第一个元素。 b:可选。要添加到数组的第二个元素。 c:可选。可添加多个元素。 3、返回值 把指定的值添加到数组后的新长度。...向数组添加的第一个元素。 b:可选。向数组添加的第二个元素。 c:可选。可添加若干个元素。 3、返回值 arrayObject 的新长度。...整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 b:必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1,…..,itemX:可选。向数组添加的新项目。...tony alert(arr.splice(1,0,’tony’)) //返回值为空 alert(arr) // smile,tony,2,3,marie 以上就是js数组添加数据的四种方法,大家可以根据在不同的位置添加数据选择不同的方法哦

    26.1K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券