小米 后端开发 秋招笔试

#软件开发笔面经#
25选择 2算法

1.算法:相邻数字取相反数,可以取左右都可以,并且可以重复取反同一个数字,使得最终的数组和最大。

思路:模拟,每个数字都可以选择翻转或不翻转,分两个分支走,开long。

2.算法:一串数组,告诉你两个数字a,b和一个操作数,操作数为0,a放b前面,相反则放b后面,返回最终的数组结果。

思路:模拟,根据题目要求模拟数字插入的操作,常规循环模拟会TLE,需要优化时间复杂度。
全部评论

相关推荐

03-12 20:38
湖南科技大学
2025届春招笔试题1-软件开发方向 编程第一题```import java.util.ArrayList;import java.util.Comparator;import java.util.List;import java.util.Scanner;/***  @author Hertz*  @date 2025.3.12* */public class Main {    public static void main(String[] args) {        //接收操作        int ans=0;        Scanner sc=new Scanner(System.in);        int n=sc.nextInt();        int k=sc.nextInt();        k=k-n;//记录除去好日子剩下的天数        ans=n*2;        int []date=new int[n];        for(int i=0;i<n;i++){            date[i]=sc.nextInt();        }        //记录好日子之间相隔的天数        List<Integer> list=new ArrayList<>();        for(int i=1;i<n;i++){                list.add(date[i]-date[i-1]-1);        }        list.sort(new Comparator<Integer>() {   //对记录进行由小到大的排列            @Override            public int compare(Integer o1, Integer o2) {                return o1-o2;            }        });        int j=0;        //判断剩下天数是否足以度过相隔的天数        while(j<list.size()&&k>=list.get(j)){            k-=list.get(j);            j++;            ans-=2;        }        System.out.println(ans);    }}```纯蒻苟,大佬勿喷#小米##春招##小米笔试#
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客企业服务