Java 为什么会有2';类型'的非法启动;我的二进制搜索代码出错? 公共类解决方案{ /* *@param nums:按升序排序的整数数组 *@param target:一个整数 *@return:整数 */ 公共int findPosition(int[]nums,int target){ //在这里编写代码 如果(nums.length=0){ 返回-1; } int start=0; int end=num.length-1; int mid; while(开始+1
您的代码似乎有以下错误Java 为什么会有2';类型'的非法启动;我的二进制搜索代码出错? 公共类解决方案{ /* *@param nums:按升序排序的整数数组 *@param target:一个整数 *@return:整数 */ 公共int findPosition(int[]nums,int target){ //在这里编写代码 如果(nums.length=0){ 返回-1; } int start=0; int end=num.length-1; int mid; while(开始+1,java,binary-search,Java,Binary Search,您的代码似乎有以下错误 public class Solution { /* * @param nums: An integer array sorted in ascending order * @param target: An integer * @return: An integer */ public int findPosition(int[] nums, int target) { // write your
public class Solution {
/*
* @param nums: An integer array sorted in ascending order
* @param target: An integer
* @return: An integer
*/
public int findPosition(int[] nums, int target) {
// write your code here
if (nums.length = 0) {
return -1;
}
int start = 0;
int end = num.length - 1;
int mid;
while (start + 1 < end) {
mid = start + (end - start) / 2;
if (nums[mid] == target) {
end = mid;
} else if (nums[mid] < target) {
start = mid;
} else if (nums[mid] > target) {
end = mid;
}
}
if (nums[start] == target) {
return start;
}
if (nums[end] == target) {
return end;
}
}
return -1;
}
应该是本
if (nums.length = 0) {
return -1;
}
也
应该是
int end = num.length - 1;
您的无错误代码如下所示
int end = nums.length - 1;
public int findPosition(int[]nums,int target){
//在这里编写代码
如果(nums.length==0){
返回-1;
}
int start=0;
int end=nums.length-1;
int mid;
while(开始+1<结束){
mid=开始+(结束-开始)/2;
如果(nums[mid]==目标){
结束=中间;
}否则如果(nums[mid]目标){
结束=中间;
}
}
如果(nums[开始]==目标){
返回启动;
}
如果(nums[end]==目标){
返回端;
}
返回-1;
}
它看起来像return-1
在方法之外。如果(nums.length=0)
-始终为true。它是在做赋值,而不是比较nums.length==0
@ScaryWombat不是用任何类似这样的语言。赋值表达式的值将是已赋值的值,在本例中为0
。在Java中,0
不能转换为布尔值。在弱类型语言中,它将被转换为布尔值false。谢谢。解决了的。
int end = nums.length - 1;
public int findPosition(int[] nums, int target) {
// write your code here
if (nums.length == 0) {
return -1;
}
int start = 0;
int end = nums.length - 1;
int mid;
while (start + 1 < end) {
mid = start + (end - start) / 2;
if (nums[mid] == target) {
end = mid;
} else if (nums[mid] < target) {
start = mid;
} else if (nums[mid] > target) {
end = mid;
}
}
if (nums[start] == target) {
return start;
}
if (nums[end] == target) {
return end;
}
return -1;
}