代码编织梦想

在这里插入图片描述

from typing import List


class Solution:
    def search(self, nums: List[int], target: int) -> int:
        if not nums:
            return 0

        l, r = 0, len(nums)-1
        while l <= r:
            mid = (l + r) // 2
            if nums[mid] > target:
                r = mid - 1
            elif nums[mid] < target:
                l = mid + 1
            else:
                break

        if l > r:
            return 0

        count = 1
        x = mid - 1
        while x >= 0 and nums[x] == target:
            count += 1
            x -= 1
        x = mid + 1
        r = len(nums) - 1
        while x <= r and nums[x] == target:
            count += 1
            x += 1

        return count


if __name__ == '__main__':
    solution = Solution()
    nums = [5, 7, 7, 8, 8, 10]
    target = 8
    # nums = [5, 7, 7, 8, 8, 10]
    # target = 6
    res = solution.search(nums, target)
    print(res)

[题目源于leetcode]

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/Chasing__Dreams/article/details/109398489

leetcode **381. O(1) 时间插入、删除和获取随机元素 - 允许重复(待研究)(2020.10.31)-爱代码爱编程

【题目】**381. O(1) 时间插入、删除和获取随机元素 - 允许重复 设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。 注意: 允许出现重复元素。 insert(val):向集合中插入元素 val。remove(val):当 val 存在时,从集合中移除一个 val。getRandom:从现有集合中随机获取一个元素。每个

LeetCode 剑指 Offer 04. 二维数组中的查找(深入解析,详细图解)-爱代码爱编程

LeetCode 剑指 Offer 04. 二维数组中的查找 题目描述 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。   示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15],

Leetcode每日一题:381.insert-delete-getrandom-o1-duplicates-allowed(时间插入、删除和获取随机元素-允许重复)-爱代码爱编程

思路:这个题标签标的困难,但实际上没什么难度;随机和插入就用一个vector即可,随机生成len以内的数字temp,然后取出v[temp]就能达到要求;关键是remove这个操作,开始我用的常规遍历删除,发现运行结果为300ms+,看了下官方题解,使用unorder_set存放元素值得下标可在O(1)时间复杂度下完成; class Randomized

LeetCode 108 将有序数组转换为二叉搜索树-爱代码爱编程

题目描述: 代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; }

[M设计+哈希表] lc380. 常数时间插入、删除和获取随机元素(设计+哈希表)-爱代码爱编程

文章目录 1. 题目来源2. 题目说明3. 题目解析 1. 题目来源 链接:lc380. 常数时间插入、删除和获取随机元素 2. 题目说明 3. 题目解析 设计数据结构,实现三个操作: O (

02.04 分割链表-爱代码爱编程

原题目 面试题 02.04. 分割链表 编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。 示例: 输入: head = 3->5->8->5->10

python--剑指offer--简单--52. 两个链表的第一个公共节点-爱代码爱编程

class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -&g

新发的日常小实验——使用python三秒搭建一个简单web服务器(SimpleHTTPServer、http.server、webserver)-爱代码爱编程

文章目录 一、前言二、编写一个html二、python2搭建简单web服务器(SimpleHTTPServer)三、python3搭建简单web服务器(http.server) 一、前言 有很多种方式可以建一个web服务器。有时候我们只是想做一个简单的测试,想用最简单的方式快速搭建一个web服务器,这个时候,可以考虑使用python自带的ht

LeetCode—整数反转-爱代码爱编程

题目地址 题目名称:两数之和 难度:⭐ 题目描述: 给出一个32位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例1: 输入:123 输出:321 示例2: 输入:-123 输出:-321 示例3: 输入:120 输出:21 注意: 假设我们的环境只能存储得下32位的有符号整数,则其数值范围为[-231,231-1

python--剑指offer--53 - II. 0~n-1中缺失的数字-爱代码爱编程

from typing import List class Solution: def missingNumber(self, nums: List[int]) -> int: # 注意题目要求数组长度为n-1,则该数组的取值范围为[0, n-1]共n个数,数组中保存这n个数的(n-1)个数,需找出未保存的那个数

python--剑指offer--简单--54. 二叉搜索树的第k大节点-爱代码爱编程

代码 class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def kthLargest(self, root: TreeNode, k

python--剑指offer--55 - I. 二叉树的深度-爱代码爱编程

方法一:后序遍历(DFS) 复杂度分析: 时间复杂度 O(N): N 为树的节点数量,计算树的深度需要遍历所有节点。空间复杂度 O(N): 最差情况下(当树退化为链表时),递归深度可达到 N 。class TreeNode: def __init__(self, x): self.val = x self.le