题目
给定一个包含 n 个整数的数组 nums
和一个目标值 target
,判断 nums
中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target
相等?找出所有满足条件且不重复的四元组。
注意:答案中不可以包含重复的四元组
示例
1 | 输入:nums = [1, 0, -1, 0, -2, 2],和 target = 0 |
弄清楚 Thunk 函数的前提下先看两个定义,什么是求值策略?
求值策略即编程语言的函数在进行参数传递时,函数的参数到底应该什么时候进行计算求值比较好;这里也是一个争论点,观点一是“传值调用(call by value)”,观点二是“传名调用(call by name)”;那么这两种观点有什么区别呢?
例如:
1 | var x = 1; |
在这个函数上如果用传值调用(call by value)的话,即在进入函数体之前就计算 x + 5 的值(等于 6),再将已经求出的这个值传入函数 f;c 语言就是这种策略。
1 | f(x + 5) |
还是前面的例子,如果用传名调用(call by name)的话,即直接将表达式 x + 5 传入函数体,只在函数体内部用到它的时候进行求值; Hskell 语言就是采用的这种策略。
1 | f(x + 5) |