@XQF
2018-03-07T14:57:47.000000Z
字数 1036
阅读 1203
数据结构与算法
问题描述:给定数组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);}}
