zoukankan      html  css  js  c++  java
  • 457. 经典二分查找问题

    [一刷]报错了无数遍

    一句话思路:对有序整数进行二分查找

    问题:

    1. start,end没有初始化。应该初始化,因为是从第0位查找起的,题目中没说.考虑到有0,end=nums.length - 1
    2. 没有定义mid,也要先定义,不然会报错!!但是一开始不赋值
    3. 返回的是start end的位置,不是数组的数值nums[start],nums[end]
    4. 几个判断并列的时候,可以不写else if,写if就够了。

    格式:

    1. if后要有空格

    总结:要分清楚角标和数字的关系,先定义角标,最后返回的也是角标

    public class Solution {
    /*
    * @param nums: An integer array sorted in ascending order
    * @param target: An integer
    * @return: An integer
    */
    public int findPosition(int[] nums, int target) {
    // write your code here
    if (nums.length == 0) {
    return -1;
    }

    int start = 0;
    int end = nums.length - 1;
    int mid;

    while (start + 1 < end) {
    mid = start + (end - start) / 2;
    if (nums[mid] == target) {
    end = mid;
    } else if (nums[mid] < target) {
    start = mid;
    } else if (nums[mid] > target) {
    end = mid;
    }
    }

    if (nums[start] == target){
    return start;
    }
    if (nums[end] == target){
    return end;
    }
    return -1;
    }
    }

     并列结构是先后编辑的,最好分开:

    if (nums[start] == target){
                return start;
            } if (nums[end] == target){
                return end;
            }
  • 相关阅读:
    这鸡汤、真香
    linux 编译安装python并且安装虚拟环境工具
    前端数据删除
    前后端分离DRF项目初始化
    ubuntu 安装nginx docker
    ubuntu安装vue
    虚拟环境安装
    sql语句优化
    Python之网络编程 进程 线程 协程
    Python之网络编程 文件上传 基于udp的协议的socket socketsever同时接收多方消息
  • 原文地址:https://www.cnblogs.com/immiao0319/p/7872260.html
Copyright © 2011-2022 走看看