Author Archives: iaccepted

c/cpp使用Cython来调用python代码

python本身由c语言实现,所以理论上来说python代码是能够转换为c代码的。这里可以使用Cython来完成这一工作,相比较与python2.7官方提供的方法,Cython的方式更强大,更方便。 1.python2.7官方提供的方法来实现 main.c #include “Python.h” int main(int argc, char **argv) { Py_Initialize(); …

Continue reading

python素数筛算法实现

python中有列表生成式这种机制,可以很方便的产生一个无穷可列的序列。另外python中提供了filter函数,该函数可以作用在任何可迭代的对象上,更重要的是该函数的结果本质上是一个生成式,也就是惰性序列。 结合以上几点可以很容易的使用python实现素数筛的算法。 1.一个无穷序列,从自然数2一次递增 2.依次得到一个素数,并使用该素数对无穷序列进行筛选,只留下无法整除的 3.使用筛选结果更新 …

Continue reading

sublime配置方便的python运行

安装完sublime后,可以直接写python程序并通过ctrl+b来运行程序,但是无法输入内容,如果想配置接受用户内容输入,则要安装sublimeREPL 1.安装 package control 2.安装sublimeREPL 3.设置快捷键(Preference-key-bindings-usr) [ { “keys”:[“f5”], “command”:”repl_open”, “capt …

Continue reading

unicode 与 utf记录

字符串编码中会因为不同的编码而导致乱码问题,所以,出现了Unicode编码,Unicode编码是把所有语言的字符全部收集起来, 称为统一字符集(ucs),并把这些字符进行一个统一的编码,用一个整数码点来表示,范围是0-0x10ffff,所以大量的字符无法如 ASCII码一样只用一个字节就可存储。所以就涉及到如何更好的存储Unicode编码的问题。 很明显要表示一个Unicode码点需要三个字节,所 …

Continue reading

gcc编译复习结合最近项目

gcc原本是GNU C Compiler,现在是GNU Compiler Collections。 gcc编译C文件分为四步,依次为预处理、编译、汇编、链接。 1.预处理 gcc -E main.c -o main.i 让编译过程进行完预处理就停止 2.编译(变为汇编代码) gcc -S main.i -o main.s 编译是以预处理文件作为输入,进行编译,形成汇编代码。 3.汇编 gcc -c …

Continue reading

[转自98]公派出国经验心得

公派出国经验心得 签证结束,公派出国的事情也算是定了。有点时间,把我这持续了将近一年时间的公派出国后续汇总一下,写个心得,以飨后人,也算是报答下自己从各位前辈获得的心得。 以下是我初步划分的几个公派出国的步骤。 第一步:满足资格 国家公派出国是有名额限制的,从往年的经验来讲,控制学院一般有报名人数的一半的名额,只要是在学院的推送排名中前一半的,就有很大机会拿到资格。其他学院不是很清楚。学院排名的依 …

Continue reading

[98转载]跨考计院CS的一些微小的经验

其实觉得自己没什么能力写这样一个经验贴,毕竟自己是擦线进复试,最后靠复试被录取的,初试分那么低,写了帖子反倒误人子弟呢。但今天妹子回家了,刚和朋友出去吃了一顿,回到图书馆,毕设论文看不懂(哎,我这毕设真难啊…..),想着还是写点东西,各位看官且看且批评吧,写得不好的地方…..我也不负责,哈哈。 先说自身情况:工信大类某专业,想转CS,于是决定考研。 英语、政治、数学,这几科大家在各种考研论坛上都能 …

Continue reading

[98转载]今年是第五年,我回来这里,如曾诺于你

今年是第五年,我回来这里,如曾诺于你 这个id是我在cc98的第一个id,却不是那个当过许多斑竹,杀帖锁人扮黑脸够冷酷的同名id。或许私心里,就是不愿意这个最初的id沾染任何不自由不随意。 我离开浙大在2008那年,那时候我与一个叫许梦天涯的id相约,五年后要回来说说自己这些年都如何。这五年,我有时回来看看满眼陌生的id,他早已杳无音讯,头像从不曾亮起。总之,如今五年已到,我回来这里,如曾诺于你。 …

Continue reading

c语言中sizeof注意事项

在C语言中,sizeof作用于char和字符变量时,结果为1,但是作用于字符常量时,结果为4,因为在C语言中,对字符常量默认为int型。 即: char ch = ‘c’; sizeof(char); //结果为1 sizeof(ch); //结果为1 sizeof(‘c’); //结果为4 在C++中这点不同,sizeof作用于char和字符变量以及字符常量是结果均为1。 char ch = ‘ …

Continue reading

strtod函数使用

strtod是stdlib.h中定义的一个函数,其作用是将传入的字符串型数转化为数学的数。 strtod在执行前会把前导的空白字符略去,比如“   123”,会转化为123.0000,前面的前导空白字符自动跳过。 strtod第二个参数是一个指向字符串指针的指针,传回能转换到的最后一个字符的下一个字符指针,如果不需要,可以设置为NULL。 如果要转换的数超出double表示范围会返回HU …

Continue reading

[pat题解]1108.Finding Average

PAT1108题,本题要求输入N个字符串,然后判断这些字符串是否表示一个合法的数,将所有合法的数求和并计算其均值。对于不合法的数,对其进行输出。 合法规则:值必须在[-1000, 1000]范围内,并且精度不能超过小数点后两位。规则比较简单。 本题注意点: 1.要判断精度,比如1.000,精度为三位小数,不符合规则,则表示该数是非法的。 2.要判断该字符串能否表示一个数,比如aaa,显然不能表示一 …

Continue reading

[华为OJ题解]特殊要求字符串排序

本题是一个简单排序的题目,但是题目中对于不同字符给予不同的处理,稍微麻烦一点。主要涉及大小写忽略的稳定排序。输出的时候要固定非字母字符的位置等知识点。 题目要求如下: 规则1:英文字母从A到Z排列,不区分大小写。       如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。     如,输入:BabA …

Continue reading

[华为OJ题解]求解最小公倍数

华为oj题解,给定两个数,求这两个数的最小公倍数。两个数的最小公倍数求法为两数的乘积除以两数的最大公约数,所以,本质上本题就是求解两个数的最大公约数问题。求解最大公约数直接使用辗转相除法进行求解即可。代码如下: #include <iostream> #include <string> using namespace std; int gcd(int a, int b) { …

Continue reading

python排序函数sorted用法分析

在程序中经常会用到排序功能,python中提供了sorted函数来进行排序操作。 简单的排序操作直接使用sorted进行,复杂点的排序需要配合lambda表达式或者operator模块中的方法进行。 如下,首先是对自定义的复杂类型进行排序操作(包括复合排序),还有一类是对字典对象进行排序。 1.对自定义的对象进行较复杂的条件排序,比如按姓名排序,按成绩排序,先按成绩若成绩相等再按姓名排序等多种排序 …

Continue reading

python装饰器完整写法

在24中设计模式中有装饰模式,该模式的思想很简单,装饰物和被装饰物继承共同的类,然后装饰物中包含被装饰物的引用,这样就可以一层层进行装饰——可以有很多层装饰。 python中的装饰器跟这一模式类似,可以对方法进行装饰。比如对已有的函数要在其前后加上相应的预处理和后处理功能,可以使用装饰器方便的完成这一过程。 下面首先通过一个例子说明python中装饰器的用法。 假设有一个发送消息的方法sendMs …

Continue reading

[leetcode题解]215.Kth Largest Element in an Array(数组中找第k大数)

leetcode,215,Kth Largest Element in an Array,给定一个包括若干元素的数组以及一个k,要求在数组中找出第k大的数。 通常的思路是排序,然后可以快速找到第k大的数,时间复杂度o(nlogn)。比较好的方法是借助快排的思想,一次轴分,可以以o(n)的时间复杂度找到第k大数。 c++代码: class Solution { public: //author:凌风 …

Continue reading

[pat题解]1074.Reversing Linked List(25)

本题要求对一个链表进行分组逆置,给定K,每K个元素为一组,将组中元素逆置,如果最后一组元素不足K个,则不做处理。 本题个人做法为使用map来组织链表结构,可以方便的进行查询和处理。 c++代码如下:  #include <algorithm> #include <cstdio> #include <iostream> #include <vect …

Continue reading

[leetcode题解]143. Reorder List(链表重排序)

leetcode第143题,recorder list,属于linked-list相关的题目。 题目给定一个单链表,然后要求按给定的顺序重新排列所有元素,要求在原地做,而且不能修改节点中的值,只能修改节点的插入顺序。重排序的规则如下示例: L:a0->a1->a2->a3…..->an 将其修改为L:a0->an->a1->an-1->& …

Continue reading

[leetcode题解]2.Add Two Numbers

leetcode,2,Add Two Numbers,给定两个单链表,将两个单链表从左到右进行相加,题目中已知不会出现前导0。本题可以直接对两单链表同时进行遍历相加即可,保留一个进位,检测最后是否要进行正确进位,python和c++两种语言写,代码如下: python代码 class Solution(object): def addTwoNumbers(self, l1, l2): “”” :t …

Continue reading

[leetcode题解]19.Remove Nth Node From End of List(删除倒数N个元素)

leetcode,19,Remove Nth Node From End of List,给定一个单链表,删除倒数第N个元素,要求进行一遍遍历即可。思路是利用两个指针,一个提前走N步,然后另一个指针指向开头,两个指针同时走,当前面的指针到尾部时,后面的指针正好位于要删除的元素位置。为了得到要删除位置的前一个位置,可以加入一个预头,然后,前面的指针从头开始,后面的指针从预头开始。 c++代码: cl …

Continue reading

[leetcode题解]21.Merge two Sorted Lists(两排序链表合并)

leetcode,21,Merge Two Sorted Lists,单链表合并问题,合并两个已排序链表为一个完整的已排序链表。 直接使用两个指针依次比较其中值大小即可,小的插入,并且指针后移,最后不要忘记把剩下的非空链表加入链尾。 此题的升级版本为leetcode,23,Merge K Sorted Lists.  c++代码: class Solution { public: Lis …

Continue reading

[leetcode题解]23.Merge K Sorted Lists(多链表合并)

leetcode,23题,Merge K Sorted Lists,多排序链表合并为一个有序链表问题。可以直接使用priority_queue或者heap。 多个链表以vector形式组织,vector中可能含有空链表,所以建堆或者初始化优先队列之前先对vector进行过滤,将空链表过滤掉。 注意优先队列的写法,类型,底层容器,以及要用到的比较器,比较器是一个重载了括号操作符的普通类。 c++题解 …

Continue reading

[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

[leetcode题解]141.Linked List Cycle(链表环问题)

leetcode题解141.Linked list cycle,给定一个单链表,判断该单链表是否有环问题,这个问题蛮简单的,但是在面试中也是经常被问到的,所以要注意一下。解决这道题的思路就是使用两个指针,一个一次走两步,一个一次走一步,如果有环两者必定在某个位置处相遇,只要快的走到了NULL节点,则说明此链表无环。这就是快慢指针找环法,是比较经典的问题。 c++代码如下: class Soluti …

Continue reading

[leetcode题解]147.Insertion Sort List

对单链表的排序,前几天写过一篇文章使用o(nlog(n))的时间复杂度进行排序,当时说可选的方法是利用归并或者快排对单链表进行排序,这个题目同样给定一个单链表,只不过这里要求用插入排序对其进行排序。在数组中我们使用插入排序的时候通常在寻找插入位置的时候是从后向前,这样可以同时查找并把较大的元素后移一位,然后腾出要插入的位置,但是在单链表中就不行了,首先,单链表不能逆向遍历,第二,单链表无需移动,可 …

Continue reading