当前位置:   article > 正文

算法面试题之:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target 的位置_给定一个有序的(升序)整型数组 nums以及一个整型数值target ,判断target 是否在 n

给定一个有序的(升序)整型数组 nums以及一个整型数值target ,判断target 是否在 nums 中,若target 在 nums 中,输出yes,否则输出no。

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

  第一种解法普通遍历效率最低

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. Boolean flag=false;
  4. int count=-1;
  5. if(nums.length == 0){
  6. count= -1;
  7. }
  8. for(int i=0;i<=nums.length-1;i++){
  9. if(nums[i] == target){
  10. flag=true;
  11. count= i;
  12. }
  13. }
  14. if(flag == false){
  15. count= -1;
  16. }
  17. return count;
  18. }
  19. }

第二种二分查找法

  1. class Solution {
  2. public int search(int[] nums, int target) {
  3. int left = 0;
  4. int right = nums.length - 1; // 注意
  5. while(left <= right) {
  6. int mid = (right + left) / 2;
  7. if(nums[mid] == target)
  8. return mid;
  9. else if (nums[mid] < target)
  10. left = mid + 1; // 注意
  11. else if (nums[mid] > target)
  12. right = mid - 1; // 注意
  13. }
  14. return -1;
  15. }
  16. }

效率差别多少呢

[-1,0,3,5,9,12] 9 答案是4

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/208869
推荐阅读
相关标签
  

闽ICP备14008679号