成长路上

不断放弃舒适区


  • Home

  • About

  • Tags

  • Categories

  • Archives

  • Search

leetCode-0020_有效的括号

Posted on 2018-10-20 | In 算法

题目描述

英文题目

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

Note that an empty string is also considered valid.

Example 1:

1
2
Input: "()"
Output: true

Example 2:

1
2
Input: "()[]{}"
Output: true

Example 3:

1
2
Input: "(]"
Output: false

Example 4:

1
2
Input: "([)]"
Output: false

Example 5:

1
2
Input: "{[]}"
Output: true
中文题目

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

1
2
输入: "()"
输出: true

示例 2:

1
2
输入: "()[]{}"
输出: true

示例 3:

1
2
输入: "(]"
输出: false

示例 4:

1
2
输入: "([)]"
输出: false

示例 5:

1
2
输入: "{[]}"
输出: true
Read more »

数据结构-队

Posted on 2018-10-20 | In 数据结构

基本操作

描述:FIFO(先进先出)

只允许栈顶进行删除和插入

  • 创建
  • 销毁
  • 是否满
  • 是否空
  • 入队
  • 出队
  • 遍历

实现

Read more »

数据结构-线性表

Posted on 2018-10-16 | In 数据结构

基本操作

链表技巧

  1. 理解指针或引用的含义
  2. 警惕指针丢失和内存泄漏
  3. 利用哨兵简化实现难度
  4. 重点留意边界条件处理
    1. 如果链表为空时,代码是否能正常工作?
    2. 如果链表只包含一个结点时,代码是否能正常工作?
    3. 如果链表只包含两个结点时,代码是否能正常工作?
    4. 代码逻辑在处理头结点和尾节点的时候,是否能正常工作?
  5. 举例画图、辅助思考
  6. 多写、多练
Read more »

数据结构-栈

Posted on 2018-10-15 | In 数据结构

基本操作

描述:FILO(先进后出)

只允许栈顶进行删除和插入

  • 创建
  • 销毁
  • 长度
  • 是否满
  • 是否空
  • 入栈
  • 出栈
  • 遍历

实现

Read more »

算法-LRU缓存淘汰算法

Posted on 2018-10-15 | In 算法

我们维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。当有一个新的数据被访问时,我们从链表头开始顺序遍历链表。

  1. 如果此数据之前已经被缓存在链表中了,我们遍历得到这个数数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部。

  2. 如果此数据没有在缓存链表中,又可以分为两种情况:

    如果此时缓存未满,则将此结点直接插入到链表的头部;

    如果此时缓存已满,则链表尾结点删除,将新的数据结点插入链表的头部。

Read more »

leetCode-0876_链表的中间结点

Posted on 2018-10-14 | In 算法

题目描述

英文题目

Given a non-empty, singly linked list with head node head, return a middle node of linked list.

If there are two middle nodes, return the second middle node.

Example 1:

1
2
3
4
5
Input: [1,2,3,4,5]
Output: Node 3 from this list (Serialization: [3,4,5])
The returned node has value 3. (The judge's serialization of this node is [3,4,5]).
Note that we returned a ListNode object ans, such that:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.

Example 2:

1
2
3
Input: [1,2,3,4,5,6]
Output: Node 4 from this list (Serialization: [4,5,6])
Since the list has two middle nodes with values 3 and 4, we return the second one.

Note:

  • The number of nodes in the given list will be between 1 and 100.
中文题目

给定一个带有头结点 head 的非空单链表,返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:

1
2
3
4
5
输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。
注意,我们返回了一个 ListNode 类型的对象 ans,这样:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.

示例 2:

1
2
3
输入:[1,2,3,4,5,6]
输出:此列表中的结点 4 (序列化形式:[4,5,6])
由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。

提示:

  • 给定链表的结点数介于 1 和 100 之间。
Read more »

leetCode-0019_删除链表的倒数第N个节点

Posted on 2018-10-14 | In 算法

题目描述

英文题目

Given a linked list, remove the n-th node from the end of list and return its head.

Example:

1
2
3
Given linked list: 1->2->3->4->5, and n = 2.

After removing the second node from the end, the linked list becomes 1->2->3->5.

Note:

Given n will always be valid.

Follow up:

Could you do this in one pass?

中文题目

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:

1
2
3
给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明:

给定的 n 保证是有效的。

进阶:

你能尝试使用一趟扫描实现吗?

Read more »

leetCode-0021_合并两个有序链表

Posted on 2018-10-14 | In 算法

题目描述

英文题目

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

Example:

1
2
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
中文题目

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

1
2
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
Read more »

Untitled

Posted on 2018-10-14

URL加载系统

与URL交互并使用标准Internet协议与服务器通信。

骨架

  • 基础

在本页面

  • 概观
  • 话题
  • 也可以看看

概观

URL加载系统使用https您创建的标准协议或自定义协议提供对URL标识的资源的访问。加载是异步执行的,因此您的应用程序可以保持响应并在到达时处理传入的数据或错误。

您可以使用URLSession实例创建一个或多个实例,这些实例可以获取数据并将数据返回到应用程序,下载文件或将数据和文件上载到远程位置。要配置会话,请使用一个对象,该对象控制如何使用缓存和cookie的行为,或者是否允许在蜂窝网络上进行连接。URLSessionTaskURLSessionConfiguration

您可以重复使用一个会话来创建任务。例如,Web浏览器可能具有用于常规和私人浏览使用的单独会话,其中私有会话不缓存其数据。图1显示了具有这些配置的两个会话如何创建多个任务。

图1

从URL会话创建任务

每个会话都与一个委托相关联,以接收定期更新(或错误)。默认委托调用您提供的完成处理程序块; 如果您选择提供自己的自定义委托,则不会调用此块。

您可以将会话配置为在后台运行,以便在应用程序暂停时,系统可以代表它下载数据并唤醒应用程序以提供结果。

话题

第一步

配置和创建会话,然后使用它们创建与URL交互的任务。

将网站数据提取到内存中

通过从URL会话创建数据任务将数据直接接收到内存中。

将数据上传到网站

将数据从您的应用发布到服务器。

在后台下载文件

创建在应用处于非活动状态时下载文件的任务。

1
class URLSession

协调一组相关网络数据传输任务的对象。

1
class URLSessionConfiguration

用于定义URL会话的行为和策略的配置对象。

1
class URLSessionTask

在URL会话中执行的任务,如下载特定资源。

请求和回复

1
struct URLRequest

一个独立于协议或URL方案的URL加载请求。

1
class URLResponse

与URL加载请求的响应关联的元数据,与协议和URL方案无关。

1
class HTTPURLResponse

与HTTP协议URL加载请求的响应关联的元数据。

缓存行为

访问缓存数据

控制URL请求如何使用以前缓存的数据。

1
class CachedURLResponse

对URL请求的缓存响应。

1
class URLCache

将URL请求映射到缓存的响应对象的对象。

身份验证和凭据

处理身份验证挑战

当服务器要求对URL请求进行身份验证时,适当地做出响应。

1
class URLAuthenticationChallenge

来自需要客户端身份验证的服务器的挑战。

1
class URLCredential

An身份验证凭据,包括特定于凭证类型的信息和要使用的持久性存储的类型(如果有)。

1
class URLCredentialStorage

共享凭证缓存的管理员。

1
class URLProtectionSpace

服务器或服务器上的区域,通常称为域,需要身份验证。

饼干

1
class HTTPCookie

HTTP cookie的表示。

1
class HTTPCookieStorage

管理cookie存储的容器。

错误

1
struct URLError

URL加载API返回的错误代码。

URL加载系统错误信息键

从URL加载API生成的错误对象的用户信息字典中识别这些键。

遗产

旧版URL加载系统

将代码迁移远离使用这些旧对象。

也可以看看

联网

你好

通过广告服务在本地网络上轻松发现,或发现其他人宣传的服务。

Alamofire-目录

Posted on 2018-10-14 | In swift源码学习

统计Alamofire代码函数

find Source -name “*.swift” | xargs cat |wc -l

目录结构

  • Alamofire.swift(支持的基本接口)
  • Core
    • AFError.swift (对错误的封装,包含了Alamofire中所有可能出现的错误,使用enum实现,很有意思)
    • Notifications.swift(swift中通知的用法,这个跟oc的有区别)
    • ParameterEncoding.swift(参数编码,有些情况需要把参数编码到URL中,包含了转义相关的知识)
    • Request.swift(最核心的请求类)
    • Response.swift(服务器返回的数据的封装)
    • Result.swift(对请求结果的封装)
    • SessionDelegate.swift(会话代理)
    • SessionManager.swift(会话管理,核心内容)
    • TaskDelegate.swift(任务代理)
  • Extensions
    • DispatchQueue+Alamofire.swift
  • Features
    • MultipartFormData.swift(多表单数据处理)
    • NetworkReachabilityManager.swift(网络状态管理)
    • ResponseSerialization.swift(响应序列化管理)
    • ServerTrustPolicy.swift(安全策略管理)
    • Timeline.swift(新增的内容,与请求相关的一些时间属性)
    • Validation.swift(对服务器响应的验证)

Alamofire

1…3456
LiYouCheng2014

LiYouCheng2014

iOS\算法\项目管理

56 posts
8 categories
29 tags
GitHub E-Mail
© 2018 LiYouCheng2014
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4