自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 TiCDC Canal-JSON 消息接收示例(Java 版)

本文以一张用户表的数据变更为例,来展示 Java 服务端接收一条 TiCDC Canal-JSON 的消息变更,解析数据,并转发给对应的业务处理程序的流程。

2023-08-26 15:06:24 311

原创 一次多表关联顺序的慢查询——TiDB 关联特性

TiDB 支持了几乎 100% 的 MySQL 语法,但还是会有很多由于实现、分布式等原因导致由一些独有的特性。因此,在使用时,不能经验主义,每个 SQL 还是要老老实实在 TiDB 中执行一次,确认是否符合预期。如果不符合预期,那也不用怕,TiDB 的论坛和文档很丰富,慢慢看,别着急,总有一款适合你的解决方案。

2022-11-27 14:36:34 631

原创 Java 必知必会——分层思维

1. 软件架构软件程序通常由两方面需求组成:功能性需求:程序能为用户做什么,比如,查看订单信息、下单等。非功能性需求:除功能性需求以外的其他必要需求,比如,访问性能、安全性、容错和恢复、本地化、国际化等。非功能性需求所构建起来的正是我们所认知的软件架构。什么是软件架构?简单来说就是软件组成的基本结构,主要为三个要素:代码、代码之间的关系和两者各自的属性。最经典的软件架构就是分层架构,也就是将软件系统分层。2. 什么是代码分层架构?想知道代码分层结构是什么,就要从软件部署分层架构开始。

2021-07-25 13:34:33 403 1

原创 Java 必知必会——Unix哲学和组合思维

组合思维可以说是来自于Unix的设计哲学:主张组合设计,而不是单体设计;主张使用集体智慧,而不是某个人的特殊智慧。Unix哲学发展至今,诞生了无数优秀的设计原则和最佳事件。其中,对于编程来说,最有价值的原则就是 Peter H. Salus 总结的三条原则:编写可以做一件事并且做的很好的程序。编写程序以协同工作。编写程序来处理文本流,因为这是一个通用接口。这三条规则可以理解为:简单完备性、组合思维和数据驱动。1. 简单完备性这其实就是 “ 简单原则 ”,其宗旨就是:一个程序只做一件事,并且

2021-07-10 18:01:43 196

原创 Java 必知必会——一文讲解 Java四种对象引用:强引用、软引用、弱引用、虚引用

在 “ 什么对象引用 ” 中,我们知道了对象和对象引用的关系,在栈中的对象引用指向堆中的对象。方法调用结束后,栈中的引用会被清空,但存活于堆中的对象,不会随着方法调用的结束而被清除,因此进程空间可能会被不断创建的对象占满。Java 中建立了垃圾回收机制来清除不再被使用的对象。垃圾回收的基本原则是,当存在对象引用指向某个对象时,该对象不会被回收;当没有任何引用指向某个对象时,该对象会回收。但在某些情况下,我们会希望有些对象不需要被立即回收,或者说从全局来看没有被回收的必要。比如缓存系统的设计,为了提高

2021-06-24 22:57:04 454 1

原创 Java 必知必会——什么是对象引用?按值传递 OR 按引用传递?

1. 什么是对象?任何事物都可以作为一个对象,一台电脑、一部手机等等等等。在面向对象程序设计的 Java 中,程序是由对象组成的,对象包含了描述其状态的数据(属性)和可以执行的操作(方法),因此,每个对象都可以表示具体的事物或者抽象的规则、计划或事件。类是构造对象的模板或蓝图,可以将类比作制造手机的流水线,而对象就是一台台手机。由类构造对象的过程被称为创建类的实例,因此,也可以把对象称作实例。2. 什么是对象引用?每种语言都有自己的数据处理方式,因此,必须注意将要处理的数据是什么类型。直接操

2021-06-22 22:33:56 2107 3

原创 Java 必知必会——一文详解对象包装器和自动装箱与拆箱

1. 对象包装器某些情况下,基本类型如 int 需要转换为对象。因此,在 Java 中,所有的基本类型都有一个与之对应的类,通常,这些类被称为包装器。对象包装器类是不可变的,也就是说,一旦构造了包装器,就不允许改变包装在其中的值。同时包装器类还是 final ,因此,不能定义包装器类的字类。注意:由于包装器类引用可以为 null, 因此自动装箱可能会抛出 NullPointException 异常:Integer n = null;System.out.println(2 * n); //

2021-06-19 21:40:54 194 3

原创 Java 必知必会——自动转型与强制类型转换

1. 自动转型基本类型之间经常会需要进行数值类型转换,数值范围较小的数据类型可以自动转换为数值范围大的基本类型。如图所示:6个实心箭头:表示两个数值类型无信息丢失的转换。3个虚线箭头:表示两个数值类型的转换可能会存在精度损失。也就是说,147258369 是一个大整数,其包含的位数比 float 类型所能表达的位数多。将这个整型数值转换为 float 是,会丢失精度。int i = 147258369;float f = i; // f = 1.47258368E8因此,将两个不同

2021-06-18 21:28:04 867

原创 Java 必知必会——基本数据类型

Java 是一种强类型语言,也就是说必须为每一个变量声明一种类型。在 Java 中,一共有 8 种基本类型,其中有 4 种整形、2 种浮点类型、1种表示 Unicode 编码的字符单元类型 char 和 1 种表示真值的 boolean 类型。1. 整型整型用于表示没有小数部分的数值,允许负数的出现。取值范围类型存储需求取值范围int4 字节-21 4748 3648 ~ 21 4749 3647 (超过20亿)short2 字节-3 2768 ~ 32767

2021-06-11 22:01:58 104

原创 初学 Java 设计模式(二十三):实战访问者模式 「今天,你的基金红了吗?」

一、访问者模式介绍1. 解决的问题主要解决稳定的数据结构和易变的操作耦合问题。2. 定义访问者模式是一种行为设计模式,它能将算法与其所作用的对象隔离开来。3. 应用场景如果需要对一个复杂对象结构(例如对象树)中的所有元素执行某些操作,可使用访问者模式。可使用访问者模式来清理辅助行为的业务逻辑。当某个行为仅在类层次结构中的一些类中有意义,而在其他类中没有意义时,可使用访问者模式。二、访问者模式优缺点1. 优点开闭原则:可以引入在不同类对象上执行的新行为,且无需对这些类做出修改。单

2021-06-11 21:01:54 340 2

原创 初学 Java 设计模式(二十二):实战模板方法模式 「开发必备利器 uTools」

一、模板方法模式介绍1. 解决的问题主要解决在多个子类中重复写某个通用方法的问题。2. 定义模板方法模式是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。3. 应用场景当只希望客户端扩展某个特定算法步骤,而不是整个算法或其结构时,可使用模板方法模式。当多个类的算法除一些细微不同之外几乎完全一样时,可使用模板方法模式。但后果是:只要算法发生变化,可能要修改所有的类。二、模板方法模式优缺点1. 优点可以仅允许客户端重写一个大型算法中的特

2021-06-06 16:05:18 423 9

原创 初学 Java 设计模式(二十一):实战策略模式 「SpringBoot 优雅实现策略模式」

一、策略模式介绍1. 解决的问题主要解决多种算法类似的情况下,使用条件语句所带来的复杂和难以维护。2. 定义策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。3. 应用场景当想使用对象中各种不同的算法变体,并希望能在运行时切换算法时,可使用策略模式。当有许多仅在执行某些行为时略有不同的相似类时,可使用策略模式。如果算法在上下文的逻辑中不是特别重要,使用策略模式能将类的业务逻辑与其算法实现细节隔离开来。当类中使用了复杂条件运算符

2021-06-06 14:42:33 742 4

原创 初学 Java 设计模式(二十):实战状态模式 「亲身实践,简单高效的时间管理——番茄工作法」

一、状态模式介绍1. 解决的问题主要解决在对象一个内部状态发生变化时,改变其行为的问题。2. 定义状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。3. 应用场景如果对象需要根据自身当前状态进行不同行为,同时状态的数量非常多且与状态相关的代码会频繁变更的话,可使用状态模式。如果某个类需要根据成员变量的当前值改变自身行为,从而需要使用大量的条件语句时,可使用状态模式。当相似状态和基于条件的状态机转换中存在许多重复代码时,可使用状态模

2021-05-30 15:37:10 419 4

原创 初学 Java 设计模式(十九):实战观察者模式 「您的快递已到达蜂站,请及时签收」

一、观察者模式介绍1. 解决的问题主要解决将一个对象的状态改变通知给其他对象的问题。2. 定义观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个 “观察” 该对象的其他对象。3. 应用场景当一个对象的改变需要改变其他对象,或实际对象时是事先未知的或动态变化时,可使用观察者模式。当应用中的一些对象必须观察其他对象时,可使用观察者模式,但仅能在有限时间内或特定情况下使用。二、观察者模式优缺点1. 优点开闭原则:无需修改发布者代码就能引入新的订阅者(如果是发

2021-05-30 14:53:18 1960 2

原创 初学 Java 设计模式(十八):实战备忘录模式 「线上刚发布就出问题怎么办?」

一、备忘录模式介绍1. 解决的问题主要解决在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以恢复原先保存的状态。2. 定义备忘录模式是一种行为设计模式,允许在不暴露对象实现细节的状态下保存和恢复对象之前的状态。3. 应用场景当你需要创建对象状态快照来恢复其之前的状态时,可以使用备忘录模式。当直接访问对象的成员变量、获取器或设置器将导致封装被突破时,可以使用备忘录模式。二、备忘录模式优缺点1. 优点可以在不破坏对象封装情况的前提下创建对象状态快照。

2021-05-23 22:40:48 180 2

原创 初学 Java 设计模式(十七):实战中介者模式 「菜鸟驿站」

一、中介者模式介绍1. 解决的问题主要解决当对象与对象之间存在大量关联关系时,若一个对象发生改变,要跟踪与之相关的对象,同时做出相应处理的问题。2. 定义中介者模式是一种行为设计模式,能减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。3. 应用场景当一些对象与其他对象紧密耦合以至于难以对其进行修改时,可使用中介者模式。当组件因过于依赖其他组件而无法在不同应用中复用时,可使用中介者模式。为了在不同情景下复用一些基本行为,导致需要被迫创建大量

2021-05-15 22:22:32 626

原创 初学 Java 设计模式(十六):实战迭代器模式 「你有多少 QQ 好友呢?」

一、迭代器模式介绍1. 解决的问题主要解决遍历整个集合对象的问题。2. 定义迭代器模式是一种行为设计模式,能在不暴露底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。3. 应用场景当集合背后为复杂的数据结构,且希望对客户端隐藏其复杂性时(处于使用便利性或安全性考虑),可以使用迭代器模式。减少程序中重复的遍历代码,可以使用迭代器模式。希望代码能够遍历不同的甚至无法预知的数据结构,可以使用迭代器模式。二、迭代器模式优缺点1. 优点单一职责原则:通过将体积庞大的遍历算法代码抽

2021-05-10 23:46:37 157 10

原创 初学 Java 设计模式(十五):实战命令模式 「扫码点餐」

一、命令模式介绍1. 解决的问题主要解决在系统中,行为请求者和行为实现者紧耦合的问题。2. 定义命令模式是一种行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。这个转换会根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。3. 应用场景需要通过操作来参数化对象,可使用命令模式。将操作放入队列中、延迟操作的执行或者远程执行操作,可使用命令模式。实现操作回滚功能,可使用命令模式。二、命令模式优缺点1. 优点单一职责原则:可以解耦触发和执行

2021-04-24 21:19:04 573

原创 初学 Java 设计模式(十四):实战责任链模式 「请求中间件」

一、责任链模式介绍1. 解决的问题主要解决请求发送者和处理者的解耦问题。2. 定义责任链模式是一种行为设计模式,允许将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。3. 应用场景当程序需要不同方式处理不同种类请求,而且请求类型和顺序预先未知时,可以使用责任链模式。当必须按照顺序执行多个处理者时,可以使用责任链模式。如果所需处理者及其顺序必须在运行时进行改变,可以使用责任链模式。二、责任链模式优缺点1. 优点可以控制请求处理的顺序

2021-04-18 16:20:23 374

原创 初学 Java 设计模式(十三):实战代理模式 「视频 App 代理缓存」

一、代理模式介绍1. 解决的问题主要解决直接访问对象时带来的问题,比如对象创建开销过大或安全控制等。2. 定义代理模式是一种结构型设计模式,能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在将请求提交给对象前后进行一些处理。3. 应用场景延迟初始化(虚拟代理):如果有一个偶尔使用的重量级服务对象,一直保持该对象运行会消耗系统资源时,可使用代理模式。访问控制(保护代理):如果只希望特定客户端使用服务对象(该对象可能非常重要),而客户端则是各种已启动的程序(包括恶意程序),可

2021-04-10 21:43:23 231

原创 初学 Java 设计模式(十二):实战享元模式 「高校选课系统优化」

一、享元模式介绍1. 解决的问题主要解决载有大量对象时,可能造成内存溢出的问题。2. 定义享元模式是一种结构型设计模式,它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,能在有限的内存容量中载入更多对象。3. 应用场景在程序必须支持大量对象且没有足够的内存容量时使用享元模式。二、享元模式优缺点1. 优点程序中有很多相似对象,那就能节省大量内存。2. 缺点可能需要牺牲执行速度来换取内存,因为每次调用向享元方法时都需要重新计算部分情景数据。代码会变得更加

2021-03-31 22:27:25 249

原创 初学 Java 设计模式(十一):实战外观模式 「类型转换器」

一、外观模式介绍1. 解决的问题主要解决访问复杂系统的内部子系统的复杂度问题,简化客户端与其子系统的接口。2. 定义外观模式是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个简单的接口。3. 应用场景需要一个指向复杂子系统的直接接口,且该接口的功能有限,可以使用外观模式。需要将子系统组织为多层结构,可以使用外观模式。二、外观模式优缺点1. 优点可以让代码独立于复杂子系统。2. 缺点外观可能成为与程序中所有类都耦合的上帝对象。三、外观模式应用实例:类型转换器1.

2021-03-28 15:06:20 227

原创 初学 Java 设计模式(十):实战装饰器模式 「日志系统支持各类通知组合」

一、装饰器模式介绍1. 解决的问题主要解决动态地给一个对象添加一些额外的职责。2. 定义装饰器模式是一种结构型设计模式,允许将对象通过放入包含行为的特殊封装对象来为原对象绑定新的行为。3. 应用场景希望在无需修改代码的情况下即可使用对象,且希望在运行时能为对象增加额外的行为,可以使用装饰器模式。用继承来扩展对象行为的方案难以实现或者根本不可能时,可以使用装饰器模式。二、装饰器模式优缺点1. 优点无需创建新的子类即可扩展对象的行为。可以在运行时添加或删除对象的功能。可以使用多个装

2021-03-21 15:21:42 412

原创 初学 Java 设计模式(九):实战组合模式 「决策树实现精准化运营」

一、组合模式介绍1. 解决的问题在树形结构的问题中,模糊了简单元素和复杂元素的概念,客户端可以像处理简单元素一样来处理复杂元素,从而使客户端和复杂元素的内部元素解耦。2. 定义组合元素是一种结构型设计模式,可以使用它将对象组合成树状结构,并能像使用独立对象一样使用它们。3. 应用场景需要实现树状对象结构,可以使用组合模式。希望客户端代码以相同方式处理简单和复杂元素,可以使用组合模式。二、组合模式优缺点1. 优点可以利用多态和递归机制更方便地使用复杂树结构。开闭原则:无需更改现有代

2021-03-14 18:54:02 1474 2

原创 初学 Java 设计模式(八):实战桥接模式 「第三方登录实现」

一、桥接模式介绍1. 解决的问题主要解决在有多种可能变化的情况下,用继承会造成类爆炸的问题,扩展起来不灵活。2. 定义桥接模式是一种结构型设计模式,可以将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次架构,从而在开发时分别使用。简单来说,就是通过讲抽象部分和实现部分分离,把多种可匹配的使用进行组合。核心实现是在 A 类包含 B 类接口,通过构造函数实现 B 类的传递,这个 B 类就是设计的桥。3. 应用场景拆分或重组一个具有多重功能的庞杂类(比如能与多个数据库服务器进行交互的类

2021-03-07 16:01:08 510

原创 初学 Java 设计模式(七):实战适配器模式 「同步监控通知至工作群」

一、适配器模式介绍1. 解决的问题主要解决在系统中,将一些现存对象放入新环境中,而新环境要求的接口和现存对象不匹配的问题。2. 定义适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作。3. 应用场景希望使用某个类,但其接口与其他代码不兼容时,可以使用适配器类。如果需要复用这样一些类,它们处于同一个继承体系,并且又有了额外的一些共同的方法,但是这些共同的方法不是这一继承体系中所有子类具有的共性。二、适配器模式优缺点1. 优点单一职责原则:可以将接口或数据转换代码从程序

2021-02-28 17:09:17 252

原创 初学 Java 设计模式(六):实战单例模式

一、单例模式介绍1. 解决的问题**保证一个类只有一个实例。**最常见的是控制某些共享资源 (例如数据库或文件) 的访问权限。运作方式是这样的: 如果创建了一个对象,同时过一会儿后决定再创建一个新对象,此时会获得之前已创建的对象, 而不是一个新对象。注意, 普通构造函数无法实现上述行为,因为构造函数的设计决定了它必须总是返回一个新对象。**为该实例提供一个全局访问节点。**还记得用过的那些存储重要对象的全局变量吗?它们在使用上十分方便,但同时也非常不安全,因为任何代码都有可能覆盖掉那些变量

2021-02-17 19:06:04 192

原创 初学 Java 设计模式(五):实战原型模式 「英雄联盟齐天大圣-真假猴王」

一、原型模式介绍1. 解决的问题主要解决的问题就是创建重复对象,这部分对象内容本身比较复杂,生成过程可能从库中或者RPC接口中获取数据的耗时较长,因此采用克隆的方式节省时间。2. 定义原型模式是一种创建型模式,能够复制已有对象,而又无需使代码依赖它们所属的类。3.应用场景对象的初始化需要很多其他对象的数据准备或其他资源的繁琐计算。需要复制一些对象,同时又希望代码独立于这些对象所属的具体类。这种场景通常出现在代码需要处理第三方代码通过接口传递过来的对象时。即使不考虑代码耦合的情况,我们

2021-02-16 20:50:15 403

原创 初学 Java 设计模式(四):实战建造者模式 「单人年夜饭套餐」

一、建造者模式介绍1. 解决的问题主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。2. 定义建造者模式是一种创建型设计模式,能够分步骤创建复杂对象。该模式允许使用相同的创建代码生成不同类型和形式的对象。建造者模式应用于一些基本组件不变,而其组合经常变化时,此时可以将变与不变分离开。由建造者创建和提供实例,主管者管理建造出来的实例的依赖关系。二、

2021-02-15 19:09:33 208

原创 初学 Java 设计模式(三):实战抽象工厂方法模式 「QQ 厘米秀装扮」

一、抽象工厂方法模式介绍1. 解决的问题通过接口的选择,解决在系统产品存在多个产品族,而系统进消费某一族的产品的问题。2. 定义抽象工厂模式是一个围绕超级工厂创建其他工厂的模式,即抽象工厂是一个中心工厂,创建其他工厂的模式。抽象工厂提供了一个接口,可用于创建每个系列产品的对象。只要代码通过该接口创建对象,那么就不会生产与当前系统已生成的产品类型不一致的产品。二、抽象工厂方法模式优缺点1. 优点可以确保同一工厂生产的产品相互匹配。可以避免客户端和具体产品代码的耦合。单一职责原则:将产品生

2021-02-14 19:26:39 276

原创 初学 Java 设计模式(二):实战工厂方法模式 「文章、视频、直播内容输出生产场景」

工厂方法模式一、工厂方法模式介绍1. 解决的问题通过接口的选择,解决在不同条件下创建不同实例的问题。2. 定义工厂方法模式又称工厂模式,是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。简单来说就是为了提供代码的扩展性,屏蔽每一个功能类的具体实现逻辑,让外部仅知道调用即可。这也是去掉多个 if else 的方式,当然也存在一些缺点,如需要实现的类过多,如何维护,降低开发成本。但这些问题可以通过与其他设计模式结合使用,逐步降低影响。二、 工厂方法模式优缺点1

2021-01-31 18:35:19 238 2

原创 MysqlTools——温和删除 Mysql 大表部分数据

1.情景再现某年某月某日 下午安心工作中运维:在吗?刚才工具扫出来线上有一批 Mysql 表不符合新规范,你看一下!我:好的,我看一下。内心 OS:什么鬼?还能不能好好撸代码了?经过一阵排查中,基本都是部分 Mysql 表无主键,很简单嘛,加个数据 id 就完事了!什么鬼,这个表怎么两千万数据了,印象里不应该有这麽多数据啊,代码复查一把,果然又是祖传遗产的锅,这个删除逻辑完全没用。问题来了,两千万的 Mysql 表,以目前线上机器的性能,很担心一把操作就挂了。接下来就是搜索引擎的天下了,搜索

2021-01-24 15:40:59 367

原创 初学设计模式(一)创建者模式

设计模式遵循六大原则:单一职责:一个类和方法只做一件事。里氏替换:多态、子类可扩展父类。依赖倒置:细节依赖抽象,下层依赖上层。接口隔离:建立单一接口。迪米特原则:最少知道,降低耦合。开闭原则:抽象架构,扩展实现。创建型模式解决的问题基本的对象创建方式可能会导致设计上存在问题,或增加设计的复杂度。创建型模式通过以某种方式控制对象的创建来解决问题。定义创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式来创建对象。创建型模式旨在将系统与其对象创建、

2021-01-17 15:20:00 127

原创 [LeetCode] Single Number III

题目给定一个数字数字的数组,其中只有两个元素只出现一次,所有其他元素出现两次,求只出现一次的两个元素

2017-08-10 17:38:09 240

原创 [LeetCode] Single Number II

题目Given an array of integers, every element appears three times except for one, which appears exactly once. Find that single one.给定整数数组,每个元素出现三次,除了一个,出现一次。 找到那个单一的。Note: Your algorithm should have a l

2017-08-10 17:18:54 199

原创 [LeetCode] First Missing Positive

题目Given an unsorted integer array, find the first missing positive integer.给定一个未排序的整数数组,找到第一个缺失的正整数。For example, Given [1,2,0] return 3, and [3,4,-1,1] return 2.Your algorithm should run in O(n) time

2017-08-10 16:58:28 187

原创 [LeetCode] Search in Rotated Sorted Array II

题目假设一个以升序排列的数组在预先知道的枢轴上旋转。(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).编写一个函数判断目标值是否存在,数组可能包含重复项。

2017-08-10 11:32:12 231

原创 [LeetCode] Search in Rotated Sorted Array

题目假设一个以升序排列的数组在预先知道的枢轴上旋转。(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).搜索一个目标值的索引,若无返回-1,假定数组无重复元素。

2017-08-10 11:14:40 164

原创 [LeetCode] Find Minimum in Rotated Sorted Array II

题目假设一个以升序排列的数组在预先知道的枢轴上旋转。(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).寻找最小元素,数组元素可以重复。

2017-08-10 10:31:45 194

原创 [LeetCode] Find Minimum in Rotated Sorted Array

题目假设一个以升序排列的数组在预先知道的枢轴上旋转。寻找其最小值,假定元素不可重复。(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

2017-08-09 17:47:50 175

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除