Monthly Archives: 十二月 2016

[leetcode题解]24.Swap Nodes in Pairs(节点交换)

leetcode 第24题,将链表中相邻元素位置颠倒,题目要求不能改变元素节点中元素的值,只能改动节点位置。也就是要求在链表中删除插入。 python代码如下: # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = No …

Continue reading

[随手写]统计英文文本中每个单词出现的频率

给定一个文本文件,内部为纯英文文本即不会包含中文以及中文符号,要求统计出其中各不同单词的频率。 主要是过滤掉数字,英文标点符号,但是一个特例是类似can’t这类的上引号不能过滤掉,另外要注意单词间的分隔符可以为一个或者多个空白字符(空格、制表符、回车符),也可以为换行符或者标点符号。 主要步骤,第一步为从文件读取文本,然后全部转换为小写字母,然后将其中的所有数字和非单词的字符替换成空格 …

Continue reading

[leetcode题解]25.Reverse Nodes in k-Group(链表每k个元素逆置)

这个题很有意思,虽然标的难度为hard,但是其实就是链表相关知识点的一个小综合,比如尾插法,段遍历,双指针操作等。题目给定一个单链表和一个k值,要求将链表中的元素从表头开始每k个元素组成一个组,然后组内的元素进行逆置操作,如果最后一组不满k个元素,则该组中的元素顺序保持不变。特别的,题目中说操作过程中不能改变元素节点的值,只能对整个节点进行操作,这就要求我们要通过链表指针的操作来完成上述过程。 总 …

Continue reading

[leetcode题解]82.Remove Duplicates from Sorted List-II(排序链表保留唯一)

上一篇论文中写了一个排序链表去重的题目解法,那个题目要求对于重复的元素只保留一个,而本题给定一个排序链表,要求把重复的元素全部删除,所以与上个题目有点差异,但是解法可以基本一致,这里对每个元素,判断其是否唯一,如果不唯一就直接删除,如果唯一,那么就将这个唯一的元素拿出来插入新的链表中,最后将新的链表返回去即可。 题意演示 Given 1->2->3->3->4->4- …

Continue reading

[leetcode题解]61. Rotate List(链表旋转)

题目中给定一个单链表和一个数字k,要求将链表循环右移k次,每次将最右边的元素移动到最左边。最简单的思路先找到最后的k个元素的起始位置,然后把这k个元素直接搬到链表最前面并插入即可(可以使用尾插法,当然也可以把最后一个元素记录下来,然后直接将整段插入)。但是这里k的值可能非常大,是链表长度的好几倍,我们要先处理下k值,我们需要的k值是对链表长度取余得到的值,所以这里先写一个方法求得链表的长度,然后k …

Continue reading

[leetcode题解]83.Remove Duplicates from Sorted List(排序链表去重)

题目给定一个单链表,该单链表已排序,要求删除所有重复值的节点。因为链表已排序,所以相同的值的节点都相邻,所以本题是相邻节点去重问题,可以直接两个指针操作即可。比较简单的排序链表去重问题。一种逐个去重,一种把所有重复的找出来,直接去除所有重复元素,两种方法分别是python实现和c++实现。 python代码: class Solution(object): def deleteDuplicates …

Continue reading

wordpress最合适代码高亮编辑器及其配置

比如我写博客的时候通常会在博客中加入很多代码,所以就对代码高亮有很大的需求,以前用过各种插件实现代码高亮,也使用sublime中的highlight非插件的形式实现过代码高亮,比如本篇文章之前的代码高亮都是这个方法实现的,这需要粘贴到sublime,生成html代码,然后再复制回来,非常不方便,后来使用百度的UEditor富文本编辑器,但是它的代码高亮会转义空格,浏览没问题,但是查看页面源码的时候 …

Continue reading

[leetcode题解]86.Partition List(链表分割)

leetcode第86题,partition-list,是一个关于链表分割的题目。题目给定一个单链表和一个数x,要求链表中节点val小于x的节点全部在左边,而大于等于x的节点全部在右边,而且左右两边中的元素分别保持在原链表中的相对位置。总体来说就类似于快排中的partition部分。所以这个的实现可以直接使用快排的中partition方法直接在单链表上更换节点的值就好。 这里使用最原始的思路,就是 …

Continue reading

[leetcode题解]92.Reverse Linked List II(链表部分逆置)

leetcode第92题,reverse-linked-list-ii,题目是一个单链表的题目,给定一个单链表,然后告诉一个区间[n,m],然后要求将链表中第n到m个节点逆序,这里保证n和m是合法的,即1 <= n <= m <= 链表长度,链表的节点id从1开始计数。 思路比较简单,设定两个指针,以前以后,首先数n个节点,然后将后面的m – n个节点进行头插(逆序插 …

Continue reading

[leetcode题解]109.Convert sorted list to binary search tree

leetcode 109,convert sorted list to binary search tree,给定一个已排好序的单链表,将其转换为一棵平衡二叉查找树,平衡二叉查找树要求左右子树的高度差小于等于1,而且左子树上的节点都小于等于当前根节点,有子树上的节点都大于当前根节点。 由于单链表本身就已经排好序了,所以,只要保证左右子树高度满足即可,可以以链表的中心节点为界,将链表一分为二,这样左 …

Continue reading

[转]非CS水硕的2016研发岗位校招总结 = = 互联网求职失败的经验教训

有些事不好好给它画上句号,很容易在脑子里转来转去,几个月的校招经历了大大小小几十家公司的信息量,互联网、银行、金融、IC行业、游戏行业都有尝试,当然岗位都是技术方面的,想着稍微记录下来该清空的就可以清空了,后面可以安心写论文啊学车了。加上今年版上的经验分享帖实在是少,所以想了一会还是总结一下自己的非科班互联网求职之路吧,随便看看好了。 首先反思一下,Lz电气小硕,虽然自认为基础还可以,但是并没有知 …

Continue reading

[leetcode题解]138.Copy List with Random Pointer(linked-list)

leetcode,138.copy list with random pointer. 正常的单链表中只有一个next的指针指向下一个元素的地址,本题给定一个链表,这个链表比较特殊,不仅有指向下一个元素的next指针,还有一个指向链表中随机元素的一个random指针(random pointer)。 题目要求对该链表进行拷贝,在新的拷贝中,元素的链接关系不变,注意这里的拷贝要求的是深拷贝。 由于r …

Continue reading

[leetcode题解]142.Linked List Cycle II(python + c++)

leetcode第142题,linked list cycle ii,前面有道题目是判断单链表是否有环。 本题就是将上个题目进行改进,首先判断是否有环,如果有环则返回环的入口节点,如果没有环的话返回NULL。 本题的解法首先按照上篇文章中提到的快慢指针法来判断环,并返回快慢指针相遇的节点。 然后,将一个指针从头开始,另一个指针从相遇节点开始,一步一步走下去,直到两者相遇的点就是环的入口节点。 直接 …

Continue reading