原题:牛客10道练习题2_meiribaofu的博客-CSDN博客

1、快递运输

一辆运送快递的货车,运送的快递均放在大小不等的长方体快递盒中,为了能够装载更多的快递,同时不能让货车超载,需要计算最多能装多少个快递。

输入描述:

第一行输入每个快递的重量,用英文逗号分隔,如:5,10,2,11

第二行输入货车的载重量,如:20

不需要考虑异常输入。

输出描述:

输出最多能装多少个快递,如:3

    public static int delivery(int[] arr, int weight) {Arrays.sort(arr);int sum = Arrays.stream(arr).sum(); //快递总重量int sums = 0;//sum - sums[i] = sums //去掉某个快递的剩余重量for (int i = arr.length - 1; i >= 0; i--) {if (sum - sums < weight) {return i + 1;} else {sums += arr[i];}}return 0;}

(没有第二题,因为题目看不懂QAQ)

3、考勤信息

公司用一个字符串来表示员工的出勤信息:

absent:缺勤

late:迟到

leaveearly:早退

present:正常上班

现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:

缺勤不超过一次;没有连续的迟到/早退;任意连续7次考勤,缺勤/迟到/早退不超过3次

present

present absent present present leaveearly present absent

输出描述:

根据考勤数据字符串,如果能得到考勤奖,输出"true";否则输出"false",对于输入示例的结果应为:

true false

    public static boolean fullAttendance(String str) {Stack<String> stack = new Stack<>();Queue<String> queue = new LinkedList<>();String[] s = str.split(" ");int absent = 0;int count = 0;for (int i = 0; i < s.length; i++) {String cur = s[i];if (cur.equals("absent")) {if (++absent > 1) return false;}//用栈判断是否有连续的早退或迟到if (cur.equals("leaveearly") || cur.equals("late")) {if (stack.peek().equals("late") || stack.peek().equals("leaveearly")) {return false;} else {count++;}}stack.push(cur);queue.offer(cur);//队列7次判断是否三次以上迟到或早退,否则出队一个保证任意7天if (queue.size() == 7 && count > 3) {return false;} else {String poll = queue.poll();if (poll.equals("late") || poll.equals("leaveearly")) {count--;}}}return true;}

4、字符串分割

给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;大小写字母的数量相等时,不做转换。

输入描述:

输入为两行,第一行为参数K,第二行为字符串S。

输出描述:

输出转换后的字符串。

示例1

输入

3

12abc-abCABc-4aB@

输出

12abc-abc-ABC-4aB-@

    public static String strChange(String str, Integer k) {String[] arr = str.split("-");StringBuffer newStr = new StringBuffer();newStr.append(arr[0]);StringBuffer childs = new StringBuffer();for (int i = 1; i < arr.length; i++) {childs.append(arr[i]);}//双指针int left = 0;int right = left + k;while (right < childs.length()) {String substring = childs.substring(left, right);String s = countUpCase(substring.toString(), k);newStr.append("-").append(s);left += k;right = left + k;}if (left < childs.length()) {newStr.append("-").append(childs.substring(left));}return newStr.toString();}public static String countUpCase(String str, int k) {int letter = 0;int capital = 0;for (int i = 0; i < str.length(); i++) {if (str.charAt(i) >= 'a' && str.charAt(i) <= 'z') {letter++;}if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z') {capital++;}}if (capital == letter) {return str;} else if (letter > k / 2) {return str.toLowerCase();} else {return str.toUpperCase();}}

5、组成最大数

小组中每位都有一张卡片,卡片上是6位内的正整数,将卡片连起来可以组成多种数字,计算组成的最大数字。

输入描述:

“,”号分割的多个正整数字符串,不需要考虑非数字异常情况,小组最多25个人

输出描述:

最大的数字字符串

输入

4589,101,41425,9999

输出

9999458941425101

    public static String maxStr(String str) {String[] arr = str.split(",");//使用大顶堆 重写字符串比较方法PriorityQueue<String> queue = new PriorityQueue<>(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {int len1 = o1.length();int len2 = o2.length();int lim = Math.min(len1, len2);char v1[] = o1.toCharArray();char v2[] = o2.toCharArray();int k = 0;while (k < lim) {char c1 = v1[k];char c2 = v2[k];if (c1 != c2) {return c2 - c1;}k++;}return len1 - len2;}});for (int i = 0; i < arr.length; i++) {queue.offer(arr[i]);}StringBuffer sb = new StringBuffer();while (!queue.isEmpty()) {sb.append(queue.poll());}return sb.toString();}

6、高矮个子排队

现在有一队小朋友,他们高矮不同,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。

我们现在希望小朋友排队,以“高”“矮”“高”“矮”顺序排列,每一个“高”位置的小朋友要比相邻的位置高或者相等;每一个“矮”位置的小朋友要比相邻的位置矮或者相等;

要求小朋友们移动的距离和最小,第一个从“高”位开始排,输出最小移动距离即可。

例如,在示范小队{5,3,1,2,3}中,{5, 1, 3, 2, 3}是排序结果。{5, 2, 3, 1, 3} 虽然也满足“高”“矮”“高”“矮”顺序排列,但小朋友们的移动距离大,所以不是最优结果。

移动距离的定义如下所示:

第二位小朋友移到第三位小朋友后面,移动距离为1,若移动到第四位小朋友后面,移动距离为2;

    public static int[] queueUp(int[] arr) {// {5,3,1,2,3}//5,1,3,2,3//4 1 3 5 2//4,1,5,3,2//4,1,5,2,3//使用双指针,当前指向和下一个进行比较,如果是偶数下标就判断是否大,奇数判断是否小int cur = 0;int next = cur+1;while(next != arr.length){if(cur % 2 == 0){if(arr[cur] < arr[next]) swap(arr,cur,next);}else{if(arr[cur] > arr[next]) swap(arr,cur,next);}cur++;next++;}return arr;}public static void swap(int[] arr,int i,int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}

7、猴子爬山

一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯: 每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式?

//动态规划
public static int monkey(int n){//dp[n] = dp[n-1]+dp[n-3]int[] dp = new int[n+1];//确定边界dp[0] = 1;dp[1]= 1;dp[2] = 1;dp[3] = 2;for(int i = 4 ; i < n+1;i++){dp[i] = (dp[i-3]+dp[i-1])%1000000007;}return dp[n];}

8、分糖果

小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。

当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。

小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗

输入描述:

抓取的糖果数(<10000000000):

15

输出描述:

最少分至一颗糖果的次数:

5

    public static int candy(int n){int count = 0;//2 count = 1 2/2 = 1 count =2for(int i = n ; i != 1 ; i /= 2, count++){if(n == 3){return count += 2;}if(i % 2 != 0){if ((i + 1) / 2 % 2 == 0) i++;else i--;count++;}}return count;}

9、报数游戏

100个人围成一圈,每个人有一个编码,编号从1开始到100。他们从1开始依次报数,报到为M的人自动退出圈圈,然后下一个人接着从1开始报数,直到剩余的人数小于M。请问最后剩余的人在原先的编号为多少?

//约瑟夫问题,单循环链表(取余完成)   public static void Josef(int m){List<Integer> list = new LinkedList<>();int person = 100;for (int i = 1; i <= person; i++) {list.add(i);}int index = 0;//3//index = 2 % 100 = 2//index = 4 % 99 = 4while (list.size() >= m) {index = (index + m - 1) % list.size();list.remove(index);}System.out.println(list);}

10、消消乐游戏

消消乐游戏

游戏规则:输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。

在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。

输出最终得到的字符串长度。

    public static int clear(String str){//stringbuffer做栈StringBuffer stack = new StringBuffer();int head = -1;for(int i = 0 ; i < str.length(); i++){if(stack.length() > 0){if (stack.charAt(head) == str.charAt(i)){stack.deleteCharAt(head);head--;continue;}}stack.append(str.charAt(i));head++;}return stack.length();}

牛客10道练习题2--练习记录相关推荐

  1. 华为OD机考——牛客10道练习题(Python版)

    注意:华为od机考--牛客10道练习题(Python版)仅供学习和参考,谢谢! #练习题-数组: ''' 1.求解连续数列 已知连续正整数数列{K}=K1,K2,K3...Ki的各个数相加之和为S,i ...

  2. 牛客网编程题python_牛客网数据结构练习题

    第一次使用牛客做编程题,刚开始不了解如何输入输出,查了查才知道.我用的是语言是 Javascript v8 6.0.0 readline() 表示得到输入的字符串,如果是多行的话,每readline一 ...

  3. 【牛客网专项练习题】

    练习题每日刷 12月22日 12月23日 12月24日 12月25日 12月26日 12月28日 12月29日 12月30日 12月31日 12月22日 1.下面哪个行为被打断不会导致Interrup ...

  4. 牛客SQL22--- 统计各个部门的工资记录数

    题目描述 有一个部门表departments简况如下: 有一个,部门员工关系表dept_emp简况如下: 有一个薪水表salaries简况如下: 请你统计各个部门的工资记录数,给出部门编码dept_n ...

  5. 牛客10 Popping Balloons

    题意:  平面上有n个点    用三条平行于x轴的线  和三条平行于y轴的线  (且相邻线间隔为r )  问 最多能覆盖多少点 每个点往下 和往左 设置两个"虚点"  题目就简化为 ...

  6. 网络基础知识点归纳(牛客网络专项练习题)

    UDP协议 需要IP地址和端口,不作报文分组,不提供差错控制,流量控制,不需要建立连接,是一种无连接不可靠的传输层协议. UDP首部字段有8个字节. TCP协议 有连接可靠的基于字节流的传输层协议,需 ...

  7. 牛客网笔试输入输出总结<记录自己踩的坑>

    1.对于那种只需要写一个方法的题目,只要注意方法中参数的类型和返回值类型即可 2.对于需要自己考虑输入和输出的题目,自己主要遇到过以下几种情况,并自己尝试了进行读取 首先不会改变的是以下几段代码 im ...

  8. 【牛客 错题集】Linux系统方面错题合集

    前言:牛客Linux322道全部刷完,有些题目较老,甚至考核5系统,现在7都出来了几年了 = = 还有些题目解析的很好部分也摘录了进来.很多涉及嵌入式开发的选择题同样的摘录的作为了解使用 ------ ...

  9. 牛客小白月赛23(A、B

    牛客小白月赛 A.膜法记录 题意: 给n行m列的矩阵,矩阵中的每个位置都可能有敌人 现在你能消灭a行和b列的敌人,问是否有可能将所有敌人都消灭. 数据范围:n<=20,m<=1e5 思路: ...

最新文章

  1. UNION和UNION ALL有什么区别?
  2. c语言hash存储,C语言实现HashTable(一) 介绍
  3. 1093芯片做正弦波逆变器_正弦波逆变器中的SPWM调制(钟任生)
  4. 【Java】5 个刁钻的 String 面试题
  5. 怎么把matlab仿真数据压缩,JPEG图像压缩编码及其MATLAB仿真实现(1)
  6. 【bzoj3122】 Sdoi2013—随机数生成器
  7. java web乱码问题_Java Web中文乱码问题解决
  8. iOS商户进件之【营业执照编号校验】18位社会信用代码验证 unified social credit identifier
  9. 89600 matlab,使用Matlab分析频谱仪I/Q数据
  10. 打开ISEIP核里面的datesheet失败,显示C:\Program Files (x86) internet explorer\iexplore.exe http:\\www.xilinx.com
  11. 百度账号更换绑定的手机号
  12. GAFA将改变全球半导体势力版图
  13. 初识Java+JDK的安装与环境变量的配置+IDEA的安装
  14. 8.0之后关闭个人热点功能实现
  15. git 创建关联远程分支报错Did you intend to checkout ‘origin/branchName‘ which can not be resolved as commit?
  16. Vue-element tab选项卡二级页面返回缓存选中页签
  17. 计算机教师继续教育心得,教师继续教育心得体会
  18. 不同版本iOS的特性和差异
  19. ZKFinger Live20R 版对接java - B/S(网络版)
  20. Drawio使用介绍(画图工具)

热门文章

  1. CSS实现内容强制不换行、自动换行、强制换行
  2. 七步教你制定网站SEO整体优化方案
  3. P3518 [POI2011]strongbox
  4. Open3D RANSAC拟合空间直线
  5. 5G全场景时代 战略关键转型期 华为不只要重构想象
  6. 打造新老员工双赢机制变对立为统一
  7. 华硕win10U盘重装系统进入pe
  8. 【HiFlow】腾讯云场景连接器
  9. 长沙鸿蒙置业楼盘,来了!来了!湖南金融中心北中心,全新盘规划公示!刚需户型为主!...
  10. 计算机系统配置低会带来,电脑配置差装什么系统合适