手撕代码–任务调度器(Leecode 621):

给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。

然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。

你需要计算完成所有任务所需要的 最短时间 。

力扣(LeetCode)

基本思路:

看完题目,感觉是使用贪心去算。

  1. 首先想到对每个任务统计个数
  2. 然后先安排好最多个数的任务,再将剩余任务插在每一个最多个数任务的后面
  3. 当时只给了15分钟手撕,有这样大概思路去写了,出错后发现对题目的很多意思都没读懂

画个图其实思路就会清晰很多:

代码:

import java.util.*;public class Main1{public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()){String[] temp = sc.next().split(",");char[] tasks = new char[temp.length];for(int i=0;i<temp.length;i++){tasks[i]=temp[i].charAt(0);}int n = sc.nextInt();System.out.println(solution(tasks,n));}}public static int solution(char[] tasks, int n){//一维数组记录每个大写字母及任务的出现次数int[] arr = new int[26];for(char c:tasks){arr[c-'A']++;}//对任务次数数组进行排序Arrays.sort(arr);//上图中已说明int res = (arr[25]-1)*(n+1)+1;//若出现最大任务书相同的,那么必定会排在最后,这时res需要加1for(int i=24;i>=0&&arr[i]>0;i--){if(arr[i]==arr[25]){res++;}}//若在最大任务数后插入的任务数比冷却时间还多,那么就是返回总的任务数了//最后需要返回两个之间的最大值才行return Math.max(res, tasks.length);}
}

手撕代码–航班预定统计(Leecode 1109):

这里有 n 个航班,它们分别从 1 到 n 进行编号。

有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。

请你返回一个长度为 n 的数组 answer,其中 answer[i] 是航班 i 上预订的座位总数。

力扣(LeetCode)

基本思路:

  1. 暴力求解:很容易想到。遍历二维数组,以每个数组的索引0和1的元素为边界,遍历加上索引2的预定数。能ac,但是时间复杂度比较高O(N^2).
public static class Solution {public int[] corpFlightBookings(int[][] bookings, int n) {int[] res = new int[n];for(int i=0;i<bookings.length;i++){for(int j=bookings[i][0]-1;j<=bookings[i][1]-1;j++){res[j] +=bookings[i][2];}}return res;}
}
  1. 前缀和思想:前缀和即索引i位置的值,为i之前所有元素值的和。
    所以当第1个+10以后,位置2加10,后面所有的索引值都加10了,但是只有前两个位置值才需要,所以,直接在第三个位置减10,那么第三个位置及之后的索引的值都会减10,相当于10-10=0。
    按照这个想法,就是bookings[i][j][0]-1位置加上bookings[i][j][2],在booings[i][j][1]位置减bookings[i][j][2]

代码:

public static int[] solution(int[][] bookings, int n){int[] res = new int[n];for(int[] booking:bookings){res[booking[0]-1]+=booking[2];if(booking[1]<n){res[booking[1]]-=booking[2];}}for(int i=1;i<n;i++){res[i]+=res[i-1];}return res;
}

华为实习技术面手撕代码相关推荐

  1. 2023华为OD面试手撕代码经验分享

    我们先来看下这个同学的面试经历吧,非常有借鉴的意义. [22届考研渣渣的od求职之旅,推荐一下两个人,德科hr和牛客的老哥] "*********",hr给了机会吧,一开始我都没想 ...

  2. 2023华为OD面试手撕代码真题

    很多小伙伴后台私信我,让我出一些面试中的手撕代码题. 一般面试的时候每一轮技术面都会出一到两个手撕代码题,这些题的特点就是,非常短小,易于理解.不可能会再出阅读理解一样的机试题的.但是这些题目也非常注 ...

  3. 华为手撕代码c语言题目,想去面试?这10道最高频的手撕代码题都会了吗?

    原标题:想去面试?这10道最高频的手撕代码题都会了吗? 来源:Python与算法之美 ID:Python_Ai_Road 作者:梁云1991 想去看机会?下面这10道最高频的手撕代码面试题都会了吗? ...

  4. 秋招总结:遇到的手撕代码题

    2020年秋招总结:遇到的手撕代码题 跟谁学 一面:求连续子数组的最大和(力扣 53) [思路:力扣系列略,题解区都比我讲得好] 二面:翻转字符串中的每个单词(简单题,比较常见,没去找对应的原题) [ ...

  5. 和12岁小同志搞创客开发:手撕代码,做一款遥控灯

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  6. 和12岁小同志搞创客开发:手撕代码,做一款声控灯

    机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html ...

  7. 手撕代码之七大常用排序算法 | 附完整代码

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 0.导语 本节为手撕代码系列之第一弹,主要来手撕排序算法,主要包括以下几大排序算法: 直接插入排序 冒泡 ...

  8. Interview:算法岗位面试—11.06早上上海某智能驾驶科技公司(创业)笔试+面试之手撕代码、项目考察、比赛考察、图像算法的考察等

    Interview:算法岗位面试-11.06早上上海某智能驾驶科技公司(创业)笔试+面试之手撕代码.项目考察.比赛考察.图像算法的考察等 导读:该公司是在同济某次大型招聘会上投的,当时和HR聊了半个多 ...

  9. 蛇形打印数组(某宝典公司面试手撕代码题)

    背景杂谈 不知道为什么,可能脑袋一下放空了,一不小心就想到了大约2年前,在某个知名的宝典公司面试中,遇到了一道手撕代码题,和多年前的google的那道螺旋遍历数据有异曲同工之妙.现脑洞大开,想写下与大 ...

最新文章

  1. APACHE多个服务器的配置
  2. 【网络爬虫】BeautfulSoup下载美图(真の能看懂~!)
  3. 代码练习 用户注册登陆与密码加密
  4. 线程的状态:分离(detached)和joinable(可结合的)
  5. intellij tomcat配置
  6. iOS_11_tableViewCell使用alertView变更数据
  7. linux下彻底卸载mysql 图解教程
  8. java string number_Java 学习(6):java Number Math String 数组...常用类型
  9. linux上运行tcpserver没反应,linux网络编程/tcp_server中server bind失败原因的调研
  10. 【老骥伏枥-狗年大礼包】嵌入式linux逆向工程,手把手教你作黑Q-第三讲
  11. python 日历壁纸_将桌面日历添加到您的MAC
  12. 蓝阔无线打印服务器怎么连接5g,TP-Link TL-WDR7500路由器5G无线WDS桥接设置
  13. 国内装备制造业为什么需要项目管理
  14. 数据库事务(Transaction)与锁(Locking)详解图析
  15. 生化危机8Switch Pro手柄按键提示补丁MOD
  16. 安东尼罗宾--激发你的无限潜能[连载]--3 4章
  17. 是时候该和Picasa说再见了
  18. acrobat给pdf加多行水印_批量pdf如何添加水印 多个pdf批量加相同水印的方法|支持同时添加文字、图片水印...
  19. JS:引用数据类型(2021-09-18s)
  20. 企业数据标准规划、建设和应用

热门文章

  1. des实验报告c语言实现,C语言实现DES算法实验报告
  2. Python驱动级按键-pywin32的使用
  3. html富强民主鼠标特效,html鼠标移动点击动画爱国民主文明和谐
  4. 安卓删除通话记录恢复?如何来恢复
  5. 小学信息技术 用计算机画画 教学目标,小学信息技术三年级上册用计算机画画教学设计.doc...
  6. [转]场面话大全,绝对受用一生
  7. 服务器单系统盘和双系统盘,一种比较简单快速的硬盘全新安装Win10单双系统的方法...
  8. 掌阅漫画导航栏(可滑动,可下拉)
  9. 数据集成的演化:从EII到Big Data
  10. 移动机器人系列2——移动机器人正运动学