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又是什么,两个东西分别怎么用,这是一 ...
随机推荐
- 从头学Qt Quick(1) --体验快速构建动态效果界面
自2005年Qt4发布以来,Qt已经为成千上万的应用程序提供了框架服务,现在Qt已经基本上支持所有的开发平台了,这里面既包含了桌面.嵌入式领域,也包括了Android.IOS.WP等移动操作平台,甚至 ...
- C++的ORM工具比较
用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,J ...
- 整合ssh model $$_javassist_13 cannot be cast to javassist.util.proxy.Proxy
经goole stackoverflow 发现是 javassit 包冲突 项目使用的是maven 检查依赖包
- Android学习笔记之如何使用圆形菜单实现旋转效果...
PS:最近忙于项目的开发,一直都没有去写博客,是时候整理整理自己在其中学到的东西了... 学习内容: 1.使用圆形菜单并实现旋转效果.. Android的圆形菜单我也是最近才接触到,由于在界面 ...
- [New Portal]Windows Azure Virtual Machine (10) 自定义Windows Azure Virtual Machine模板
<Windows Azure Platform 系列文章目录> 通过之前的文章,我相信大家对微软Windows Azure Virtual Machine有一定的了解了. 虽然微软提供了非 ...
- js-基础(1)
js-基础(1) javascript由三部分组成:核心,DOM,BOM核心——ECMAScript,可以运行浏览器/单纯的JS引擎 console.log(‘hello’);DOM——操作HT ...
- 后缀数组(模板题) - 求最长公共子串 - poj 2774 Long Long Message
Language: Default Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 21 ...
- 重构第26天 移除双重否定(Remove Double Negative)
理解:”移除双重否定”是指把代码中的双重否定语句修改成简单的肯定语句,这样即让代码可读,同时也给维护带来了方便. 详解:避免双重否定重构本身非常容易实现,但我们却在太多的代码中见过因为双重否定降低了代 ...
- 译:什么是ViewData的, ViewBag和TempData? - MVC为当前和后续请求之间传递数据的三种方法
译文出处:http://www.codeproject.com/Articles/476967/WhatplusisplusViewData-cplusViewBagplusandplusTem AS ...
- MVC应用程序实现上传文件
学习MVC以来,一直想实现上传文件的功能,使用jQuery来实现上传,有很多插件.此篇演示中,Insus.NET是使用Uploadify.http://www.uploadify.com/,它有更多的 ...