`
wx1568520008
  • 浏览: 20397 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

二分笔记

 
阅读更多

####二分查找模板

  1. 边界初始化
  2. 循环条件
  3. 取中位数
  • +1 取右中位数,反之左中位数
  1. 循环内只有两个分支
  • 排除中位数逻辑
  1. 循环结束处理中位数相等情况

#####demo 35 二分查找

class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        left = 0 ;
        right = len(nums)-1
        while(left<right):
            mid = (left+right)>>1
            #排除中位数逻辑
            if(nums[mid]<target):

                left = mid + 1
            else:
                right = mid

        if(nums[left] ==  target):
            return left

        return -1

leetcode 69 x的平方根


class Solution(object):
    def mySqrt(self, x):
        """
        :type x: int
        :rtype: int
        """
        left = 0
        right = x//2
        while(left<right):
            mid = (left+right+1)>>1

            if(mid*mid>x):
                right = mid-1
            else:
                left = mid
        return left

300 最长上升子序列


将 dp 数组定义为:以 nums[i] 结尾的最长上升子序列的长度那么题目要求的,就是这个 dp 数组中的最大者以数组 [10, 9, 2, 5, 3, 7, 101, 18] 为例dp 的值: 1 1 1 2 2 3 4 4


输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
def lengthOfLIS(self, nums):
     size = len(nums)
     # 特判
     if size <= 1:
         return size

     dp = [1] * size
     for i in range(1, size):
         for j in range(i):
             if nums[i] > nums[j]:
                 # + 1 的位置不要加错了
                 dp[i] = max(dp[i], dp[j] + 1)
     # 最后要全部一看遍,取最大值
     return max(dp)

转载于:https://my.oschina.net/ShamerZhao/blog/3081294

分享到:
评论

相关推荐

    笔记笔记笔记笔记笔记笔记

    笔记中应包括线性结构(如数组、链表)、树形结构(如二叉树、堆)、图结构以及各种排序和查找算法(如冒泡排序、快速排序、二分查找等)。理解和实践这些概念能提高代码效率,解决复杂问题。 操作系统笔记通常涵盖...

    算法笔记1_算法笔记PAT_算法笔记_

    二分搜索在已排序的数组中查找元素具有高效性,而图的搜索算法则常用于解决网络问题,如最短路径问题。 图算法是解决复杂问题的关键,如Dijkstra算法用于找出单源最短路径,Floyd-Warshall算法用于求解所有对最短...

    韦东山二期驱动笔记

    【韦东山二期驱动笔记】是一份针对Linux驱动程序开发的参考资料,由知名Linux技术专家韦东山编撰。这份笔记深入浅出地讲解了Linux内核驱动开发的基础与实践,旨在帮助读者理解和掌握Linux系统下的设备驱动编写技巧。...

    课堂笔记06(二分查找-二维数组-数组的复制)共2页.pd

    这篇课堂笔记主要涵盖了三个核心的计算机科学概念:二分查找、二维数组以及数组的复制。这些知识点在编程学习,特别是数据结构与算法的学习中占据着重要地位。 首先,我们来详细探讨二分查找。二分查找,也被称为...

    李兴华j2se不分的所有笔记

    二、数组与方法篇 2. 第4章:数组与方法 - 数组的定义及使用笔记:深入解析了数组的创建、初始化和使用,包括一维数组、多维数组以及数组的操作。 - 方法的声明及使用笔记:介绍了方法的定义、参数传递、返回值...

    周三多 管理学 第二版笔记,分章整理.

    这份笔记是根据该教材的第二版内容进行的详细整理,旨在帮助读者更有效地掌握管理学的核心知识。 笔记涵盖的内容广泛,包括了管理学的各个主要领域,如管理的职能(计划、组织、领导、控制)、管理理论的发展、决策...

    大物上册手写笔记.pdf

    这份笔记由一位期末成绩达到90分以上的同学编写,因此具有很高的参考价值,适合学生在期末复习时使用。笔记内容可能包括了力学、热学、电磁学等基础物理学领域的核心概念、定律、公式以及典型问题的解析。 在力学...

    数据结构高分笔记part1

    查找算法如顺序查找、二分查找、哈希表查找等也会被详细讨论。 5. **动态规划与递归**:笔记可能包含解决复杂问题的动态规划方法,以及递归的原理和应用,比如斐波那契序列、汉诺塔问题等经典案例。 6. **复杂度...

    JAVA开发二分搜索动态演示

    在Java开发中,二分搜索是一种非常重要的数值算法,它被广泛应用于大数据处理、数据库查找以及各种优化问题中。这个“JAVA开发二分搜索动态演示”项目,显然是一个小型的软件应用,它通过动态的方式展示了二分搜索...

    算法笔记3_算法笔记_浙大_

    搜索算法如二分查找、深度优先搜索(DFS)和广度优先搜索(BFS)。 2. **数据结构**:数据结构是算法的基础,笔记中会详细讲解线性结构(数组、链表)、树结构(二叉树、平衡树如AVL和红黑树)、图结构(邻接矩阵、...

    日语二级副词 日语学习笔记 日语综合语法难点+笔记

    在日语学习的过程中,副词是提升语言表达...通过上述的“日语学习笔记”、“日语综合语法难点+笔记”和“日语二级副词”三份资料,学习者可以从各个方面深入理解和掌握这一语言要素,为日语水平的提升打下坚实的基础。

    【Leetcode刷题笔记01】704.二分查找 27.移除元素.md

    二分查找和27.移除元素,记录了详细的题目解析思路以及Java语言的参考代码。 适合人群:学习算法和数据结构的程序员或学生,想要通过LeetCode来提高编程能力的人。 能学到什么:掌握二分查找算法的实现原理;了解双...

    数据结构笔记:二分查找

    对比序列的中间值,小于该值从左序列中二分查找,大于该值从右序列中二分查找,直到查找到目标值或子序列只有一个元素截止 实现 递归实现 def binarysearch(alist, item): '''二分查找_递归实现''' n = len(alist)...

    算法笔记4_pat参考书_算法笔记_

    此外,还涉及搜索算法,如二分查找和广度优先搜索(BFS)、深度优先搜索(DFS),这些都是解决图论和树形结构问题的基础。 其次,数据结构是算法的基石,书中的内容涵盖了数组、链表、栈、队列、哈希表、树(二叉树...

    《算法笔记》pdf版,欢迎下载学习~

    1. **排序与搜索算法**:包括快速排序、归并排序、堆排序、二分查找等经典算法,这些都是解决数据组织和检索问题的基础。 2. **图论**:如深度优先搜索(DFS)、广度优先搜索(BFS)、最小生成树(Prim或Kruskal)...

    康奈尔大学做笔记的方法

    #### 二、符号记录法 符号记录法是在阅读材料旁标注符号以突出重点的方法。通过使用一系列个人定制的符号(如直线、双线、圆圈等),可以帮助读者快速定位重要信息。 - **读完后再做记号**:在完全理解了一段文字...

    小迪安全笔记,详细版本

    【小迪安全笔记】详细介绍了网络安全领域的多个关键知识点,涵盖了域名、DNS系统、CDN、DNS攻击、脚本语言以及后门等方面。 1. **域名**:域名是互联网上识别计算机或计算机组的名称,由点分隔的名字组成,如...

    编译原理课堂笔记 史上最详细 最牛逼的编译笔记

    本笔记对编译原理课程进行了详细的笔记,涵盖了编译程序概论、编译过程概述及编译程序的结构、编译程序的分遍、文法和语言等内容。笔记中对编译程序的定义、功能、分类和实现过程进行了详细的解释,并对编译过程的六...

    labuladong的算法秘籍+刷题笔记V2.0

    书中可能包含了常见的排序算法(如快速排序、归并排序)、搜索算法(如二分查找、深度优先搜索)、图论问题(如最短路径算法、最小生成树)以及动态规划等核心概念。此外,它也可能讨论了如何优化代码效率,如何使用...

Global site tag (gtag.js) - Google Analytics