python二分法结果图_python 二分法模板——牢记

class Solution:

# @param nums: The integer array

# @param target: Target number to find

# @return the first position of target in nums, position start from 0

def binarySearch(self, nums, target):

if len(nums) == 0:

return -1

start, end = 0, len(nums) - 1

# 用 start + 1 < end 而不是 start < end 的目的是为了避免死循环

# 在 first position of target 的情况下不会出现死循环

# 但是在 last position of target 的情况下会出现死循环

# 样例:nums=[1,1] target = 1

# 为了统一模板,我们就都采用 start + 1 < end,就保证不会出现死循环

while start + 1 < end:

# python 没有 overflow 的问题,直接 // 2 就可以了

# java和C++ 最好写成 mid = start + (end - start) / 2

# 防止在 start = 2^31 - 1, end = 2^31 - 1 的情况下出现加法 overflow

mid = (start + end) // 2

# > , =, < 的逻辑先分开写,然后在看看 = 的情况是否能合并到其他分支里

if nums[mid] < target:

# 写作 start = mid + 1 也是正确的

# 只是可以偷懒不写,因为不写也没问题,不会影响时间复杂度

# 不写的好处是,万一你不小心写成了 mid - 1 你就错了

start = mid

elif nums[mid] == target:

end = mid

else:

# 写作 end = mid - 1 也是正确的

# 只是可以偷懒不写,因为不写也没问题,不会影响时间复杂度

# 不写的好处是,万一你不小心写成了 mid + 1 你就错了

end = mid

# 因为上面的循环退出条件是 start + 1 < end

# 因此这里循环结束的时候,start 和 end 的关系是相邻关系(1和2,3和4这种)

# 因此需要再单独判断 start 和 end 这两个数谁是我们要的答案

# 如果是找 first position of target 就先看 start,否则就先看 end

if nums[start] == target:

return start

if nums[end] == target:

return end

return -1

LeetCode 新题&colon; Find Minimum in Rotated Sorted Array 解题报告-二分法模板解法

Find Minimum in Rotated Sorted Array Question Solution Suppose a sorted array is rotated at some piv ...

python 二分法查找实例(递归、循环)

二分法,主要应用于有序序列中,原理是每次查找都将原序列折半,逐渐缩小查找范围的一种算法. 需求 要求在一个有序序列中,例如[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 ...

python django 模板

1 用两个大括号括起来的文字{{person_name}} 称为变量 2 被 大括号和面分号包围的文件({% if ordered_warranty %})是模板标签 3 过滤器是用管道符(|) 和U ...

【Python】Python Mako模板使用

参考资料: Mako Templates for Python官网:http://www.makotemplates.org/ Python模板库Mako的用法:http://my.oschina.n ...

Python脚本模板

1.Python脚本规范基础模板 #coding:utf8 import time, re, os, sys, time,urllib2,shutil,string import json,datet ...

怎么用Python Flask模板jinja2在网页上打印显示16进制数?

问题:Python列表(或者字典等)数据本身是10进制,现在需要以16进制输出显示在网页上 解决: Python Flask框架中 模板jinja2的If 表达式和过滤器 假设我有一个字典index, ...

python使用模板手记

1.首先是$符号 在webpy中,模板html里面可以写python代码,但要用$开始.但如果网页代码本来就有$符号(javascript或者正则表达式),我们需要对其进行转意.用$$代替$ 给jqu ...

Python - 字符串模板的安全替换&lpar;safe&lowbar;substitute&rpar; 具体解释

字符串模板的安全替换(safe_substitute) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27057339 ...

pycharm设置python脚本模板

PyCharm PyCharm是一个有名的Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成 ...

随机推荐

Python操作Excel之xlrd

import xlrdworkbooks=xlrd.open_workbook("test.xlsx")print(workbooks.sheet_names())#获取sheet ...

NSData与其它类型的转换

NSString转换成NSData对象 NSData *xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding] ...

Java for LeetCode 236 Lowest Common Ancestor of a Binary Tree

解题思路一: DFS到每个节点的路径,根据路径算出LCA: public class Solution { public TreeNode lowestCommonAncestor(TreeNode ...

Python之Django--ORM连表操作

一对多 class UserType(models.Model): caption = models.CharField(max_length=32) class UserInfo(models.Mo ...

iOS&colon; 悬浮的条件筛选框使用二

一.介绍: 在前面已经介绍了一种条件悬浮框,使用的是tableView的Plain分组样式实现的,因为这是tableView本身就具备的功能,分组悬浮效果.这次我来介绍第二种更加简单的方法,采用两个S ...

Linux中Samba详细安装

为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互 ...

Android Drawable绘图学习笔记&lpar;转&rpar;

如何获取 res 中的资源 数据包package:android.content.res 主要类:Resources Android SDK中的简介:Class for accessing an ap ...

Jenkins安装plugin

Jenkins支持很多的plugin,这些plugin极大地丰富了Jenkins的功能.安装plugin有两种方式:自动安装和手动安装. 1.自动安装 这种方式非常简单,但前提是Jenkins必须连接 ...

PowerPoint实用知识

纯手打,可能有错别字,使用的版本是office2013 转载请注明出处 http://www.cnblogs.com/hnnydxgjj/p/6347256.html ,谢谢 母版的使用 制作PPT的 ...

揭秘 HashMap 实现原理(Java 8)

HashMap 作为一种容器类型,无论你是否了解过其内部的实现原理,它的大名已经频频出现在各种互联网面试中了.从基本的使用角度来说,它很简单,但从其内部的实现来看(尤其是 Java 8 的改进以来), ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值