iOS面试中常见的算法题目
一、前言
这里是在iOS求职中自己遇到的算法题,希望对大家有所帮助。不定期更新。如果大家想在线运行代码调试,可以将代码拷贝到这里。然后进行调试。下面就是常见的算法题目。
二、正文
1、就n的阶乘。(这里只是用于小数,大数会越界)
思路:这里面用递归实现
#include <stdio.h>
int getNJ(int n) {
|| n==) {
;
}
);
}
int main() {
printf());
;
}
运行结果如下:
2、判断一个字符串是否是ip。
思路:先将字符串分割到两个数组里面(一个数字数组,一个字符数组),然后判断数字数组内容是否满足ip条件,字符数组里面是否是"."。这里面主要用了sscanf函数。代码如下:
#include <stdio.h>
int checkIP(const char *p) {
];
];
],&c[],&n[],&c[],&n[],&c[],&n[],&c[])==) {
int i;
;i<;i++) {
if(c[i]!='.') {
;
}
}
;i<;i++) {
||n[i]<) {
;
}
}
;
}else {
;
}
}
int main() {
const char *x[] =
{
"132.168.1.1",
"10.0.0.1.",
"127.256.0.1",
"iudfdsfdasfdaf",
"172.16,2.1"
};
const char *m[] =
{
"不是合法的IP地址",
"是合法的IP地址"
};
;
) {
printf("%s %s\n",x[i],m[checkIP(x[i])]);
i++;
}
;
;
}
运行结果如下:
132.168.1.1 是合法的IP地址 10.0.0.1. 不是合法的IP地址 127.256.0.1 不是合法的IP地址 iudfdsfdasfdaf 不是合法的IP地址 172.16,2.1 不是合法的IP地址
3、二分查找
思路:二分查找又称折半查找,前提是待查找表为有序表。将查找目标与数组中间的数对比,如果大于中间的数就在中间数和最大数之间查找,如果小于中间数就在小数和中间数之间查找。
#include <stdio.h>
int bsearchMethod(int arr[],int low,int high,int target) {
while (low<high) {
;
if (arr[mid]>target) {
high = mid-;
}else if(arr[mid]<target){
low = mid+;
}else {
return mid;
}
}
;
}
int main(void) {
,,,,,,,,,,};
printf(,,));
;
}
运行结果为:
查找数在数组第5位
其中-1为查找失败
4、100层楼2个鸡蛋问题?
5、字符串反转输出问题?
6、红黑树?
7、河左边有:狼、羊、白菜,一个人过河,一次只能带走一件东西,怎么做能够保证三物都到河右边?规则(狼吃羊、羊吃白菜)
答:先把羊带到对面,然后把白菜带到对面,这个时候把羊带走,把狼带回对面,回去再把羊带回对面。
8、有一张圆形的桌子,两个人轮流往桌子上放硬币,假设两人有无限多的大小相同的硬币且不考虑桌子的大小,规定硬币之间不可以重叠,但可以相互碰着边,谁最后一个放硬币谁就赢,问谁会赢,第一给放硬币的人还是第二个?(更新时间:2016年10月18日)
答:第一个出的赢,但是第一个首先的做法是:把第一个放在中心,然后当第二个人出的时候,第一个人就对称着放硬币,第一个人就赢了。
iOS面试中常见的算法题目的更多相关文章
- 面试中常见的算法之Java中的递归
1.方法定义中调用方法本身的现象2.递归注意实现 1) 要有出口,否则就是死递归 2) 次数不能太多,否则就内存溢出 3) 构造方法不能递归使用3.递归解决问题的思想和图解: 分解和合并[先分解后合并 ...
- iOS项目中常见的文件
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- iOS开发中常见的一些异常
iOS开发中常见的异常包括以下几种NSInvalidArgumentExceptionNSRangeExceptionNSGenericExceptionNSInternallnconsistency ...
- 面试中常用排序算法的python实现和性能分析
这篇是关于排序的,把常见的排序算法和面试中经常提到的一些问题整理了一下.这里面大概有3个需要提到的问题: 虽然专业是数学,但是自己还是比较讨厌繁琐的公式,所以基本上文章所有的逻辑,我都尽可能的用大白话 ...
- iOS 开发中常见的设计模式
最近有小伙伴问到在iOS开发中的几种设计模式,这里摘录一下别人的总结(因为已经感觉总结得差不多了,适用的可以阅读一下) 首先是开发中的23中设计模式分为三大类:1.创建型 2.结构型 3.行为型 (i ...
- JavaScript 面试中常见算法问题详解
1.阐述下 JavaScript 中的变量提升 所谓提升,顾名思义即是 JavaScript 会将所有的声明提升到当前作用域的顶部.这也就意味着我们可以在某个变量声明前就使用该变量,不过虽然 Java ...
- Java面试题整理:这些Java程序员面试中经常遇见的题目,必须掌握才能有好结果
1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时 ...
- iOS开发中常见的语句@synthesize obj = _obj 的意义详解
我们在进行iOS开发时,经常会在类的声明部分看见类似于@synthesize window=_window; 的语句,那么,这个window是什么,_ window又是什么,两个东西分别怎么用,这是一 ...
- iOS开发中常见的语句@synthesize obj=obj的意义详解
我们在进行iOS开发时,经常会在类的声明部分看见类似于@synthesize window=_window; 的语句,那么,这个window是什么,_ window又是什么,两个东西分别怎么用,这是一 ...
随机推荐
- ruby self.included用法
===Module#included 当一个模块混入到类时,如果该模块的included方法已经定义,那么该方法被调用.该方法的唯一参数就是接受混含的类的名字. module M def self.i ...
- ruby -- 问题解决(四)编码错误导致无法显示(2)
从数据库中取得数据显示时报 incompatible character encodings: GBK and ASCII-8BIT或 incompatible character encodings ...
- 【转载】关于Embedded Linux启动的经典问题
转载自:http://linux.chinaunix.net/techdoc/install/2009/04/13/1107608.shtml 发信人: armlinux (armlinux), 信区 ...
- [python]python元类
这两天在看Django框架,里面的filter实现原理搞不明白,最后发现跟python的元类有关系. 原文:http://stackoverflow.com/questions/100003/what ...
- Android学习笔记之Json的使用....
PS:当你的能力还驾驭不了你的目标时,那你需要沉下心来历练... 学习内容: 1.Json的使用... 2.Json信息过滤... 3.从网络上获取Json数据... 4.解析Json数据获取各个属性 ...
- mysql主从复制显示正常,数据没同步现象。
当时在一个服务器上开启了多实例,主从复制结构图如下: 当时在192.168.10.3的服务器上用show slave status;显示的是正常的复制的,两个线程都为yes,并且读与写的pos也一直在 ...
- redhat Nginx 安装
1.Nginx 简介 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 ...
- OnMeasureItem和OnDrawItem的区别和联系
我们在做程序设计时界面与功能,那个更加吸引用户的兴趣呢?这是一个很难回答的问题.拥有美丽的外观,软件就成功了一半.界面由控件.工具栏.菜单.窗体等元素组成,对他们进行美化就能得到一个美丽的界面. 目前 ...
- Android 中 Handler 引起的内存泄露
在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用.其实这可能导致内存泄露,代码中哪里可能导致内存泄露,又是如何导致内存泄露的呢?那我们就慢慢分析一下.http://w ...
- ViewData和TempData以及Session的小结
ViewData一般用在从控制器向页面上传递数据. Public ActionResult Show() { ViewData["message"]="你好"; ...