华为od一面面试算法

在看题目之前,谈谈对于面试时手撸算法的看法,如果在面试之前刷了几百+的leetcode,那么只要好好总结一下,我觉得面试的算法是完全可以做出来的;但是如果没有刷到那么多,我们怎么能够发挥好?我觉得首先对于每种类型的题目,例如链表类的、数组类的、二叉树类的、排序类的、字符串类的、双指针、这些每种类型的题目刷几道,对于解题思路就能能大致把握;面试做题还是蛮考研心理素质的,所以还是只有多刷题提升自己的底气。

一、题目

//某系统中有一空间连续的内存,被划分成多个大小相同的内存块。内存的使用状态记录在字符串 memory 中,每个内存块的状态用字符 x 或 . 表示,其中:
//·         . 表示该内存块空闲;
//·         x 表示该内存块被使用,x 为小写字母。
//现在可释放其中 最多 cnt 个内存块(即字符串中的 x 变成 .),以获得一块空间连续的、且 最长的 空闲内存,请计算并返回该最长空闲内存的内存块数量。
//示例 1:
//输入:
//memory = "..x..x..xx..."
//cnt = 2
//输出:8
//解释:
//
//将 memory[2] 与 memory[5] 的内存块释放,可获得从 memory[0] 到 memory[7]、长度为 8 的连续空闲内存;
//将 memory[5] 与 memory[8] 的内存块释放,可获得从 memory[3] 到 memory[8]、长度为 6 的连续空闲内存;
//将 memory[8] 与 memory[9] 的内存块释放,可获得从 memory[6] 到 memory[12]、长度为 7 的连续空闲内存;
//其他释放方式获得的连续空闲内存都小于 8;
//因此返回 8。
//示例 2:
//输入:
//memory = "....x."
//cnt = 3
//输出:6
//示例 3:
//输入:
//memory = "xx.x..xx....x..."
//cnt = 0
//输出:4
//提示:0 <= cnt <= memory.length <= 10^5

分析:首先这道题采用双指针,我们先拆解,也就是一个字符串连续.最大值,然后就是替换x;将替换后的字符串带入求最大的函数中,即可求解。有了思路之后,编码就比较简单了,但是仍然需要考虑一些边界问题,保证代码健壮。
go 语言版本

func main() {in := bufio.NewReader(os.Stdin)b,_,_ := in.ReadLine()memory := string(b)b,_,_ = in.ReadLine()newMemory := memorycnt,_ := strconv.Atoi(string(b))temp := 0i := 0max := 0if cnt == 0 {fmt.Println(FindMax(memory))return}for {if i >= len(memory) {break}for j := i;j < len(memory);j++ {if fmt.Sprintf("%c",memory[j]) == "x" {memory = memory[0:j]+"."+memory[j+1:]temp++if temp == cnt {max = int(math.Max(float64(FindMax(memory)),float64(max)))temp = 0memory = newMemorybreak}}}if temp < cnt {max = int(math.Max(float64(FindMax(memory)),float64(max)))temp = 0memory = newMemory}i++}fmt.Println(max)
}//找连续最大
func FindMax(str string) int {i := 0j := 0max := 0for {if i >= len(str) {break}temp := 0if fmt.Sprintf("%c",str[i]) == "." {j = i}for {if j >= len(str) {break}if str[i] == str[j] && fmt.Sprintf("%c",str[i]) == "." {temp++j++}else {break}}max = int(math.Max(float64(max),float64(temp)))i = jif i < len(str) && fmt.Sprintf("%c",str[i]) != "." {i++j = i}}return max
}

java 版本


public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String memory = sc.nextLine();String newMemory = memory;char[] ch = memory.toCharArray();int cnt = sc.nextInt();if (cnt == 0) {System.out.println(findMax(memory));return;}int temp = 0;int res = 0;int j = 0;while(j < ch.length) {for(int i = j;i<ch.length;i++) {if (ch[i] == 'x') {ch[i] = '.';temp++;}if (temp == cnt) {res  = Math.max(findMax(String.valueOf(ch)),res);temp = 0;ch = newMemory.toCharArray();}}if (temp < cnt) {res = Math.max(findMax(String.valueOf(ch)),res);temp = 0;ch = newMemory.toCharArray();}j++;}System.out.println(res);return;}public static int findMax(String s) {char[] ch = s.toCharArray();int i = 0,j = 0,max = 0;while(i < ch.length) {int temp = 0;if (ch[i] == '.') {j = i;}while(j < ch.length) {if(ch[i] == ch[j] && ch[i] == '.') {temp++;j++;}else {break;}}max = Math.max(temp,max);i++;}return max;}
}

华为od一面面试算法相关推荐

  1. 华为OD德科面试+机试记录

    一.机试(6.25) 三道编程题,难度偏中.由于时间久远,只记得其中两道题目 1.找车位(动态规划) 2.题目不记得了,后面如果找到会补充(双指针) 3.高效的任务规划(动态规划) 第一题和第二题是做 ...

  2. 华为od德科面试数据算法解析 2022-8-8 欢乐的周末

    目录 个人寄语: 华为机考介绍: 题目:​编辑 代码解析: 个人寄语: 准备面试华为外包德科,记录一下一些面试题: 牛客网代码提交的坑,可以看一下下面的第一道题,ide本地编译通过,牛客网死活不通过, ...

  3. 华为od德科面试数据算法解析 2022-8-7 英文输入法

    目录 个人寄语: 华为机考介绍: 题目: 代码解析: 个人寄语: 准备面试华为外包德科,记录一下一些面试题: 牛客网代码提交的坑,可以看一下下面的第一道题,ide本地编译通过,牛客网死活不通过,提交代 ...

  4. 华为OD面试【前】经验分享,包含面试准备的各个细节

    文章目录 核心的华为 OD 机试 了解华为 OD 职位和要求 什么是华为 OD 以及 OD 岗位分类 华为 OD 相关岗位都需要哪些技能和经验 为什么要申请 OD 职位 准备简历和面试材料 简历的重点 ...

  5. 找工作碎碎念-外企德科面试经历-与工作未来发展(深圳华为OD面经)

    目录 〇.避坑* 0.1 学历(大坑) 0.2 接口人(大大坑) 0.3 机考 0.4 综测 0.5 技术面试 0.6 综面 0.7 HR面 0.8 工资 一.面试(流程) 1.1 在线笔试/机考(7 ...

  6. 华为OD机试2023年最新题库(JAVA、Python、C++)

    我是一名软件开发培训机构老师,我的学生已经有上百人通过了华为OD机试,学生们每次考完试,会把题目拿出来一起交流分享. 2023年5月份题库已经更新为OD统一考试(B卷),题库由三部分组成: 1.202 ...

  7. 【面经】华为od C/C++开发岗通过经验

    概述 个人情况:浙江某电子类双非院校通信工程本科.大三上决定转码,雅思5.5,无挂科,在校期间参与过一些比赛,其中一场"软件定义无线电"大赛中和队友拿到了第四名二等奖和2000元奖 ...

  8. 华为OD机试(21-40)老题库解析Java源码系列连载ing

    华为OD机试算法题新老题库练习及源码 老题库 21.字符串序列判定 22.最长的指定瑕疵度的元音子串 23.处理器问题 24.单向链表中间节点 25.字符串重新排列.字符串重新排序 26.完美走位 2 ...

  9. “我没干过华为OD的岗位,但它是外包,我就要怼”,什么心态?

    文章目录 华为 OD 的面试流程 入职 OD 了为何要怼华为 OD 岗位呢? 华为 OD 的接口 HR 第一次联系就要提供身份证号码? 应聘华为 OD 之后,提供身份证号码被锁在 A 部门,但在 A ...

最新文章

  1. 深入浅出grep与正则表达式
  2. 织梦html编辑器有问题怎么办,dede 织梦编辑框显示不出来的问题
  3. 目标检测特殊层:PSROIPooling详解
  4. Maven的pom.xml文件详解------Build Settings
  5. 从零开始用好 Maven : 从 Hello World 到日常使用
  6. 神经网络基本原理简明教程-0-Python-Numpy库的点滴
  7. qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection
  8. 技术干货| 阿里云基于Hudi构建Lakehouse实践探索「内附干货PPT下载渠道」
  9. 牛客网剑指offer
  10. Structs2.0.11.1升级到2.5.30
  11. matlab创建wps服务器,wps云文档服务器架设(mac版wps云文档在哪)
  12. 网络流量分析技术 科普
  13. simulink 全桥逆变无控整流DC-DC电路
  14. Mystical compositions of the self: women, modernism, and empire【翻译】
  15. 推特难民涌入「长毛象」!这个小众社交平台一夜爆红
  16. Qpython教程和软件下载(Android手机学习python的平台利器)
  17. 常用MAVROS话题和服务
  18. 惊!一文看懂Java NIO读写文件
  19. 1-Java的诞生和发展
  20. P2P大潮正在消退,第一梯队亦需自危

热门文章

  1. 1.网络基础-走进网络世界
  2. 目前java行业的发展
  3. 天龙八部怀旧服服务器维护,新天龙八部怀旧服12月17日全服更新维护公告
  4. 爬山虎采集实战-站长之家网站排行榜
  5. ChatGPT 简介
  6. FreeCAD源码编译、配置及编译运行
  7. 移动端UI框架小汇总
  8. 自学java核心技术笔记(康师傅)
  9. 2019年云架构和云计算趋势如何?|中机智库干货
  10. 本地搜索神器,秒速定位文件-Everything