程序&算法
文章平均质量分 56
Jasonfang0118
这个作者很懒,什么都没留下…
展开
-
IPv4 header checksum算法
The IPv4 header checksum is a simple checksum used in version 4 of the Internet Protocol (IPv4) to protect the header of IPv4 data packets against data corruption. This checksum is calculated only转载 2017-01-12 11:28:10 · 4756 阅读 · 0 评论 -
[Leetcode]Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s.For example,s = "anagram", t = "nagaram", return true.s = "rat", t = "car", return false.从题目看来,得到要求:1. 长度原创 2016-11-17 13:31:32 · 378 阅读 · 0 评论 -
[Leetcode]Reverse Linked List-再写单链表反转
Leetcode碰巧又出现这个问题,看来面试算法这个是很常见的题型,不过很久没写过,这次写来又花了不少时间,主要耽搁在思想的选择上:一是想通过遍历时直接将指针反转,这样比较高效,但是需要处理好前后指针及后续的关系;二是通过构建一个新的链表头,然后遍历时直接将链表元素加入到新链接中,该算法比较简明;/** * Definition for singly-linked list.原创 2016-11-17 10:12:00 · 2086 阅读 · 0 评论 -
[Leetcode] Move Zeroes
Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12], after calling your fu原创 2016-11-16 16:42:49 · 359 阅读 · 0 评论 -
[Leetcode] Invert Binary Tree
Invert a binary tree. 4 / \ 2 7 / \ / \1 3 6 9to 4 / \ 7 2 / \ / \9 6 3 1最先想到的当然是递归的思想,将两个左右指针进行互换:/** * Definition for a binary tree node.原创 2016-11-11 11:00:19 · 226 阅读 · 0 评论 -
[Leetcode]Find the Difference
Given two strings s and t which consist of only lowercase letters.String t is generated by random shuffling string s and then add one more letter at a random position.Find the letter that was原创 2016-11-10 16:21:52 · 281 阅读 · 0 评论 -
[Leetcode]Single Number
Given an array of integers, every element appears twice except for one. Find that single one.思路:1. 使用HASH表存储每个数组元素出现的次数2. 理解按位异或操作的本质原理int singleNumber(int* nums, int numsSize) { int原创 2016-11-10 14:06:24 · 223 阅读 · 0 评论 -
[Leetcode]Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.解:考虑深度优先访问方式求深度./** * Def原创 2016-11-10 13:59:50 · 241 阅读 · 0 评论 -
Leetcode-Nim Game
You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the原创 2016-09-30 00:10:57 · 257 阅读 · 0 评论 -
PyQT实现一个自动生成配置工具
设备要量产,需要为每台设备烧录MAC及设备标识信息,今天为这事情专门写个小工具实现 这个功能,主要解决批量生成烧录配置信息,这里对其过程作个总结:1. 选择QT的原因在于当时手上的图形工具就这一种,不想再花时间去搭建新的环境2. QT简洁高效,搭配Python比较方便3. 功能比较清晰,逻辑简单主要过程:1. 使用QT DESIGNER设置好界面,最终生成一个.原创 2016-09-06 19:47:53 · 1096 阅读 · 0 评论 -
[LeetCode]Add Two Numbers解析
将两个链表的值进行相加,并返回一个新的链表,注意两个地方:一是考虑两个链表的长度是否相同,二是考虑相加后的进位问题/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* a原创 2016-08-19 14:12:05 · 673 阅读 · 0 评论 -
实现单链表的反转
单链表的反转实现很常见:#include #include #include #define NUM 9typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkedList;LNode slinklist = {0, NULL};int initLinkl原创 2016-08-30 14:04:45 · 704 阅读 · 0 评论 -
[Leetcode]Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element原创 2016-11-17 18:53:16 · 293 阅读 · 0 评论 -
[Leetcode] Power of Three
Given an integer, write a function to determine if it is a power of three.判断一个数是否为3的幂:一,除数法,最容易想到的方法:1. 首先是能够整除2. 整除到最后的数一定为1则说明TRUE否则FALSEbool isPowerOfThree(int n) { if (n <= 0)原创 2016-11-17 19:25:22 · 346 阅读 · 0 评论 -
[Leetcode]Two Sum II - Input array is sorted
Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two number原创 2016-12-27 14:52:39 · 508 阅读 · 0 评论 -
[Leetcode] Number of 1 Bits & Counting Bits
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11' has binary representation 000000原创 2016-11-19 15:27:46 · 361 阅读 · 0 评论 -
[Leetcode] Intersection of Two Linked Lists
Write a program to find the node at which the intersection of two singly linked lists begins.For example, the following two linked lists:A: a1 → a2 ↘原创 2016-11-28 11:29:52 · 472 阅读 · 0 评论 -
[Leetcode] Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.题意:查找字符串数组中的最长子串思路:1. 找到最短长度的字符串,然后求得其他字符串与最小串的最大公共长度char* longestCommonPrefix(char**strs, int strsSize) {原创 2016-11-23 19:10:57 · 412 阅读 · 0 评论 -
[Leetcode] Contains Duplicate II
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j]and the difference between i and j is at most k.题原创 2016-11-23 16:16:55 · 376 阅读 · 0 评论 -
[Leetcode] Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the原创 2016-11-23 13:18:26 · 260 阅读 · 0 评论 -
[Leetcode] Remove Duplicates from Sorted Array
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place with原创 2016-11-22 13:03:47 · 284 阅读 · 0 评论 -
判断单链表是否有环
1、对于单链表而言,只有通过从头到尾的遍历方式,如果发现尾指针指向头指针则说明有环。2、使用双指针,一个遍历的速度快,一个较慢,如果快的指针追上了慢的那个说明有环:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next;原创 2016-11-21 17:22:52 · 349 阅读 · 0 评论 -
[Leetcode] Remove Element
Given an array and a value, remove all instances of that value in place and return the new length.Do not allocate extra space for another array, you must do this in place with constant memory.原创 2016-11-21 16:41:36 · 272 阅读 · 0 评论 -
[Leetcode] Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3.思路:1. 前提是整个链表是有序的2.原创 2016-11-19 14:58:09 · 291 阅读 · 0 评论 -
[Leetcode] Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock),原创 2016-11-18 10:20:09 · 370 阅读 · 0 评论 -
function to count the number of "1" of one byte
function to count the number of "1" of one byte ,for example 5(0101)has two "1"经常遇到的面试题,毫无疑问需要借助位操作:unsigned int bitCount (unsigned int value) { unsigned int count = 0; while (value >原创 2016-08-30 14:02:14 · 305 阅读 · 0 评论 -
实现memove
void *memmoves(void *dest, const void *src, size_t count){ char *tmp_dst = NULL; const char *tmp_src = NULL; if (dest <= src) { tmp_dst = dest; tmp_src = src;原创 2016-08-30 13:54:13 · 376 阅读 · 0 评论 -
程序员成熟的标志
摘要: 程序员在经历了若干年编程工作之后,很想知道自己水平到底如何?自己是否已经成为成熟的程序员?虽然程序员会对自己有一个自我评价,但是,自己的评 价和社会的评价、专业的评价会有差异,所以程序员自己并不能肯定 ... 程序员在经历了转载 2012-07-21 21:49:39 · 1004 阅读 · 0 评论 -
Posix 消息队列的创建问题
如下代码:#include #include #include #include #include #include #include #include #define MQ_DATA_FILE "/tmp/tmp_mq_ipc_file"int main(int argc, char **argv){ mqd_t mq_list; struct mq_原创 2012-07-18 15:05:01 · 987 阅读 · 0 评论 -
命令行通讯录(By_Python)
简明python上尾声,作者给了读者一道题,闲着没事,整了整(还是有很多问题的,基本功能是没问题的),诸多问题有时间再来解~这次让我最大的体会还是书中那着诗:When the work is done,but if you wanna make work also fun,using python.....作个笔记,上code吧。#!/usr/bin/python#import sys原创 2012-07-12 22:15:43 · 782 阅读 · 0 评论 -
FIFO之小记
把AUP上的FIFO小节又重温了一下,有几个问题需要注意:1. open fifo时的顺序问题(只有当该FIFO为已写打开后,才可读)2. open fifo时的EEXIST错误码处理(如果FIFO不存在我们才创建,否则直接打开用即可)3.从FIFO中读数据的连续性(系统调用的原因(缓冲区))写了个测试小程序:#include #include #include #inc原创 2012-07-18 10:54:16 · 442 阅读 · 0 评论 -
xlrd解析excel文档
python解析excel表,然后创建一件xml文件,当然这个文件是具有特定的格式的,以工作中用到的一类为例,整了个比较简单的~目前我只实现了单实例的生成方法,具有多级的实例没有做,以后有时间再细究,这里会生成两个文件,一个是xml,一个是文本,文本文件记录了各实例的子属性~采用行方法写入文件~!用到的是一个xlrd的python库,功能还是很强大的,这也是我用python解决这个问题的原因!原创 2012-07-17 16:14:11 · 1350 阅读 · 0 评论 -
全双工管道
管道创建:int pipe(int fd[]);fd[0]/fd[1]分别对应:读、写全双工管道,顾名思义就是数据通讯是双向的,即fd[0]/fd[1]都可用来读或者写摘录一个小例子(来自Unix Neworking Programming Volume 2 Interprocess communications)稍改动过:#include #include #in原创 2012-06-27 17:13:27 · 3048 阅读 · 2 评论 -
[Expect C Programming]-1-微妙的bug
如下段代码:int array[] = {1,2,3,4,5,6,7};#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))int main(){ int d = -1, x; /* ... */ if (d <= TOTAL_ELEMENTS - 2) { x = arr原创 2012-06-26 11:23:07 · 467 阅读 · 0 评论 -
Core Python上的第一个程序
Core Python上的第一个程序,书上的排版尤其是针对代码这块最令我不爽,看来看去,这个缩进很明显的错误~还是要自己改改,调调才可,尽信书不如无书,也好~!#!/usr/bin/env python#'makeTextFile.py -- create text file'import osls= os.linesep#get filenamewhile True:原创 2012-07-04 16:00:32 · 846 阅读 · 0 评论 -
AUP学习笔记--基本的I/O系统调用
最近在读高级unix编程一书,没事就写写总结吧,把一些重点内容记录下来,以后要复习或者找资料的话还可以省点时间,闲话不多说,unix下系统编程我想跟Linux下的应该没什么区别,一般说来我会直接在linux下进行实验,说到这里,前些天把自己的本整成了双系统,分了六十G给fedora16,使用GNOME3感觉很清爽,界面也很炫,一些工作上用到的toolchain也配置好了,还以为有多么复杂,没想到只原创 2012-05-22 21:58:36 · 719 阅读 · 0 评论 -
AUP----mkstemp和tmpfile
Linux下创建一个临时文件有两种方式:mkstemp和tmpfile,两者区别在于:tmpfile这个函数创建文件后会自动删除文件,而mkstemp创建的文件要调用unlink来删除,tmpfie返回的是一个文件指针,而mkstemp的返值则是一个FD,需要注意mkstemp函数只有一个参数,这个参数是个以“XXXXXX”结尾的非空字符串。mkstemp函数会用随机产生的字符串替换“XXXXXX原创 2012-06-04 17:27:37 · 746 阅读 · 0 评论 -
shell脚本多行注释及读取方向键输入
一、shell脚本多行注释方法,即注释一个语句块::<<COMMENT .. .. COMMENT二、读取方向键输入上:^[[A下:^[[B左:^[[D右:^[[C用cat -v看到这些方向键输入的字符,长度为三,实际上我们只须判断最后一个字符,即A,B,C,D,如下程序:#!/bin/shKEY=()echo原创 2012-06-01 15:30:08 · 3067 阅读 · 0 评论 -
core dump文件及应用
在写 Linux 程序时,经常会遇到“段错误”(segmentation fault) 这样的问题。如果程序比较大,那么如果用 gdb 调试可能显得比较吃力。这时可以用 core dump 文件来进行分析。那什么是 core dump 文件呢?core dump 文件就是在程序发生错误时,由操作系统把程序错误时的相应内容 dump 出来,然后存储在一个文件中,这个文件就是当时的内存转载 2012-08-29 09:24:02 · 765 阅读 · 0 评论 -
linux下修改系统时间
当然不是通过命令,命令的话要好好看下date,因为这两天的任务一直是系统时间相关,这里只是简明说说settimeofday这个函数.NAME gettimeofday, settimeofday - get / set timeSYNOPSIS #include int gettimeofday(struct timeval *tv原创 2012-08-20 16:06:44 · 916 阅读 · 0 评论