问题
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5 输出: 2
示例 2:
输入: [1,3,5,6], 2 输出: 1
示例 3:
输入: [1,3,5,6], 7 输出: 4
示例 4:
输入: [1,3,5,6], 0 输出: 0
解答:
1 public static int SearchInsert(int[] nums, int target) 2 { 3 //定义返回值 4 int result = -1; 5 //做一次排序(题目是有序的,防止面试要求) 6 nums = nums.OrderBy(x => x).ToArray(); 7 //判空 8 if (nums != null && nums.Length > 0) 9 { 10 //循环数组 11 for (var i = 0; i < nums.Length; i++) 12 { 13 //如果找到,直接返回 14 if (target == nums[i]) 15 { 16 return i; 17 } 18 else 19 { 20 //判断目标数是否小于数据元素,条件成立直接返回 21 if (nums[i] > target) 22 { 23 return i; 24 } 25 } 26 } 27 //没找到,说明目标数字比数组中任意数字都大,则放到最末 28 if (result < 0) 29 { 30 return nums.Length; 31 } 32 } 33 return result; 34 }