自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Irving_zhang的专栏

对代码的不满足,是所有程序员的本质特征

  • 博客(28)
  • 资源 (5)
  • 收藏
  • 关注

原创 对话系统综述

在人工智能领域,模仿人类交谈能力的尝试可以追溯到人工智能的早期阶段。在1950年,艾伦·图灵(Alan Turing)提出了一种方法来测试一台机器的智能水平,这个机器被普遍称为图灵测试或模仿游戏。在图灵测试中,一台机器被要求与人交谈。机器的智能水平取决于机器如何能够欺骗人类评估者,使其相信机器是基于文本响应的人类。如果人类的评估者无法区分机器和人类的区别,那么就说机器已经通过了图灵测试,这意味着人工

2017-12-21 17:20:26 11438 2

原创 leetcode分类题解

leetcode的题解专栏多如牛毛,但很少有系统的全面的专栏。在专栏里,按照如下的分类方式进行刷题,从暴力解->优化解->最优解三个层次来分析题目,希望能够帮助到找工作的你。数组Remove Duplicates from Sorted Array Remove Duplicates from Sorted Array II Search in Rotated Sorted Array Sea

2017-12-18 19:45:00 4561 1

原创 面试中常用的排序算法

排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、选择排序、基数排序、桶排序等。面试官对于这些排序可能会要

2017-12-29 11:47:13 2478

原创 tensorflow中的seq2seq的代码详解

seq2seq模型详解中我们给出了seq2seq模型的介绍,这篇文章介绍tensorflow中seq 2seq的代码,方便日后工作中的调用。本文介绍的代码是版本1.2.1的代码,在1.0版本后,tensorflow要重新给出一套seq2seq的接口,把0.x的seq2seq搬到了legacy_seq2seq下,今天读的就是legacy_seq2seq的代码。目前很多代码还是使用了老的seq2seq

2017-12-25 22:28:13 7823

原创 seq2seq模型详解

在李纪为博士的毕业论文中提到,基于生成的闲聊机器人中,seq2seq是一种很常见的技术。例如,在法语-英语翻译中,预测的当前英语单词不仅取决于所有前面的已翻译的英语单词,还取决于原始的法语输入;另一个例子,对话中当前的response不仅取决于以往的response,还取决于消息的输入。其实,seq2seq最早被用于机器翻译,后来成功扩展到多种自然语言生成任务,如文本摘要和图像标题的生成。本文将介绍

2017-12-25 09:41:04 22844 3

原创 leetcode题解-147. Insertion Sort List

题意:使用插入排序,将链表的值从小到大排列。分析:Insertion Sort就是把一个一个元素往已排好序的list中插入的过程。忘记插入排序过程的同学可以看插入排序维基百科初始时,sorted list是空,把一个元素插入sorted list中。然后,在每一次插入过程中,都是找到最合适位置进行插入。因为是链表的插入操作,需要维护pre,cur和next3个指针。pre用来发现合适的插入位置,cu

2017-12-19 21:42:21 494

原创 leetcode题解-23. Merge k Sorted Lists

题意:合并k个有序的链表,分析描述算法的复杂度。分析:这道题目在分布式系统中非常常见,来自不同client的sorted list要在central server上面merge起来。解法就是有点类似于归并排序的思路,就是分治法,不了解归并排序的朋友,请参见归并排序-维基百科,是一个比较经典的O(nlogn)的排序算法,还是比较重要的。思路是先分成两个子任务,然后递归求子任务,最后回溯回来。这个题目也

2017-12-18 22:34:50 442

原创 leetcode题解-21. Merge Two Sorted Lists

题意:合并两个排好序的链表,并返回这个新链表。新链表应该由这两个链表的节点拼接而成。例子:给定链表 l1: 1->2->4, l2: 1->3->4 返回链表: 1->1->2->3->4->4分析:本题是简单题,但是我做出来却花费约四十分钟。因为感觉两个链表节点的大小关系不好定。做完以后我看了一下discuss,基本上都是使用递归来做的,我个人不喜欢用递归,因为空间的消耗量太大。因此就写出了

2017-12-18 21:48:31 358

原创 leetcode题解-88. Merge Sorted Array

题解:给定两个排序的整型数组nums1和nums2,将nums2合并到nums1成一个排序数组。你可以假设nums1中有足够的空间(空间大于或等于m+n)来存放来自nums2的额外元素。nums1和nums2的初始空间分别是m和n。分析:题目本身比较简单,要求in-place处理数组,因此不能另外申请一个m+n的数组nums3。好在nums1有足够的空间,但是如果从数组头部开始merge的话,可能会

2017-12-18 16:53:31 636

原创 leetcode题解-150. Evaluate Reverse Polish Notation

题意:这道题是逆波兰式的求解,不了解逆波兰式的朋友可以参考一下逆波兰表示法 - wiki。例子: [“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9 [“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6逆波兰式有个优点就是他不需要括号来表示优先级,直接根据式子本身就可以求解。思路是维护一个运算数栈,读到运算数的

2017-12-16 17:37:29 660

原创 leetcode题解-84.Largest Rectangle in Histogram

题解:给出的n个非负整数表示每个直方图的高度,每个直方图的宽均为1,在直方图中找到最大的矩形面积。例子:给定数组: height = [2,1,5,6,2,3],返回 10 (5 * 2) 分析:总体来说首先很自然会想到暴力法解决,但是优化的方式不容易想到。自己看了网上的答案都特别抽象,看了一个多小时最后靠举例子才勉强明白怎么优化。1、暴力法 首先,可以使用暴力破解法。以每一个数字作为高度,遍历

2017-12-16 16:39:49 1076

原创 leetcode题解-32. Longest Valid Parentheses

题意:给定一个括号组成的字符串,要求求出最长的合法括号长度。例子: 输入: s = “(()” 输出: 2输入: s = “)()())” 输出: 4分析:一开始我想的是,当遇到”(“时,将”(“入栈;遇到”)”时,如果栈不为空,那么弹出一个”(“,然后最大长度加2;如果栈为空,就说明count需要重新计数。即:for(int i = 0; i < len; i++){ if(s.

2017-12-15 10:28:32 553

原创 leetcode题解-20. Valid Parentheses

题意:给出一个只包含 ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ 和 ‘]’ 的字符串,判断它的输入是否是有效的。例子:括号必须是以正确的顺序关闭的, “()” 和 “()[]{}” 都是有效的,但是 “(]” 和 “([)]” 是无效的。分析:判断括号匹配的合法性。需要使用一个栈来解决问题。遇到左括号入栈,遇到右括号,检查栈顶的左括号是否匹配,如果匹配,弹栈,如果不匹配,返回错误。 需要注意

2017-12-14 09:57:47 348

原创 基于检索的聊天机器人的实现

在文章NLP入门实例推荐中提到,对话系统有两种形式: 基于检索的对话系统 模式:s1,s2–>R,即字符串s1和s2符合一定的规则。 基于生成的对话系统 模式:s1–>s2,即由字符串s1得到s2。两者各有优势与不足。首先基于检索的对话系统,将回复使用的数据预先存储,那么优点就是回复的内容不会有语法和语义的错误,但因为不会像基于生成的对话系统那样创造出新的回答,因此也无法对未训练的问题作

2017-12-13 11:27:14 15754 6

原创 leetcode题解-146. LRU Cache

题意:本题的题目较难读懂,不过这能考察一个面试者能否短时间内,理解一段未见过的内容的能力。在题目的wiki链接里提供了这样一张图: 缓存的长度(capacity )为4,A、B、C、D首先插入缓存中;插入E时,超过了capacity ,需要覆盖最近最少使用的A;插入F时,超过了capacity ,需要覆盖B。为最近最少使用(LRU)的缓存策略设计一个数据结构,它应该支持以下操作:获取数据(get)

2017-12-12 22:22:16 1031

原创 leetcode题解-143. Reorder List

题意:给定一个链表,把最后一个结点插入到第1个结点后,倒数第二个结点插入到第2个结点后,倒数第三个结点插入到第3个结点后,以此类推……注意:需要在原数组上进行操作,同时不能改变链表的value。例子: 给定链表: L0→L1→…→Ln-1→Ln, 返回链表: L0→Ln→L1→Ln-1→L2→Ln-2→…给定链表 1->2->3->4->5->6 返回链表 1->6->2->5->3->4分析

2017-12-12 20:58:37 385

原创 leetcode题解-142. Linked List Cycle II

题意:判断一个链表是否有环,有环的话返回环的起始节点,无环的话返回NULL。分析:此题是141. Linked List Cycle的follow up。因此是剑指offer的原题,因此这里不再选用其他方法,直接采用剑指offer的方法。总共分为三步: 1、得到环的长度circleLen。 2、设置fast节点和slow节点,初始值都为head。先将fast节点走circleLen个长度。 3

2017-12-11 22:33:31 428

原创 leetcode题解-141. Linked List Cycle

题意:判断一个单链表是否存在环分析: 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇 。 时间复杂度:O(n)代码:/** * Definition for singly-linked list. * class ListNode { * int val;

2017-12-11 22:11:15 279

原创 leetcode题解-138. Copy List with Random Pointer

题意:深拷贝一个链表,链表除了含有next指针外,还包含一个random指针,该指针指向字符串中的某个节点或者为空。节点定义为:// Definition for singly-linked list. public class RandomListNode { int label; RandomListNode next, random; RandomListNod

2017-12-11 21:54:09 390

原创 leetcode题解-25. Reverse Nodes in k-Group

题意:把原始链表k个k个的反转,如果最后剩余的不到k个结点,那么保持不变。例子: 给定链表: 1->2->3->4->5 如果 k = 2, 返回链表: 2->1->4->3->5 如果 k = 3, 返回链表: 3->2->1->4->5分析:前两天十大上有师兄分享17年算法岗面经时提到了本题,因此在做本题的时候也格外认真。晚上洗澡的时候理了一下思路,然后手写代码bug-free,还是很开心

2017-12-11 21:43:22 685

原创 leetcode题解-24. Swap Nodes in Pairs

题意:给定一个链表,交换相邻的两个结点,返回交换之后的头结点。例子:给定链表 1->2->3->4, 返回链表 2->1->4->3.分析:关键在于分析循环的结束条件。以例子来说明: 设置三个指针pre,leftNode,secondNode。初始值如下, pre = dummyNode; leftNode= 节点1; secondNode = 节点2;循环条件为while(right.ne

2017-12-11 20:47:17 499

原创 leetcode题解-19. Remove Nth Node From End of List

题意:给一个链表和数字n,移除倒数第n个数,返回head。例子: 给定链表 1->2->3->4->5, 并且n = 2. 返回链表 1->2->3->5.

2017-12-11 20:15:04 477

原创 leetcode题解-61. Rotate List

题意:给出一个列表,往右旋转 k 个位置。例子:给定链表 1->2->3->4->5->NULL 并且 k = 2, 返回链表 4->5->1->2->3->NULL.分析:题目比较简单,分为三个部分来做。 1、计数,得到链表的长度。 2、找到新链表头部节点在旧链表中的前置节点,如上述例子中的节点3,同时节点3也是新链表的尾部。 3、进行对顺序变换的操作: 如果以fastNode指代节点5

2017-12-11 20:05:53 442

原创 leetcode题解-82. Remove Duplicates from Sorted List II

题意:本题是83题(Remove Duplicates from Sorted List)的拓展,这次重复的元素一个都不保留。例子: 给定链表 1->2->3->3->4->4->5, 返回链表 1->2->5. 给定链表 1->1->1->2->3, 返回链表 2->3.思路:道理还是和83题一样,只是现在要把前驱指针指向上一个不重复的元素中,如果找到不重复元素,则把前驱指针指向该元素,否则删

2017-12-10 15:31:21 365

原创 leetcode题解-83. Remove Duplicates from Sorted List

题意:给定一个单向已排序的链表,删除链表中重复的元素使每个元素只出现一次。 例子: 1->1->1->2,返回1->2 1->1->2->3->3->,返回1->2->3 思路:两个指针 ,分别从头开始,如果下一指针指向的元素与上一指针指向的元素相同则只将下一指针后移;否则两指针同时后移。class Solution { public ListNode deleteDuplicate

2017-12-10 15:16:29 379

原创 leetcode题解-86. Partition List

题意:给定一个单链表和一个x,把链表中小于x的放到前面,大于等于x的放到后面,每部分元素的原始相对位置不变。例子: 给定链表 1->4->3->2->5->2 并且x = 3, 返回链表 1->2->2->4->3->5.思路:其实很简单,遍历一遍链表,把小于x的都挂到left后,把大于等于x的都放到right后,最后再把大于等于的链表挂到小于链表的后面就可以了。/** * Definitio

2017-12-10 15:11:47 369

原创 leetcode题解-92. Reverse Linked List II

题意:把链表中m到n的部分反转(1<=m<=n<=length)。 注意要求:在原地反转,也就是不能申请额外的空间,且只能遍历一遍。例子: 链表 1->2->3->4->5->NULL, m = 2 and n = 4, 返回 1->4->3->2->5->NULL.解析: 参考最高票的discuss,我们模拟一下逆置的过程: 1-2-3-4-5 先把3放2前面变成 1-3-2-4-5

2017-12-10 14:23:27 591

原创 leetcode题解-2. Add Two Numbers

题意:给你两个表示两个非负数字的链表。数字以相反的顺序存储,其节点包含单个数字。将这两个数字相加并将其作为一个链表返回。例子:输入: (2 -> 4 -> 3) + (5 -> 6 -> 4) 输出: 7 -> 0 -> 8 解释:342 + 465 = 807.分析:这道题比较简单,两个链表相加的问题,思路很明确,就是按照位数读下去,维护当前位和进位,时间复杂度是O(n),空间复杂度是O(1)

2017-12-10 14:03:45 589

第十三到十五课

斯坦福人工智能实验室是人工智能领域的扛把子。本笔记是于NG的CS229课程的讲解做出,NG风度翩翩,逻辑清晰,有着理工男特有的人格魅力。本笔记也会结合《统计学习方法》和林轩田《机器学习基石》对NG课程没有展开的点做通俗的说明,一来做到理清知识点关系,二来可以备忘,温故知新。

2018-01-12

第十到十二课

斯坦福人工智能实验室是人工智能领域的扛把子。本笔记是于NG的CS229课程的讲解做出,NG风度翩翩,逻辑清晰,有着理工男特有的人格魅力。本笔记也会结合《统计学习方法》和林轩田《机器学习基石》对NG课程没有展开的点做通俗的说明,一来做到理清知识点关系,二来可以备忘,温故知新。

2018-01-12

第七到九课

斯坦福人工智能实验室是人工智能领域的扛把子。本笔记是于NG的CS229课程的讲解做出,NG风度翩翩,逻辑清晰,有着理工男特有的人格魅力。本笔记也会结合《统计学习方法》和林轩田《机器学习基石》对NG课程没有展开的点做通俗的说明,一来做到理清知识点关系,二来可以备忘,温故知新。

2018-01-11

第四到六课

斯坦福人工智能实验室是人工智能领域的扛把子。本笔记是于NG的CS229课程的讲解做出,NG风度翩翩,逻辑清晰,有着理工男特有的人格魅力。本笔记也会结合《统计学习方法》和林轩田《机器学习基石》对NG课程没有展开的点做通俗的说明,一来做到理清知识点关系,二来可以备忘,温故知新。

2018-01-11

机器学习要点第一到三课

斯坦福人工智能实验室是人工智能领域的扛把子。本笔记是于NG的CS229课程的讲解做出,NG风度翩翩,逻辑清晰,有着理工男特有的人格魅力。本笔记也会结合《统计学习方法》和林轩田《机器学习基石》对NG课程没有展开的点做通俗的说明,一来做到理清知识点关系,二来可以备忘,温故知新。

2018-01-11

空空如也

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

TA关注的人

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