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

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    周日讲课材料下载
    基础图论练习题
    邻接表存图的小trick(存多个图)
    0/1分数规划
    四道期望题
    基础线性代数大记(二)三道高消题
    基础线性代数大记 (一)前言与行列式的定义
    概率期望小记
    基础线性代数小记
    给二维数组排版
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11636758.html
Copyright © 2011-2022 走看看