java - 两个 sum return 语句不返回任何内容
问题描述
我正在尝试解决一个问题,即我必须在数组中添加两个元素以等于目标整数值。我认为我的代码是正确的,并且会返回所需的目标,但是 return 语句没有返回任何值。为什么会这样,我该如何解决?
谢谢
public static void main(String[] args) {
int[] nums= {2,7,11,15};
int target= 9;
}
public int twoSum(int[] nums, int target) {
int result=0;
for(int i = 0; i<nums.length ;i++){
for(int j=i+1; j<nums.length ;j++ ){
result = nums[i] + nums[j];
if (result == target){
return result;
}else{
break;
}
}
}
}
}
解决方案
break
被错误地使用。此外,您必须return result
. 我不确定这段代码是否可以编译。是吗?你也必须调用 method twoSum(...)
。我看到您的数组已排序,这意味着您实际上可以O(n)
通过使用两个指针来及时解决问题:left
和right
,如下所示:
import java.util.Arrays;
class Solution {
// O(n) time, O(1) space
private static boolean twoNumberSum(int[] array, int sum) {
if (array.length < 2) {
return false;
}
int left_idx = 0;
int right_idx = array.length - 1;
// O(n) time, O(1) space
while (left_idx < right_idx) {
int currentSum = array[left_idx] + array[right_idx];
if (currentSum < sum) {
left_idx++;
}
else if (currentSum > sum) {
right_idx--;
}
else {
return true;
}
}
return false;
}
public static void main(String ...args) {
int[] array = {2, 7, 11, 15};
int valid_sum = 9;
int invalid_sum = 10;
System.out.format("(%s, %d) -> %b\n", Arrays.toString(array), valid_sum, Solution.twoNumberSum(array, valid_sum));
System.out.format("(%s, %d) -> %b\n", Arrays.toString(array), invalid_sum, Solution.twoNumberSum(array, invalid_sum));
}
}
另一种对未排序数组有用的解决方案是使用哈希集 -> O(n) 时间,O(n) 空间。
推荐阅读
- excel - 如何增加 Datatable vb.net 中的行大小
- mysql - 使用 where 条件显示表格
- java - Android - 仅在 oppo 设备中获取 InflateException
- python - 为什么while循环比for循环花费更长的时间?
- javascript - 如何在传单地图上显示热图
- android - PrintManager.print() 并更改了 attachBaseContext 中的语言环境
- java - 尝试检索从 Google 登录下载的位图时出现 Skia 错误
- ios - 为什么 UITableViewCell 的 cellForRowAt 方法没有调用?
- javascript - NodeJs 基于 CSV 输入创建动态 mySql 表
- hyperledger-fabric - Hyperledger Fabric 中的背书策略