@XQF
2018-03-07T22:57:47.000000Z
字数 1036
阅读 1107
数据结构与算法
问题描述:给定数组a={3,4,5,6,7,8,9,8},这个数组中相邻元素之差都为1,给定数字9,他在数组中第一次出现的位置?
也就是最简单的遍历了,。
那就是利用题中的相邻之差为1,根据题意看出是绝对值。
突破口就是数组的第一个元素。利用示例,给出的数字为9,那么我就马上去查看index=9-nums[0]的位置。因为假如数组递增的话这个位置就解决问题了,假如不是递增,那么,。,。该目标数一定会在这个新的index后面。。。中间的index就可以跳过不查了
第一发跳跃式,。,。,只跳跃了几个
public int findIndex(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return -1;
}
int index = 0;
if (target != nums[0]) {
if (target > nums[0]) {
index = target - nums[0];
} else if (target < nums[0]) {
index = nums[0] - target;
}
for (int i = index; i < nums.length; i++) {
if (nums[i] == target) {
return i;
}
}
}
return 0;
}
第二发跳跃式
public class Solution {
public int findIndex(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return -1;
}
int index = 0;
while (target != nums[index]) {
if (target > nums[index]) {
index = target - nums[index];
} else if (target < nums[index]) {
index = nums[index] - target;
}
}
return index;
}
public static void main(String[] args) {
Solution solution = new Solution();
int[] nums = {4, 5, 6, 4, 5, 7, 9, 0};
int result = solution.findIndex(nums, 5);
System.out.println("result:" + result);
}
}