C++算法原理与实践(面试中的算法和准备过程)
第0部分 简介
1. 举个例子:面试的时候,可能会出一道算法考试题,比如写一个 strstr 函数——字符串匹配。
可能会想到用KMP算法来解题,但是该算法很复杂,不适宜在面试中使用。
1.1 C++利用char*的例子。该方法的复杂度是O(n)。注意代码中的注释,每一对括号的后面都给出了注释说明,用于匹配括号。
/**
strstr
return the position of the first occurence of string target
in string source, or -1 if target is not part of source
*/
int strstr(char *src, char *dest)
{
int len = ;
for (int i = ; dest[i] != '\0'; i++)
len++; int i = , j = ;
while (src[i] != '\0')
{
if (src[i] == dest[j])
{
j++;
if (j == len)
{
return i - j + ;
} // if j == len
} // if src[i] == dest[j]
else
{
j = ;
} // else i++;
} // while src[i] != '\0'
return -;
} // strstr int main()
{
char *src = "i am a chinese ";
char *dest = "a "; printf("%d\n", strstr(src, dest)); return ;
}
这一种是非常普通的解法。
1.2. 注意编码规范问题,比如加入空格、适当的缩进。
1.3. strlen() 函数的时间复杂度是 O(n),要尽量减少使用次数。
2. IT技术人员应该具备“翻越长城墙”这一基本技能。
3. 编码风格应该参照《google coding style》
编码风格:缩进、拓号、变量名。
编码习惯:异常检查、边界处理。
4. 面试的过程中要注意自己沟通能力的展现,让面试官时刻明白你的意图。
面试被要求写代码时,应该主动写出合理的测试用例(Testcase)。
5. 如何练习算法
资源:leetcode 、 cc150 等刷题网站。
C++算法原理与实践(面试中的算法和准备过程)的更多相关文章
- kmeans算法原理以及实践操作(多种k值确定以及如何选取初始点方法)
kmeans一般在数据分析前期使用,选取适当的k,将数据聚类后,然后研究不同聚类下数据的特点. 算法原理: (1) 随机选取k个中心点: (2) 在第j次迭代中,对于每个样本点,选取最近的中心点,归为 ...
- 用ES6巧妙的解决传统面试中的算法小问题!
最近自己也在准备面试,在复习算法的时候,机智的用了一波ES6.一起来瞧瞧吧! 1.数组的去重 var arr=str.split(''); for(var i=0;i<arr.length-1; ...
- JavaScript 面试中常见算法问题详解
1.阐述下 JavaScript 中的变量提升 所谓提升,顾名思义即是 JavaScript 会将所有的声明提升到当前作用域的顶部.这也就意味着我们可以在某个变量声明前就使用该变量,不过虽然 Java ...
- 由Photoshop高反差保留算法原理联想到的一些图像增强算法。
关于高反差保留的用处说明呢,从百度里复制了一段文字,我觉得写得蛮好的: 高反差保留就是保留图像的高反差部分,再说得真白些,就是保留图像上像素与周围反差比较大的部分,其它的部分都变为灰色.拿一个人物照片 ...
- 面试中常用排序算法的python实现和性能分析
这篇是关于排序的,把常见的排序算法和面试中经常提到的一些问题整理了一下.这里面大概有3个需要提到的问题: 虽然专业是数学,但是自己还是比较讨厌繁琐的公式,所以基本上文章所有的逻辑,我都尽可能的用大白话 ...
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7, ...
- 用简单直白的方式讲解A星寻路算法原理
很多游戏特别是rts,rpg类游戏,都需要用到寻路.寻路算法有深度优先搜索(DFS),广度优先搜索(BFS),A星算法等,而A星算法是一种具备启发性策略的算法,效率是几种算法中最高的,因此也成为游戏中 ...
- 2018-2019 2 20165203 《网络对抗技术》 Exp3 免杀原理与实践
2018-2019 2 20165203 <网络对抗技术> Exp3 免杀原理与实践 免杀原理与实践说明及基础问答部分 实验任务 正确使用msf编码器(0.5分),msfvenom生成如j ...
- 20155334 曹翔 Exp2 后门原理与实践
20155334 曹翔 Exp2 后门原理与实践 不多废话直接上实验过程,本实验的所有端口都是5334. 一.实验过程 查询主机Windows和虚拟机kali的ip地址: Windows获得Linux ...
随机推荐
- POJ - 1101 The Game dfs
题意:给你一个地图,上面有一些‘X',给你起点终点,让你输出从起点到终点的路径中转向(改变方向)次数最少的路径,注意,不能穿过别的’X'并且可以超过边界 题解:关于超过边界,只要在外围多加一圈‘ ’. ...
- Oracle体系结构之联机日志文件管理
日志文件分类:重做日志文件 归档日志文件 警告日志文件 跟踪日志文件 redo_log_file文件作用: 1)维护数据一致性 2)记录了数据库里的更改操作 redo_log_friles以组为单位, ...
- jeb 下载
jeb-1.5.201408040(full)_keygen_by_scz(20150725) http://scz.617.cn/ 修改jeb_wincon.bat 中java home 变量,然后 ...
- int float 的具体的取值范围取决于具体的机器 整数除法舍位 整形(int)也可以用于存储字符型数据
int 通常为16位 存储单元 float 通常为32位 取决于具体的机器 #include main() { int fathr,celsius; int lower,upper,step; ...
- FW 编译Android系统源码和内核源码
编译Android系统源码和内核源码 分类: Android2014-07-21 20:58 7287人阅读 评论(28) 收藏 举报 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现 ...
- 自定义maven插件
之前虽然一直知道maven插件是可以自定义的,不过一致没有用过.最近接触到了swagger项目中的codegen自动生成代码的功能,并且在codegen源码中,也是存在maven插件功能的,所以自己就 ...
- 【Git 使用笔记】第三部分:多分支开发
###举例仓库 仓库地址A:git@gitlab.54php.cn:guowei/demos.git 仓库地址B:git@gitlab.54php.cn:infra/demos.git 开发人员仓库C ...
- kubernetes实战(十三):k8s使用helm持久化部署harbor集成openLDAP登录
1.基本概念 上节在k8s中部署了harbor和ldap,本节将部署harbor使用openLDAP验证,部署方式与之前相同,只是改了adminserver-cm.yaml的AUTH_MODE: &q ...
- ubuntu16.4中安装samba服务
一.下载samba软件包,不用安装其他的了,因为它会自动帮我们下载所需要的其他依赖包 sudo apt-get install samba 二.修改/etc/samba目录下的配置文件,smb.con ...
- java-JProfiler(四)-HelloWorld示例
1.程序代码 package jProfiler; public class Test extends Thread{ public static void main(String[] args) t ...