2023小米秋招真题-手机流畅运行的秘密

这篇具有很好参考价值的文章主要介绍了2023小米秋招真题-手机流畅运行的秘密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023小米秋招真题-手机流畅运行的秘密

这是一道小米面试题,使用贪心的思想

8月份发布会一结束,米小兔就在公司领到了一台最新发布的XiaomiMX Fold3手机。这是一款小米舰折屏手机,并搭载了全新升级架构的MIU114系统。其先进的应用引擎不仅让系统更流畅,应用体验也大幅提升。在一个优化项中,为了尽可能提升用户白天使用手机的体验和续航,某些已经在系统中注册过的任务会被设置为空闲任务,仅在手机空闲时运行(比如数据备份或AI相册整理)。现在系统中注册了若干组空闲任务,每个任务有各自的耗电量以及允许任务运行的最低初始电量,我们需要计算手机能够串行完成全部任务的最低初始电量。
注意点1:所有电量以mAh(至安时)计,XaomiMX Fold3的大电池容量是4800mAh

**注意点2:**本题目假设手机在运行空闲任务期间,不处于充电状态,也没有额外耗电行为

注意点3:智能应用引擎会以最合适的顺序执行运行任务

输入描述
个猫述了所有任务的长字符串。任务与任务必间用逗号隔开,每组任务由耗电量及最低初始电量组成,用冒号隔
开。

输出描述
一个数字,代表依次完成全部任务的最低初始电量,如果最低初始电量超过手机电池容量,则返回-1

// 样例输入
1:10,2:12,3:10

// 13

分析

每个任务有允许任务运行的最低初始电量,按照第一眼的想法可能会按照任务的最低初始电量递减排序去贪心。但是这样是不对的,举个例子

有两个任务,任务 1 耗电量是 cost1,允许任务运行的最低电量是 least1。任务 2 的耗电量和最低电量是 cost2least2。当前电量为 currentBattery,假设 cost1>currentBattery-least2cost2<=currentBattery-least1这两个式子是可以同时存在的

假如任务 1 的最低电量 > 任务 2 的最低电量,按照我们刚才贪心方法,优先执行最低电量高的任务,也就是先执行任务 1,任务 1 执行完后剩余电量为 currentBattery-cost1,根据 cost1>currentBattery-least2 可知 currentBattery-cost1 < least2 因此不能执行任务 2

而假如这时我们先执行任务 2 呢(最低电量低的任务),执行任务 2 后剩余电量为 currentBattery-cost2,根据 cost2<=currentBattery-least1 可知 currentBattery-cost2 >= least1 这时是可以接着运行任务 1的

以上分析证明了按照任务最低初始电量递减排序去贪心是不对的

那么该如何贪心呢?同样有任务 1 和 任务 2

  • 先执行任务 1,再执行任务 2,如果两个任务都能执行即 currentBattery-cost1>least2,那么 currentBattery 必须满足 currentBattery > cost1+least2
  • 先执行任务 2,再执行任务 1,如果两个任务都能执行即 currentBattery-cost2>least1,那么 currentBattery 必须满足 currentBattery > cost2+least1

题目要求初始电量最小,因此,就得取 cost1+least2cost2 +least1 两者的较小值,两边同减去 least1 和 least2,左边变成 cost1-least1,右边变成 cost2-least2,因此,如果 cost1-least1 较小就先执行任务 1,否则先执行任务 2。按照 cost-least 升序排序去贪心即可

最终代码展示文章来源地址https://www.toymoban.com/news/detail-698257.html

package Y20222;

import java.util.*;

// 1:10,2:12,3:10
// 1:10,2:12,10:3
// 3:1,3:1,3:1
public class A {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        String[] strings = str.split(",");

        int n = strings.length;

        int[][] arr = new int[n][2];

        for(int i = 0;i < n;i ++) {
            String[] strings1 = strings[i].split(":");
            arr[i][0] = Integer.valueOf(strings1[0]);
            arr[i][1] = Integer.valueOf(strings1[1]);
        }

        Arrays.sort(arr,(a,b)-> a[0]-a[1]-(b[0]-b[1]));

        int ans = 0;
        int preCost = 0;
        for(int i = 0;i < n;i ++) {
            ans = Math.max(ans, preCost+Math.max(arr[i][0],arr[i][1]));
            preCost += arr[i][0];
        }

        System.out.println(ans <= 4800?ans:-1);
        scan.close();
    }


}

到了这里,关于2023小米秋招真题-手机流畅运行的秘密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 金三银四互联网大厂秋招精选 1160 道 Java 面试题答案整理(2023 最新版)

    今年的大环境而言,面试成功的难度比往年高了很多,很明显的感受就是:对于今年的 java 开发朋友面试, 无论一面还是二面,都开始考验一个 Java 程序员的技术功底和基础。 Java 基础掌握不牢,对于一个开发人员来说无疑是非常致命的。学习任何一个技术知识无疑不是从基

    2024年02月09日
    浏览(36)
  • 大厂秋招真题【BFS+DP】华为20230921秋招T3-PCB印刷电路板布线(留学生专场)

    在PCB印刷电路板设计中,器件之间的连线,要避免线路的阻抗值增大,而且器件之间还有别的器任和别的干扰源,在布线时我们希望受到的干扰尽量小。 现将电路板简化成一个 M × N 的矩阵,每个位置(单元格)的值表示其源干扰度。 如果单元格的值为 0 ,表示此位置没有干

    2024年02月07日
    浏览(36)
  • 小米手机通过相册修改头像时报java.lang.SecurityException

    问题解决办法记录(好记性不如烂笔头~电子笔头,嘿嘿) Caused by: java.lang.SecurityException: UID 10764 does not have permission to content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FPictures%2Fweibo%2Fimg-164873012856083ac9bb75ce06902b5f0230926f11c6be692a0dd64ce144bef6d3d374704c013.jpg [user 0] 小米手机上通过相册

    2024年02月10日
    浏览(28)
  • 教你手机变流畅的方法

    相信大家已经发现,新买的手机很流畅,但是用久了就变得很卡。今天就教大家如何关闭以下5个开关,让手机畅通无阻,还能再用2年。 1.关闭系统更新 很多人认为手机系统更新后会变得异常卡顿。 主要原因是新系统占用了手机大量内存空间,所以我们可以选择关闭系统更新

    2024年02月09日
    浏览(28)
  • 华为OD机试真题-24点运算【2023】【JAVA】

    计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*), 除(/)四种运算法则计算得到整数24,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写joker表示小王,大写JOKER表示大王: 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER 本程序要求实现:输入4张牌,输出

    2024年02月02日
    浏览(34)
  • 【华为OD机试】-2023真题【c++,java,python】

    A+B卷 专栏:华为OD机试(Python,Java,C++)2023(A+B卷) python专栏: 华为od机试(python)2023(A卷) 博主通信专业学硕,10年+互联网大厂经验,精通C++,Python,自学Java,热爱编程,乐于经验分享,已帮助千余名同学通过OD机考。 2023年5月,华为OD机考更新为 OD统一考试(B卷) 。 B卷的题目

    2024年02月05日
    浏览(34)
  • 苹果Mac系统如何优化流畅的运行?提高运行速度

    Mac系统的稳定性和流畅性一直备受大家称赞,这也是大多数人选择Mac的原因,尽管如此,我们仍不时地对Mac进行优化、调整,以使其比以前更快、更流畅地运行。以下是小编分享给各位的Mac优化方法,记得保存哦~ 一、释放被过度占用的 RAM 当过多的程序占用 Mac 电脑的 RAM 内

    2024年02月10日
    浏览(33)
  • 华为OD机试真题Java实现【5键键盘的输出】真题+解题思路+代码(2022&2023)

    题目 有一个特殊的5键键盘,上面有a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键。a键在屏幕上输出一个字母a;ctrl-c将当前选择的字母复制到剪贴板;ctrl-x将当前选择的字母复制到剪贴板,并清空选择的字母;ctrl-v将当前剪贴板里的字母输出到屏幕;ctrl-a选择当前屏幕上的所有字母。

    2024年02月15日
    浏览(28)
  • 2023华为OD机试真题Java【代表团坐车/动态规划】【2023.Q2】

    本题使用Java解答,如果需要python版本代码,请参考以下链接: python代码 现在要举行一场会议,有很多代表团参加。但是他们可能在同一个时间到达,而负责接待它们的接待处处只有一辆汽车,现在为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量

    2024年02月15日
    浏览(96)
  • 2023华为od机试真题【人气最高的店铺】JAVA

    某购物城有m个商铺,现决定举办一场活动选出人气最高店铺。活动共有n位市民参与,每位市民只能投一票,但1号店铺如果给该市民发放q元的购物补贴,该市民会改为投1号店铺。 请计算1号店铺需要最少发放多少元购物补贴才能成为人气最高店铺(即获得的票数要大于其他店

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包