zoukankan      html  css  js  c++  java
  • leetcode ——34.在排序数组中查找元素的第一个和最后一个位置

    class Solution:
        def searchRange(self, nums: List[int], target: int) -> List[int]:
            a=nums.count(target)
            if a==0:
                return [-1,-1]
            else:
                d=nums.index(target)
                if a==1:
                    return [d,d]
                else:
                    return [d,d+a-1]
    执行用时 :112 ms, 在所有 Python3 提交中击败了77.01%的用户
    内存消耗 :15 MB, 在所有 Python3 提交中击败了5.30%的用户
     
    别人有运行时间短的例子,但是我看不进去了,只能挑最简单的方法来做了。。。
    脑子已经运行不动了。
     
                                                                                        ——2019.10.8
     

    二分法
    public int[] searchRange(int[] nums, int target) {
            //二分法
            int len = nums.length;
            if(len == 0){
                return new int[]{-1,-1};
            }
            if(len == 1){
                if(nums[0] != target){
                    return new int[]{-1,-1};
                }else{
                    return new int[]{0,0};
                }
            }
            int left = 0,right = len;
            while (left < right) {
                int mid = left + (right - left) / 2;
                if (nums[mid] == target) {  //左右两边扩散搜索
                    int k = mid - 1;
                    while (k >= left) {
                        if (nums[k] == target) {
                            k--;
                        } else {
                            break;
                        }
                    }
                    while (mid + 1 < right) {
                        if (nums[mid + 1] == target) {
                            mid++;
                        } else {
                            break;
                        }
                    }
                    return new int[]{k + 1, mid};
                } else if (nums[mid] > target) {
                    right = mid;
                }else{
                    left = mid+1;
                }
            }
            return new int[]{-1,-1};
        }

    ——2020.7.14

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    Winefish-GTK LaTeX 编辑器
    GPuTTY:SSH 会话治理器
    Zudeo──高清版 Youtube
    HardInfo-体系信息搜集对象
    Liferea 1.2.0 正式版
    HomeBank:家庭理财软件
    ParolaPass:暗码天生器
    VLC Media Player 0.8.6
    流程图的绘制方法
    Delphi 2009 中的匿名方法(reference to)
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11636758.html
Copyright © 2011-2022 走看看