标签:
该题实际上就是查找,想法一:顺序查找,看看leetcode会不会报超时:
int searchInsert(vector<int>& nums, int target) { int len=nums.size(); if (len==0) return 0; int i=0; while(i<len) { if(nums[i]<target) i++; if(nums[i]==target) return i; if(nums[i]>target) return i; } }
结果:8ms,AC了。
二分查找应该会比顺序查找快啊,于是二分查找的思想实现:
int searchInsert(vector<int>& nums, int target) { int len=nums.size(); if (len==0) return 0; int low=0; int high=len-1; while(low<=high) { int mid=(low+high)/2; if(nums[mid]>target) high=mid-1; else if(nums[mid]==target) return mid; else low=mid+1; } return low; }
结果很震惊:
可以看到,第一次的二分查找竟然12ms,后两次都是8ms,并没有比顺序查找好。
原因可能是系统的测试用例的数组长度都比较短吧,体现不出二分查找的优势。
LeetCode 23:Search Insert Position
标签:
原文地址:http://www.cnblogs.com/acode/p/4545743.html