小红书2020校招算法笔试题卷一

字符串倒序

薯队长带着小红薯参加密室逃脱团建游戏,首先遇到了反转游戏,小红薯们根据游戏提示收集了多个单词线索,并将单词按要求加一个空格组 成了句子,最终要求把句子按单词反转解密。 说明:收集的时候单词前后可能会有多个空格,反转后单词不能有多个空格,具体见输入输出样例。

输入描述:
输入一个字符串。包含空格和可见字符。长度<=100000。
输出描述:
输出一个字符串,表示反转后结果。
示例1
输入

the  sky is                                              blue!

输出

blue! is sky the

:经常出现,比较简单

public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String a = scanner.nextLine();int flag = 0;String b="";String str[]=a.trim().split(" +");for(int i=str.length-1;i>0;i--){b=b+str[i]+" ";}b=b+str[0] ;System.out.println(b);  }
}

笔记精选

薯队长写了n篇笔记,编号从1~n,每篇笔记都获得了不少点赞数。
薯队长想从中选出一些笔记,作一个精选集合。挑选的时候有两个规则:
1.不能出现连续编号的笔记。
2.总点赞总数最多
如果满足1,2条件有多种方案,挑选笔记总数最少的那种

输入描述:
输入包含两行。第一行整数n表示多少篇笔记。 第二行n个整数分别表示n篇笔记的获得的点赞数。
(0<n<=1000, 0<=点赞数<=1000)
输出描述:
输出两个整数x,y。空格分割。
x表示总点赞数,y表示挑选的笔记总数。
示例1
输入

4
1 2 3 1

输出

4 2

:动态规划找公式,由于不能出现连续, 容易想到想到dp[i] (此处dp值为点赞数)是肯定与dp[i-2]和dp[i-3]之间有关系,如果与dp[i-4]有直接关系意味着跳过了dp[i-2]会导致点赞数变少,情况错误
dp[i] = max(dp[i-2],dp[i-3])+ mm[i](当前点赞数)
然而还要考虑比笔记数则 dp[x][0] 为 点赞数 dp[x][1]为笔记数

  1. 当 dp[i-2][0] 与 dp[i-3][0] 不等时:
    dp[i][0] = max(dp[i-2][0],dp[i-3][0])+ mm[i](当前点赞数)
    dp[i][1]= dp【x】[1] 对应的天数 + 1
  2. 当 dp[i-2][0] 与 dp[i-3][0] 相等时:
    dp[i][0] = dp【x】[0] +mm[i] x对应的天数小的
    dp[i][1]= min (dp[i-2][1] , dp[i-3][1]) + 1
  3. 对0的考虑
    这种情况我一开始忽略了导致最后一组数据 n= 999 过不了

    发现他含有0 ,0点赞数每增加但是笔记数+1了这是我们不想要的。跟上面情况一样只是天数不加1。把0对应位置的 index(0)-2 ,index(0)- 3的数据比较后传到0位置来。

输出和初始化大家想一下就明白了。

题目还算好想,考虑不全的话看到错误也能改出来。代码写的很多,但是思想简单,建议大家自己写哈。

public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();scanner.nextLine();String b = scanner.nextLine();String []arr=b.split(" +");int []mm = new int[a];for(int i=0;i<a;i++)mm[i]= Integer.parseInt(arr[i]);int [][]dp = new int[a][2];for(int i=0;i<a;i++){//             等于0等情况  把dp[i-1] dp[i-2]按条件过度过来但是步数不加
//             不然有一组999 的案例里面含有0过不了if(mm[i]==0){//                System.out.println(i+"含有0");if(dp[i-2][0]<dp[i-3][0]){dp[i][0]=dp[i-3][0]+mm[i];dp[i][1]=dp[i-3][1] ;}else if(dp[i-2][0]>dp[i-3][0]){dp[i][0]=dp[i-2][0]+mm[i];dp[i][1]=dp[i-2][1] ;}else{if(dp[i-2][1]<dp[i-3][1]){dp[i][0]=dp[i-2][0]+mm[i];dp[i][1]=dp[i-2][1] ;}else{dp[i][0]=dp[i-3][0]+mm[i];dp[i][1]=dp[i-3][1] ;}}continue;}if(i<2){dp[i][0]=mm[i];dp[i][1]=1;}else if(i==2){dp[i][0]=dp[0][0]+mm[i];dp[i][1]=2;}else{if(dp[i-2][0]<dp[i-3][0]){dp[i][0]=dp[i-3][0]+mm[i];dp[i][1]=dp[i-3][1]+1;}else if(dp[i-2][0]>dp[i-3][0]){dp[i][0]=dp[i-2][0]+mm[i];dp[i][1]=dp[i-2][1]+1;}else{if(dp[i-2][1]<dp[i-3][1]){dp[i][0]=dp[i-2][0]+mm[i];dp[i][1]=dp[i-2][1]+1;}else{dp[i][0]=dp[i-3][0]+mm[i];dp[i][1]=dp[i-3][1]+1;}}}}if(dp[a-1][0]>dp[a-2][0])System.out.println(dp[a-1][0]+" "+dp[a-1][1]);else if(dp[a-1][0]<dp[a-2][0])System.out.println(dp[a-2][0]+" "+dp[a-2][1]);else {if( dp[a-1][1]>=dp[a-2][1])System.out.println(dp[a-2][0]+" "+dp[a-2][1]);elseSystem.out.println(dp[a-1][0]+" "+dp[a-1][1]);}}
}

击败魔物

没什么思路 (太菜了

小红书2020校招算法笔试题卷一相关推荐

  1. 小红书2020校招前端笔试题卷一

    题目1-下列说法正确的是()多选 A: requestAnimationFrame(foo) 确保使浏览器在下一次重绘之前调用 foo 方法B: 在 addEventListener 的处理方法中使用 ...

  2. 小红书2020校招数据分析笔试题卷四 解析

    小红书2020校招数据分析笔试题卷四 解析 单选题 多选题 填空题 简答题 题目来自小红书2020校招数据分析笔试题卷四 单选题 如果在小红书商城中某一商户给一产品定价,如果按照全网最低价500元定价 ...

  3. 小红书2020校招前端笔试题卷三

    小红书2020校招前端笔试题卷三题目地址 第一题 第一题我做错了以为是选错误的 第二题 第三题 解: JS中的执行机制(setTimeout.setInterval.promise.宏任务.微任务), ...

  4. 小红书2020校园招聘笔试题-笔记草稿问题答案

    1.因为之前用栈写过括号匹配的问题,所以想直接用栈解决此问题.后来发现不用栈更简单,答案在后面一个代码里面展示. 首先判断当前待处理的字符是否是),如果是,就逐个弹出栈顶元素,直到左括号(弹出为止.( ...

  5. 小红书2020校招算法题(三)

    目录 一.笔记草稿 二.笔记精选 一.笔记草稿 题目描述: 薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 输入字符包括,"(" , ")" 和 "& ...

  6. 2014微软秋季校招算法笔试题

    这道题是来自2014微软秋季校招笔试题的最后一道算法笔试题,本博客提供代码解析及代码实现!!! 第二部分测试时间为60分钟,满分50分.请务必在回答问题前仔细阅读变成题目.您可以选用C.C++.C#或 ...

  7. 小红书2020校招测试开发后端笔试题卷一

    "记录一下做的小红书的笔试" 题目描述: 薯队长写了一篇笔记草稿,请你帮忙输出最后内容. 1.输入字符包括,"(" , ")" 和 &quo ...

  8. 用友2020校招java笔试题_用友Java类笔试题大全

    如下为大家汇总的是一份用友Java类笔试题,欢迎大家关注! 1.Hashtable和HashMap有什么区别? a.Hashtable是继承自陈旧的Dictionary类的,HashMap继承自Abs ...

  9. 海致星图2022校招算法笔试题

    1.有1,2,3,-无穷个格子,你从1号格子出发,每次1/2概率向前跳一格,1/2概率向前跳两格,走到格子编号为4的倍数时结束,结束时期望走的步数为____. 答案:3.6 解析: 跳一格跳两格都算一 ...

最新文章

  1. tomcat监控-psi-probe使用
  2. Shell编程常用命令
  3. DLL入门浅析(1)——如何建立DLL
  4. Erlang程序设计
  5. 403禁止访问:访问被拒绝如何解决_死链接对网站有哪些危害?如何处理死链接?...
  6. MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
  7. LeetCode 977. 有序数组的平方
  8. Mybatis中接口和对应的mapper文件位置配置详解
  9. 架构可视化支撑系统演进探索
  10. HOOK大神用c++制作绝地求生自瞄物品透视,源码仅供娱乐!
  11. 1000+常用Python库一览
  12. sql注入语句示例大全_通过示例了解SQL EXCEPT语句
  13. sl400升级win10_联想SL400全安装WIN7(官方最完美教程).doc
  14. edge播放视频HTML5黑屏,Win10 edge 浏览器 播放视频黑屏解决方法
  15. Python索引 说明
  16. iphone屏幕自定义排版_如何使用小部件和图标自定义iPhone主屏幕
  17. 使用python进行数据清洗常用的库_用于格式化和数据清理的便捷Python库
  18. 通读JavaScript红皮书(第二三章)
  19. JAVA10和11什么时候_Java 11 正式发布 支持期限至2026年9月
  20. element ui框架(准备)

热门文章

  1. 一只喵的西行记-13 堡主的魔法星球
  2. [RKNN] 3. 零拷贝接口推理
  3. 2019年7月中国奶业经济月报
  4. 2021年中国医药行业发展现状及重点企业对比分析[图]
  5. Ventuz 如何配置dll引用
  6. Ventuz 分享制作内容
  7. 「现代C++设计魅力」虚函数继承-thunk技术初探
  8. Tiktok的发展趋势以及政策支持,你了解多少?
  9. postman断言示例:Response body:Contains string
  10. uni-app 【JS Framework】报错当前运行的基座不包含原生插件【xxxx】,请在manifest.json中配置该插件---uniapp原生开发006