【发布时间】:2019-05-28 08:08:46
【问题描述】:
问题:
给定一个按升序排序的整数数组,找到 给定目标值的开始和结束位置。
示例:输入:nums = [5,7,7,8,8,10],目标 = 8 输出:[3,4]
我的代码:
class Solution34{
public int[] searchRange(int[] nums, int target) {
ArrayList<Integer> index=new ArrayList<>();
for(int i=0;i<nums.length;i++){
if(nums[i]==target){
index.add(i);
}
}
Integer[] index_arr = new Integer[index.size()];
index_arr = index.toArray(index_arr);
System.out.println(index);
return index_arr;
}
}
System.out.println(index) - 我的代码给了我想要的输出。(如果我省略 return 语句)。
我在最后一行 return index_arr 中遇到错误。错误:不兼容的类型:必需的 int[] 找到 Java.lang.Integer。
然后我搜索如何将 Integer 转换为 int 并找到 .int.Value 用于将 Integer 转换为 int。当我在我的代码中使用它时,我得到了另一个无法识别的错误命令。如何将 Integer 转换为 int[]?
【问题讨论】:
-
我在这里遗漏了什么吗?为什么还要使用 ArrayList?由于数组是排序的,所以只需要两个值来获取一个range,第一个找到目标值first的索引值和找到最后一个目标值。 必须之间的任何内容都是相同的目标值。我也会使用一个 2 元素 int[] 数组,每个元素都初始化为 -1。然后在填充后返回该数组。尽管示例数组很小,但一旦迭代的数组元素值大于目标值,跳出循环可能不会有什么坏处。
-
我想你应该做一些事情来使用输入已排序的事实......
-
对于这个问题,你应该尝试用二分搜索找出
O(lgn)的解决方案。
标签: java class for-loop integer