自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 分类中使用@property注意点

注意:在在分类中声明@property, 只会生成方法的声明, 不会生成方法的实现和带有_下划线的成员变量;

2016-09-23 11:11:47 654 0

原创 oclint-xcodebuild 的使用

一、OCLint官网简介 OCLint是一个代码静态分析描工具,可以用来提高质量和减少缺陷,他目前支持C,C++,Objective-C语言,它目前可以发现这些问题:可能的bug - 空的 if / else / try / catch / finally 语句 未使用的代码 - 未使用的局部...

2016-08-21 09:26:57 1068 0

原创 block知识点回顾

1、简介 (1)Block是OC中的一种数据类型,在iOS开发中被广泛使用 (2)^是Block的特有标记 (3)Block的实现代码包含在{}之间 (4)大多情况下,以内联inline函数的方式被定义和使用 (5)Block与C语言的函数指针有些相似,但使用起来更加灵活2、格式说明 ...

2016-08-04 11:45:36 570 0

原创 scrollView中contentSize、contentInset和contentOffset知识点回顾

一、概述 IOS中,UIScrollView是可以滚动的视图,它有两个子类,分别是UITableView和UITextView。UIScrollView有三个容易让人混淆的属性变量: contentSize、contentInset和contentOffset。二、具体比较 1、首先,UIS...

2016-08-02 18:22:43 6153 0

原创 Masonry使用小记

1、简介 Masonry是目前最流行的Autolayout第三方框架,使我们能够用优雅的代码方式编写Autolayout,省去了苹果官方繁琐的Autolayout代码,大大提高了开发效率。2、使用步骤 (1)使用CocoaPods托管该库或添加Masonry文件夹的所有源代码到项目中 (2)...

2016-07-29 17:17:40 2118 0

原创 CocoaPods 使用经验小记

1、使用CocoaPods来管理第三方框架时,当执行 pod install / pod update后,可能会很慢,一直卡着不动,原因是当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,然后速度就会提升不少。加参数的命令如下:pod install --v...

2016-07-29 09:49:50 1581 0

原创 Jenkins + Xcode + Fir.im 自动构建项目,并打包ipa上传(MAC)

Jenkins + Xcode + Fir.im 自动构建项目,并打包ipa上传(MAC)

2016-07-20 16:02:57 6940 0

原创 Xcode打包ipa的步骤(简述)

一、概述 (1)iOS开发中,应用程序打包 = ipa = 安装在手机上。(注意,并不是所有的ipa都可以随意安装) (2)如果想让用户可以安装ipa,必须在打包程序的时候说清楚 哪一个应用程序可以安装到哪一台设备上。 (3)一般要想打包(测试或发布),必须成为苹果开发者。二、打包(生成i...

2016-07-16 16:53:57 27530 0

原创 iOS开发证书相关(简述)

一、开发者账号分类 一般分为个人的、企业的、商业的三种,详细自己百度。二、Certificates 证书、Identifiers 标示符、Profiles 描述文件 的简介 1、证书(Certificates) 即安装在电脑上,只有安装了证书的电脑,才有可能进行真机调试。 - All...

2016-07-16 14:39:01 1814 0

原创 二叉树的镜像(反转二叉树)

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 二叉树结点的定义如下:struct BinaryTreeNode { int data; BinaryTreeNode *Left; BinaryTreeNode *Right; }; 树的...

2016-07-13 11:23:36 833 0

原创 Office For Mac 中的 Excel 表格怎样换行

解决方案: (1)Offcie for Mac 的 Excel 表格里,选中一个单元格按回车,会自动跳到下面的单元格(Windows 版也一样)。 (2)若想在单元格里换行,按住 control、option、command 这三个键中的任意两个,再回车即可。

2016-07-10 11:32:20 41043 2

原创 Retina、非Retina、点、像素、iPhone分辨率

1、@1x @2x和@3x 简介 首先看下切图的命名方式: 假设有两张图片名为:test_t@2x.png 和 test_t@3x.png,这是对于ios 切图来说的。 iPhone 4、5、6 是采用test_t@2x.png 这个图,iPhone 6 plus就采用test_t@3x....

2016-07-09 17:02:06 3695 0

原创 iPhone的设置中,找不到“开发者选项”

一般情况下,当使用 iphone 连接到 Mac ,并打开 XCode 时,iPhone 的设置中会自动出现“开发者选项“。 如果打开 XCode 时,仍然找不到“开发者选项“,那么可能原因是: XCode 版本太低。可通过如下路径: /Applications/Xcode.app/Conte...

2016-07-08 19:28:15 27323 0

原创 SourceTree+OSChina 版本管理

步骤: (1)创建远程仓库 网址: http://git.oschina.net 点击 “+” 来创建新项目,如下图所示:(2)创建项目时,如下图: (3)创建好之后,显示如下: (4)打开 sourceTree,点击新仓库,从URL克隆 (5)将(3)中的URL粘贴到“源URL“位置...

2016-07-08 16:52:48 1883 0

原创 CocoaPods的安装和简单使用

一、CocoaPods简介 CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第三方开源库的时间。 在使用CocoaPods之前,开发项目需要用到第三方开源库的时候,我们需要 ...

2016-07-07 13:13:50 6343 0

原创 获取App素材

步骤如下(以咪咕阅读为例): 1、打开iTunes,先进入其中的App Store,然后在搜索框中搜索“咪咕阅读“,如下图: 然后获取“咪咕阅读App“。2、获取之后,点击我的应用,找到“咪咕阅读“,然后右键选择“在Finder”中显示,我们会发现一个名为“咪咕阅读 6.1.0.ipa“的...

2016-07-05 19:32:25 2244 0

原创 MAC中git命令自动补全

步骤如下: 1、下载git-completion.bash 或者直接使用SourceTree去clone到本地。 下载地址:https://github.com/markgandolfo/git-bash-completion2、从下载的git-bash-completion文件夹中,找到gi...

2016-07-05 12:44:48 2788 1

原创 判断一个链表是否为回文结构

题目:判断一个链表是否为回文结构。 要求:时间复杂度为 O(n),空间时间复杂度为O(1)。思路分析:回文链表的特点就是对称,那么要判断是否回文,就可以用两个指针指向对称的节点,看它们的数据是否一样。由于是单向链表,不能同时用两个指针,从头尾向内部遍历取值比较。且本题对空间复杂度也有要求,所以可...

2016-07-02 20:31:19 3321 0

原创 去除整型数组中的重复数字

题目:如何把一个整型数组中重复的数字去掉。 分析:首先通过快速排序对数组进行排序,然后对排好序的数组经过一次遍历,将其重复元素通过交换,最终达到删除重复元素的目的。总的时间复杂度为 O(nlogn),空间复杂度为O(1)。下面借助c语言类库中自带的快速排序算法qsort,来实现排序。具体实现如下...

2016-06-27 20:12:57 5791 0

原创 如何判定数组是否存在重复元素

题目:假设数组 array 有 n 个元素,元素取值范围是 1~n,如何判定数组是否存在重复元素? 方法一:对数组进行排序(可以用效率比较高的排序算法,如快速排序、堆排序等),然后比较相邻的元素是否相同。时间复杂度为 O(nlogn),空间复杂度为O(1)。下面借助c语言类库中自带的快速排序算法...

2016-06-27 16:44:16 5294 0

原创 找出数组中唯一的重复元素

题目:数组 arr[N],1 至 N 这 N - 1 个数存放在 arr[N] 中,其中某个数重复一次,写一个函数,找出重复的数字。要求每个数组元素只能访问一次,不用辅助存储空间。 分析:由于题目要求每个数组元素只能访问一次,不用辅助存储空间,可以从原理上入手,采用数学求和法,因为只有一个数字重...

2016-06-26 20:49:30 4032 0

原创 判断整数 x 能否表示成 n(n >= 2)个连续正整数的和

题目:如何判断一个整数 x 是否可以表示成 n(n >= 2)个连续正整数的和。 思路分析: (1)假设 x 可以表示成 n(n >= 2)个连续正整数的和,那么数学表达式如下:x = m + (m + 1) + (m + 2) + … + (m + n - 1),其中 m 为分解...

2016-06-25 22:14:49 3477 1

原创 如何计算出序列的前n项数据

题目:正整数序列 Q 中的每个元素都至少能被正整数 a 和 b 中的一个整除,现给定 a 和 b,如何计算出 Q 中的前几项?例如,当 a=3,b=5,N=6时,序列为3,5,6,9,10,12。思路分析:可以和归并排序联系起来,给定两个数组 A、B,数组 A 存放:3 x 1,3 x 2,3 x...

2016-06-25 20:06:06 1166 0

原创 找出数组中第二大的数

题目:如何找出一个数组中第二大的数。 分析:如果仅仅只考虑实现,而不考虑时间效率,可以首先通过排序算法,将数组进行排序,然后根据数据下标来访问数组中第二大的数。最快的排序算法一般为快速排序算法,但是其时间复杂度仍然为O(nlogn),根据下标访问需要遍历一遍数组,时间复杂度为O(n),所以总的时...

2016-06-25 19:13:49 6529 2

原创 重排数组使得数组左边为奇数,右边为偶数

题目:给定一个存放整数的数组,如何重新排列数组使得数组左边为奇数,右边为偶数?要求:空间复杂度为O(1),时间复杂度为O(n)。 分析:采用类似快速排序的处理。可以用两个指针分别指向数组的头和尾,头指针正向遍历数组,找到第一个偶数,尾指针逆序遍历数组,找到第一个奇数,交换两个指针指向的数字,然后...

2016-06-25 16:57:52 1958 0

原创 找出数组中符合条件的数对的个数

题目:一个整型数组,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。 方法一:排序+二分查找。先对数组进行排序,然后遍历该有序数组,同时使用二分查找方法,查找对应的值是否存在(例如,有序...

2016-06-25 16:00:07 3076 0

原创 找出数组中出现奇数次的元素

题目:给定一个含有n个元素的整型数组array,其中只有一个元素出现奇数次,找出这个元素。 分析:因为对于任意一个数 k,k^k = 0,k^0 = k,所以将array中所有元素进行异或,那么个数为偶数的元素异或后都变成了0,只留下了个数为奇数的那个元素。#include <iostre...

2016-06-24 22:07:30 5312 0

原创 判断数组中的数字是否连续相邻

一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现;0是例外,可以反复出现。设计一个算法,当从该数列中随意选取5个数值时,判断这5个数值是否连续相邻。需要注意以下4点: (1)5 个数值允许是乱序的,如 8 7 5 0 6。 (2)0 可以通配任意数值,如8 7 5...

2016-06-24 20:35:57 5095 0

原创 找出数组中出现次数超过一半的数(时间复杂度O(n))

题目:如何在O(n)的时间复杂度内找出数组中出现次数超过了一半的数。 由于本题对时间复杂度有要求,所以可采用以下2种方法。方法一:每次取出两个不同的数,剩下的数字中重复出现的数字肯定比其他数字多,将规模缩小化。如果每次删除两个不同的数(不管包括不包括最高频数),那么在剩余的数字里,原最高频数出现...

2016-06-24 13:27:01 6404 3

原创 数组中重复次数最多的数

题目:如何找出数组中重复次数最多的数。 方法一:以空间换时间,即hash法。可以定义一个数组 int count[MAX],并将其数组元素都初始化为0;然后对原数组array[ ]进行遍历,并执行 count[ array[ i ] ]++ 操作;最后在count数组中找到最大的数,该数在cou...

2016-06-23 22:24:51 2140 0

原创 两个有序整型数组的交集

题目:如何计算两个有序整型数组的交集? 例如,两个含有 n 个元素的有序(非降序)整型数组 a 和 b(数组 a 和 b 中都没有重复元素),求出其共同元素。 int a[ ] = {1, 2, 3, 4, 5}; int b[ ] = {1, 3, 5, 7, 9}; 那么它们的交集为{...

2016-06-23 19:24:53 923 0

原创 如何在排序数组中,找出给定数字出现的次数

题目:如何在排序数组中,找出给定数字出现的次数?例如,数组{1, 2, 2, 2, 3} 中 2 的出现次数是3次。思路分析:本题有多种解法。如取出该特定值,然后循环遍历该数组,统计该特定值出现的次数;或者使用 hash 法,来统计该特定值出现的次数。本文主要讨论在二分查找的基础上来解决该问题。设...

2016-06-23 15:07:32 621 0

原创 二分/折半查找(递归+非递归)

二分查找法也称为折半查找法,它的思想是每次都与序列的中间元素进行比较。二分查找的一个前提条件是数组是有序的,假设数组array为递增序列,findData为要查找的数,n为数组长度,首先将n个元素分成个数大致相同的两半,取array[n/2]与将要查找的值findData进行比较,如果findDa...

2016-06-23 14:40:18 342 0

原创 用递归算法判断一个数组是否递增

本题要求使用递归算法,设数组为array,则递归数组满足以下条件。 (1)如果数组长度为1,则该数组为递增,返回true。 (2)如果数组长度为n(n >= 2),则先比较最后两个元素是否递增,如果最后两个元素递增,则再递归比较除去最后一个元素的前 n-1 个元素是否递增。具体实现如下:...

2016-06-23 10:50:01 4660 2

原创 用一个for循环打印出一个二维数组

思路分析: int array[row][column]; 首先,二维数组在内存中默认情况下是行存储的,所以可以将二维数组array看成一个一维数组,i 标识该数组在一维数组中的位置,则array在二维数组中的行号和列号分别为 [ i / column] 和 [ i % column]。 ...

2016-06-23 09:50:54 3154 0

原创 递归实现数组求和

如果使用递归,则需要考虑如何进行递归执行的开始以及终止条件。 (1)首先,如果数组元素个数为0,那么和为0。 (2)如果数组元素个数为n,那么先求出前 n - 1 个元素之和,再加上 arr[n - 1] 即可。此时可以完成递归功能。具体实现如下:#include <iostream&g...

2016-06-22 21:19:10 1363 0

原创 统计字符串中每个字符出现的次数

题目要求:写出一个函数,查找出每个字符出现的次数,主要区分大小写,要求时间复杂度是O(n)。 分析:用256个元素的数组count,来分别记录ASCII码为0~255的字符的个数,初始化为0,遍历每个字符,对该字符对应的数组元素的值加1。最后count[ i ]中存储的数值就是字符 i 出现的次...

2016-06-22 19:46:30 14460 0

原创 交换单链表中任意两个元素(不包括表头)

对于单链表而言,假设要交换的节点为A和B,那么在交换之前,建议先保存要交换节点的前后两个节点,可以减少错误率。(即分别保存A和B的直接前驱和直接后继节点--一般是4个节点) 需要注意的特殊情况: <1> 当A和B相邻时(假设A在前,B在后),此时需要做特殊处理,并且只需保存A的直接...

2016-06-22 16:13:41 602 0

原创 单链表排序(归并排序法)

我们已经在“ 单链表排序(冒泡排序法)“中探讨过怎样用冒泡排序法进行单链表的排序,但是在各种排序算法中,冒泡排序并非最高效的,对链表这一特定数据结构而言,最好使用归并排序算法。而堆排序、快速排序这些在数组排序时性能非常好的算法,用在只能“顺序访问“的链表中却不尽如人意(由于无法对链表随机访问,快速...

2016-06-21 10:17:15 1488 1

原创 合并两个有序的链表(非交叉)

题目:如何合并两个有序的链表(非交叉) 思路分析: 合并两个有序链表(假设链表元素为升序排列),一般可以采用递归和非递归两种方式实现。 第一种:递归方法 设两个链表(不带头节点的单链表)的首元节点分别为head1和head2,如果head1为空,则直接返回head2;如果head2为空,则...

2016-06-21 10:09:00 698 0

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