第三个测试用例PHP for循环不递增
Third test case PHP for loop does not increment
给定一个整数数组 nums 和一个整数 target,return 两个数字的索引使得它们加起来等于 target。我尝试了以下解决方案的一些修改版本。
function twoSum($nums, $target) {
$arr = array();
for($i = 0; $i < count($nums); $i++){
if($nums[$i] + $nums[$i+1] == $target){
array_push($arr, array_search($nums[$i], $nums), array_search($nums[++$i], $nums));
break;
}
}
return $arr;
}
当通过三个测试用例时,前两个 return 最后一个案例的正确结果 return 第一个正确的索引,但最后一个索引(技术上)不正确。
使用的测试用例:
nums = [2,7,11,15], 目标 = 9
预期输出:[0,1]
实际输出:[0,1]
nums = [3,2,4], 目标 = 6
预期输出:[1,2]
实际输出:[1,2]
nums = [3,3], 目标 = 6
预期输出:[0,1]
实际输出:[0,0]
您的方法不正确,因为您假设 2 个连续的索引可以导致此行中的目标值,这是不正确的。这对可以是任意组合。
$nums[$i] + $nums[$i+1] == $target
它也不考虑 $i + 1
的索引越界异常。无论如何,其余代码肯定会朝着错误的方向发展。
解决这个问题的步骤非常简单。
使用一个简单的关联数组,例如 $set
,它将键存储为数组元素,将值存储为该元素在数组中的索引。
现在,当遍历数组时,如果 target - current_element
键(另一个数字)存在于 $set
中,你就得到了对。
片段:
<?php
function twoSum($nums, $target) {
$set = [];
foreach($nums as $index => $curr_element){
$cousin_value = $target - $curr_element;
if(isset( $set[ $cousin_value ] )){
return [ $set[ $cousin_value ], $index ];
}
$set[ $curr_element ] = $index;
}
return -1;
}
print_r(twoSum([3,3],6));
给定一个整数数组 nums 和一个整数 target,return 两个数字的索引使得它们加起来等于 target。我尝试了以下解决方案的一些修改版本。
function twoSum($nums, $target) {
$arr = array();
for($i = 0; $i < count($nums); $i++){
if($nums[$i] + $nums[$i+1] == $target){
array_push($arr, array_search($nums[$i], $nums), array_search($nums[++$i], $nums));
break;
}
}
return $arr;
}
当通过三个测试用例时,前两个 return 最后一个案例的正确结果 return 第一个正确的索引,但最后一个索引(技术上)不正确。
使用的测试用例:
nums = [2,7,11,15], 目标 = 9
预期输出:[0,1]
实际输出:[0,1]nums = [3,2,4], 目标 = 6
预期输出:[1,2]
实际输出:[1,2]nums = [3,3], 目标 = 6
预期输出:[0,1]
实际输出:[0,0]
您的方法不正确,因为您假设 2 个连续的索引可以导致此行中的目标值,这是不正确的。这对可以是任意组合。
$nums[$i] + $nums[$i+1] == $target
它也不考虑 $i + 1
的索引越界异常。无论如何,其余代码肯定会朝着错误的方向发展。
解决这个问题的步骤非常简单。
使用一个简单的关联数组,例如
$set
,它将键存储为数组元素,将值存储为该元素在数组中的索引。现在,当遍历数组时,如果
target - current_element
键(另一个数字)存在于$set
中,你就得到了对。
片段:
<?php
function twoSum($nums, $target) {
$set = [];
foreach($nums as $index => $curr_element){
$cousin_value = $target - $curr_element;
if(isset( $set[ $cousin_value ] )){
return [ $set[ $cousin_value ], $index ];
}
$set[ $curr_element ] = $index;
}
return -1;
}
print_r(twoSum([3,3],6));