Fork me on GitHub

Leetcode-074

Leecode-074 Search a 2D Matrix

思路:两次二分法查找

题目描述

  • 从一个二维矩阵中找出想要的数值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Input:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
Output: true
//=============================
Input:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 13
Output: false

Solution:两次二分法查找

  • 第一次:设置中间行mid,从纵向维度寻找target所在的行(row)
  • 第二次:设置中间数mid,从横向维度寻找target
  • 时间复杂度:两次二分查找(一次为O(logm) 两次是O(logm)(logn))
阅读更多...

Leetcode-167

Leecode-167Two Sum II - Input array is sorted

思路:双指针

题目描述:

1
2
Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2

Solution:双指针

  • 需要的参数

    • 头指针指向index= 0
    • 尾指针指向index=length-1 (最后)
    • sum = nums[i] + num[j]
  • 步骤:

    • 使用双指针,一个指针指向值较小的元素,一个指针指向值较大的元素。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。
    • 如果两个指针指向元素的和sum == target ,那么直接返回两个数的index
    • 如果 sum > target,移动较大的元素,使得sum变小一些
    • 如果 sum < target, 移动较小的元素,使得sum变大一些
  • 算法复杂度分析:

    • 数组中的元素最多遍历一次,时间复杂度为 O(N)。
    • 只使用了两个额外变量,空间复杂度为 O(1)。
阅读更多...

Leetcode-633

Leecode-633 Sum of Square Numbers

思路:双指针

题目描述:判断一个非负整数是否为两个整数的平方和。

1
2
3
Input: 5
Output: True
Explanation: 1 * 1 + 2 * 2 = 5

可以看成是在元素为 0~target 的有序数组中查找两个数,使得这两个数的平方和为 target,

如果能找到,则返回 true,表示 target 是两个整数的平方和

注意点:本题和 167. Two Sum II - Input array is sorted 类似,只有一个明显区别:一个是和为 target,一个是平方和为 target。本题同样可以使用双指针得到两个数,使其平方和为 target。

Solution:双指针

  • 步骤
    • 本题目的关键时右指针的初始化,实现剪枝,从而降低时间复杂度
    • 设右指针为x,左指针固定为0.为了使 0^2 + x^2 的值尽可能接近 target,我们可以将 x 取为 sqrt(target)。
  • 复杂度分析:
    • 因为最多只需要遍历一次0~sqrt(target),所以时间复杂度为o(sqrt(target))
    • 空间复杂度为O(1),因为使用了两个变量
阅读更多...

MyBatis-03-配置解析

MyBatis-03-配置解析

0. 核心配置文件

  • mybatis-config.xml系统核心配置文件
  • MyBatis 的配置文件包含了会深深影响MyBatis行为的设置和属性信息
  • 能配置的内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
<!-- 注意元素节点的顺序!顺序不对会报错 -->
  • 可以阅读 mybatis-config.xml上面的dtd的头文件!
阅读更多...

MyBatis-ResultMap

MyBatis ResultMap

ResultMap

实际:要解决的问题:属性名和字段名不一致

环境:新建一个项目,将之前的项目拷贝过来

查询为null问题

  1. 查看之前数据库的字段名

阅读更多...

MyBatis-02-CRUD操作

MyBatis-02-CRUD操作

1. 关于namespace

  • 配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致
  • 同时namespace 必须是一个全限定名
  • 注意点:对MyBatis而言
    • 增、删、改操作必须要提交事务!

2. 查询操作 select

id

  • 命名空间中唯一的标识符
  • 接口中的方法名与映射文件中的SQL语句ID 一一对应

resultType

  • SQL语句返回值类型。【完整的类名或者别名】

parameterType

  • 传入SQL语句的参数类型 。【参数的类型】
    • 单参数:传入参数的类型
    • 多参数(对象):如果参数过多,可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可

2.1 parameterType

注意:对于参数有以下的类型说明parameterType

  1. Map传递参数的话,直接在sql中取出key即可
  2. 对象传递参数,直接在sql中取出对象属性即可
  3. 对于基本类型参数类型,直接可以在sql中取到, 甚至可以不写类型
阅读更多...
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信