• 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。


        该题目可以采用二分的思想,查找该元素。实现如下:

    private static String find(int[] arr,int num) {
            int left = 0;
            int right = arr.length - 1;
            while (left <= right){
                if(num < arr[left]){   //未找到之应该插入到最开始位置
                    return "无该元素,应该被插入到:"+0+"号位置";
                }
                if(num > arr[right]){   //未找到之应该插入到最后位置
                    return "无该元素,应该被插入到:"+arr.length+"号位置";
                }
    
                int mid = (right - left + 1)/2 + left;
                if(arr[mid] == num){    //找到
                    return "该元素下标为:"+mid;
                }else if(arr[mid] > num){
                    right = mid - 1;
                }else {
                    left = mid + 1;
                }
                if(arr[mid] < num && arr[mid+1] > num){   //未找到之应该插入到中间某个节点(不用判断mid的合法性,第一个判断,就不会让mid > arr.length -1).
                    return "无该元素,应该被插入到:"+(mid+1)+"号位置";
                }
            }
            return null;
        }

    测试如下:

     int[] arr = {1,3,5,8,11,35,69};
            System.out.println(find(arr,0));
            System.out.println(find(arr,5));
            System.out.println(find(arr,20));
            System.out.println(find(arr,73));

  • 相关阅读:
    zoj 3593 One Person Game
    poj 2115 C Looooops
    hdu 1576 A/B
    hdu 2669 Romantic
    poj1006 Biorhythms
    中国剩余定理(孙子定理)
    Pseudoprime numbers---费马小定理
    青蛙的约会----POJ1061
    [POJ2942]:Knights of the Round Table(塔尖+二分图染色法)
    [BZOJ1718]:[Usaco2006 Jan] Redundant Paths 分离的路径(塔尖)
  • 原文地址:https://www.cnblogs.com/128-cdy/p/12596139.html
Copyright © 2020-2023  润新知