
算法
文章平均质量分 80
hherima
移动互联网,大有可为!APP开发经历:飞信、和4G、搜狐视频、56视频等项目。
展开
-
数组计数排序,类似于桶排序小问题
题目描述:http://ac.jobdu.com/problem.php?cid=1039&pid=16公司现在要对所有员工的年龄进行排序,因为公司员工的人数非常多,所以要求排序算法的效率要非常高,你能写出这样的程序吗?输入:输入可能包含多个测试样例,对于每个测试案例,输入的第一行为一个整数n(1输入的第二行包括n个整数:代表公司内每个员工的年龄。其中,员工年龄age的转载 2013-03-19 10:35:17 · 1479 阅读 · 0 评论 -
浅谈IM软件业务知识-实现富文本解析,如:解析字符串、网络链接等
之前在某IM项目中做开发,项目涉及到字符串解析的功能,例如:在输入框输入"/微笑"到聊天窗口中就可以显示为微笑的图片。如何实现这种“文本->图片”的转换,这就使用到了多叉树的数据结构。整个过程需要三步:第一步:准备好表情资源。首先说以下表情图片的特殊性,由于表情都是png格式,为了节省空间将所有表情合成为一张png图片。拿表情前3个,微笑 大笑眨眼 为例,每一个表情定义一个结构体structEmotio原创 2013-03-20 15:09:11 · 3178 阅读 · 1 评论 -
拼图算法,将零碎小图,整理到一张大图之上,自动合并。二叉树实现
----------------------------------------------------欢迎查看IM软件业务知识《专栏》-------------------------------------------------------------------使用状态机来保持在线状态 【点击】 拼图算法,将零碎小图,整理到一张大图上【点击】登录导...原创 2014-08-15 10:53:17 · 16044 阅读 · 8 评论 -
【原理】UITableview Deceleration 加速滑动(惯性滑动)、弹性回归原理
一、前言之前做Symbian项目,由于软件的界面完全是自绘的。所以列表也是自绘,所以,列表的滚动也要自己做,然后就试着做了两个引擎:1.惯性滑动引擎:用于列表比较长,快速滑动,加速滑动。2.弹性回归引擎:用于列表已经滑动到顶端(末端)需要再往下(往上)移动一些距离,表示别表已经到头。引擎每隔0.04秒(大约是每秒24帧)就刷新一次,由于是GC绘制,所以每次滑动时需要条用绘制函数。效原创 2013-03-20 11:24:28 · 8674 阅读 · 2 评论 -
《PNG文件格式》(三)PNG文件实例剖析
[length] 00 00 00 0D 说明IHDR头块长为13[Chunk Type Code] 49 48 44 52 IHDR标识(就是ASIIC值)[Chunk Data]:下面13个字节,分别如下: (0-3). 00 00 00 28 图像的宽,40像素 (4-7). 00 00 00 28 图像的高,40像素 (08). 08 色深,2^8 = 256,即这是一个真彩色图像 (09). 06 颜色类型,带α通道数据的真彩色图原创 2015-05-25 13:05:04 · 6688 阅读 · 5 评论 -
《PNG文件格式》(二)PNG文件格式分析
PNG文件结构对于一个PNG文件来说,其文件头总是由位固定的字节来描述的,HEX: 89 50 4E 47 0D 0A 1A 0A使用ultra打开一个png图片,结果如下: 其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理。文件中剩余的部分由3个以上的PNG的数据块(Chunk)按照特定的顺序组成,因此,一个标准的PNG文件结构应该如下:原创 2015-05-25 13:06:07 · 18708 阅读 · 1 评论 -
UITableView上拉、下拉原理
tableView上拉、下拉原理。 TableView的上拉,下拉特效已经满大街都是了,也有很多第三方的代码。 这两天研究了一下其原理,先分享一下。这里以tableView的上拉为例,由于上拉操作的样式也很多,这里只介绍一种:在上拉tableView的时候,在tableView的bottom下面,添加一个view,该view可以自定义。我称这个view为pullView,pullView是动态的,如下图(该图仅展示了loading状态,另外在loading的位置,还有“上拉显示更多”、“松手原创 2015-04-08 09:31:41 · 2934 阅读 · 0 评论 -
tableview中index对英文字符汉字字符(窄字符宽字符)处理
开发iOS通讯录项目,遇到一个tableview 索引的问题。测试同学发现一个bug:添加一个名字为宽字符A不能归并到索引A的section中,而是使用了添加了一个叫A的索引原创 2015-01-17 16:23:28 · 1754 阅读 · 0 评论 -
查找算法——二叉树查找
1. 查找树的创建(createTree)假设有如下数组4,1,45,78,345,23,12,3,6,21首先选定4为root,然后遍历剩下的数字,如果大于等于4则放到4的右侧,小于4放到4的左侧,最后构建成的树:所有的左孩子都小于父节点,所有的右孩子都大于等于父节点。如下图:2. 遍历查找树(displayTree)按照左中右的顺序遍历树,结果为:1,3,4转载 2014-09-15 18:20:49 · 8527 阅读 · 0 评论 -
单词、字符串儿翻转,栈实现!
对字符串“this is very good”进行翻转,即“good very is this”;思路:1.字符串的翻转的问题,可以使用栈实现。2.先把所有字符翻转,然后对再对某一个单词翻转,最终实现题目要求。原创 2014-08-12 15:38:52 · 1714 阅读 · 0 评论 -
智力题总结——求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
面试的时候遇到这个问题,其实很简单,但是条件太苛刻,这完全是个智力题:题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。其实会有很多种解法,有构造函数办法的,但是下面给出了一个简单的代码-----巧用递归算法和条件判断。#include #include原创 2014-03-11 13:18:48 · 1731 阅读 · 0 评论 -
UITableView分组冻结的研究与实现浅析
当我们使用iphone手机通讯录,手机qq的时候。有一个细节大家可能已经忽略,即“分组”控件在向屏幕上方滑动时,超过屏幕的高度,就冻结到屏幕最上端。方便用户确定当前浏览的是哪个分组。当下面的分组上来时候,又会当前冻结的窗口顶上去,它自己又实现冻结!原创 2014-08-23 22:25:14 · 1942 阅读 · 0 评论 -
c语言实现动态指针数组Dynamic arrays
基本原理:事先准备好一个固定长度的数组。如果长度不够的时候,realloc一块区域。另外:在数组元素减少的情况下,需要缩减数组长度。原创 2014-07-28 23:53:08 · 4546 阅读 · 0 评论 -
c语言实现hashtable,类似C++的map和iOS的NSDictionary
跟线性数组和链表不同,HashTable是快速查找的数据结构。本文中的HashTable使用链表处理数组。该HashTable可以指定table的长度,提供了遍历的方法。包括table的长度的选择也比较讲究。 cp_int32 nPrime[MAX_HASH_PRIME_ARRAY_NUM] = { 17, 37, 79, 163, 331, 673, 1361 };就是说table的长度来取自上面这个数组。比如用户设定了200,那么ta原创 2014-07-30 17:00:17 · 3922 阅读 · 0 评论 -
c语言实现tree数据结构
该代码实现了tree的结构,依赖dyArray数据结构。有first一级目录,second二级目录。dyArray的c实现参考这里点击打开链接 hashTable的c实现参考这里点击打开链接下面是跨平台的数据类型定义//// cpPlatform.h// dataStruct//// Created by hherima on 14-7-29.// Copyrigh原创 2014-08-01 11:23:20 · 5810 阅读 · 0 评论 -
智力题搜集
第1、火车运煤 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市? 这道题一开始看上去好像是无解的,因为你的火车每一公里就要消耗一吨煤,而转载 2013-03-22 15:11:37 · 1150 阅读 · 0 评论 -
问题:客户端从服务器分页获取列表,如何保证流量最少,且客户端和Server数据的一致性?
遇到一个典型问题:客户端从Server分页拉取一组数据原创 2014-02-14 10:40:43 · 2298 阅读 · 1 评论 -
把内存中的值以16进制输出
传统的做法是,请看下面两个函数。typedef unsigned char u_char;void convert(u_char* src,int length){ char* des = (char*)malloc(length*2+1);//多出的一个用来存放\0 int i=0; for(;i<length;i++) { u_char原创 2013-05-12 11:15:57 · 3580 阅读 · 0 评论 -
[算法]iOS 视频添加水印,合成视频两种方案(整体渲染和分割渲染)
现手机里有一段视频,通过APP给他添加一个水印。iOS提供了在视频上添加layer的接口,添加一个水印还是很方便的(添加水印)。添加完水印有一个渲染过程,在手机这种设备上还是比较慢的,比如:对1分钟的高清视频(960x540)进行渲染需要20秒左右。如何在现有API基础上提高渲染速度,提升用户体验,成了问题。笔者发现两种渲染方法: 先看图,这有一个6秒的视频,我抓了四张关键帧。只在第2,3两张关键帧上添加字幕(一个关键帧代表1.5秒。所以,两个关键帧就代表是3秒时长)原创 2017-05-25 14:49:40 · 6540 阅读 · 1 评论