【0810神策数据笔试】java3道编程
第一题:字符串、有效括号数
给定一个字符串,打印里面匹配的括号的个数和下标,比如:
(1)23(4()5)6,一共有三对括号,下标0和2是一对,5和10是一对,7和8是一对。输入数据的括号均能成对出现,以下输入是不存在的:((1)
输入描述:一个包含数字和括号的字符串,一行
输出描述:多行输出,第一行是成对括号的个数,后面每行是一个括号的下标。
输入:(1)
输出:
1
0
2
说明:共有1对成对的括号,其下标为0和2
输入:
(1)23(4()5)6
输出:
3
0
2
5
10
7
8
说明:有3对成对的括号,每次输出一对的下标,输出顺序以左括号所在下标的升序排列,故0,2一对,5,10一对,7,8一对。
AC 100%
import java.util.*;public class Solution1 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()){String s = scanner.nextLine();method(s);}}public static void method(String s){char[] chars = s.toCharArray();int count = 0;for(char c: chars){if(c == '(' || c == ')'){count++;}}System.out.println(count/2);Deque<Integer> leftStack = new LinkedList<>();Deque<Integer> rightQueue = new LinkedList<>();List<List<Integer>> res = new ArrayList<>();for (int i = 0; i < chars.length; i++) {if(chars[i] == '('){leftStack.push(i);}if(chars[i] == ')'){rightQueue.offer(i);List<Integer> list = new ArrayList<>();list.add(leftStack.pop());list.add(rightQueue.poll());res.add(list);}}Collections.sort(res,(o1,o2)->{return o1.get(0)-o2.get(0);});for (int i = 0; i < res.size(); i++) {System.out.println(res.get(i).get(0));System.out.println(res.get(i).get(1));}}}
第二题:很赞的整数对
题目:给一个整数对(x,y),并且允许把其中一个数修改成之前两个数的和,x+y。比如(5,2),两数之和为7,经过一次修改可以变成(7,2)或(5,7)。再给一个整数m,问至少要做多少次上述修改操作,才能使两个数组成的数对是对m很赞的整数对。两个数中至少有一个数大于等于m,这个数对就是很赞的整数对。
输入描述:一行包含3个整数,分别是x,y,m。其中x,y是最初的两个整数,取值范围是int32;m是一个整数,取值范围是int32;
输出描述:至少要做多少次上述修改操作,才能使得数对为m的很赞整数对。
输入: 1 2 5
输出: 2
说明:经过2次操作,一种可行的但不一定是最优的操作方法是:(1,2)-->(3,2)-->(5,2)输入:-1 4 15
输出: 4
说明:最少经过4次操作,一种可行的但不一定是最优的操作方法是:(-1,4)-->(3,4)-->(7,4)-->(11,4)-->(15,4) 输入: 0 -1 5
输出: -1
说明:经过多少次操作都无法满足要求,输出-1
AC 77%
import java.util.Scanner;
public class Solution2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()){String s = scanner.nextLine();String[] s1 = s.split(" ");int[] nums = new int[2];nums[0] = Integer.valueOf(s1[0]);nums[1] = Integer.valueOf(s1[1]);int m = Integer.valueOf(s1[2]);int res = find(nums, m);System.out.println(res);}}public static int find(int[] nums, int m){//1.其中有1个大于m就不需要操作int x = nums[0];int y = nums[1];long x1 = x;long y1 = y;if (x1 < m && y1 < m &&(x1 + y1 >Integer.MAX_VALUE) ){return -1;}if(x >= m || y>= m){return 0;}//2.1次相加后就大于等于m就返回1,只要加1次就可以了int sum = x + y;if(sum >= m){return 1;}//3.如果有一个数为0,且另一个数小于0,那么就不可能成功if ((nums[0] == 0 || nums[1] == 0)){if (nums[0] < 0){return -1;}else if (nums[1] < 0){return -1;}else {return -1;}}//4.加一次不够的情况int count = 1;while (sum < m){int maxV = Math.max(nums[0],nums[1]);if (nums[0] < nums[1]){nums[0] = sum;}else {nums[1] = sum;}sum += maxV;count++;}return count;}
}
第三题:leetcode322 零钱兑换原题
https://leetcode-cn.com/problems/coin-change-2/solution/ling-qian-dui-huan-ii-by-leetcode-soluti-f7uh/
题目:从面值为[1,5,10,20,100]5种面值的纸币中组成指定的金额,求组成指定金额需要的纸币的最少张数。
输入:金额,一个整数
输出:最少的张数,一个整数
输入:125
输出:3
说明:一张100元,一张20元,一张5元输入:43
输出:5
说明:2张20元,3张1元输入:1000000000
输出:10000000
说明:10000000张100元
AC 97%
import java.util.Arrays;
import java.util.Scanner;public class Solution3 {//背包问题:[1,5,10,20,100],背包重量为输入值,问最少用哪些物品可以装满背包static int[] bags = new int[]{1,5,10,20,100};public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()){Integer in = scanner.nextInt();int res = find(in);System.out.println(res);}}public static int find(int in){int[] dp = new int[in+1];Arrays.fill(dp,Integer.MAX_VALUE-1);dp[0]=0;for (int i = 1; i <= bags.length; i++) {for(int j = 0;j<=in;j++){if (j>=bags[i-1]){dp[j] = Math.min(dp[j],dp[j-bags[i-1]] + 1);}}}return dp[in] == (Integer.MAX_VALUE-1)? -1:dp[in];}
}
【0810神策数据笔试】java3道编程相关推荐
- 滴滴2016.09.06校招 在线笔试 - 2道编程题
滴滴2016.09.06校招 在线笔试 - 2道编程题 1.连续子数组的最大和 题目描述 一个数组有N个元素,求连续子数组的最大和.例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3. ...
- 2020.9.23 金山云后台开发岗笔试 2道编程
子树的权重 时间限制: 3000MS 内存限制: 589824KB 题目描述: 首先按照从上到下.从左到右的顺序输入一棵满二叉树中每一个结点对应的权重,例如输入1.1.2表示二叉树的根结点的权重为1, ...
- 度小满笔试两道编程题2020/09/20
备战秋招面试 微信搜索公众号[TechGuide]关注更多新鲜好文和互联网大厂的笔经面经. 作者@TechGuide 点赞再看,养成习惯,您动动手指对原创作者意义非凡
- 大数据量10道面试题及解析
大数据量10道面试题及解析 海量数据处理:十道面试题与十个海量数据处理方法总结 作者:July.youwang.yanxionglu. 时间:二零一一年三月二十六日 本文之总结:教你如何迅速秒杀掉:9 ...
- 神策数据:游戏买量与长线运营的数据宝典
本文根据神策数据·数据分析部深圳分部 Leader 陈世键以<监管加强.流量生态变革,游戏买量与长线运营的数据宝典>为主题的演讲整理,从游戏生态变革.数据洞察助力精准买量.数据分析调优长线 ...
- 神策数据丨九大行业数字化经营指南集锦,值 100% 收藏
每一份白皮书.报告和案例的开始都有一个共同点:对各行业的数字化满心期许.我们希望为更多企业在数字化转型之路上提供可靠.可信.可落地的方法论与实践指导,为数字化时代的到来贡献绵薄之力. 2021 年末, ...
- 企服创业必修课丨神策数据与红杉中国联合发布规模化营销获客体系建设指南...
<2021 中国企服企业规模化获客体系建设指南>由神策数据与红杉中国历时数月调研撰写,累计深度访谈了 20 多位中国知名企服公司创始人.CEO.CMO 及专业投资人后总结.提炼而成.该报告 ...
- 神策数据入选铅笔道 2021 真榜“企业服务未来独角兽排行榜·营销与销售 TOP20”...
近日,铅笔道 2021 真榜"企业服务未来独角兽排行榜"正式发布,神策数据凭借扎实的基本面.资本的高度认可.良好的商业价值获得评审团的一致认可,荣登"企业服务未来独角兽排 ...
- 深度案例 | 神策数据如何助力房产企业数字化转型快速落地?
伴随着数字中国战略的实施.市场环境的变化以及云计算.大数据.人工智能等新技术的渗透,房产企业不得不与时俱进.加速步入调整期,打破规模化效益.粗放式经营的发展状态,转变为以数据为核心.降本增效.数字化运 ...
最新文章
- 支撑Java框架的基础技术:泛型,反射,动态代理,cglib
- matlab 将图片立体化,MATLAB基础(五)——绘制立体图
- Layui + bootstrap + servlet 的房屋出租管理系统
- 发布新模板-画情画心
- 史上超级详细:HashMap源码分析,你了解到源码的魅力了嘛
- 用户界面设计的一些方法和基本原则
- 质数判断,不同算法效率比较
- 从Spring开始,Java EE 6必须具备哪些附加功能?
- WCF学习笔记之序列化
- Menelaus定理与证明
- Python中pip包管理工具的源配置文件pip.ini
- 【POJ2155】Matrix(二维区间修改+单点查询---二维树状数组)
- json react 展示工具_如何基于jsoneditor二次封装一个可实时预览的json编辑器组件?(react版)...
- hutool的BeanUtil
- Spring IOC(一):概述
- window10/11拨号连接宽带连接开热点
- python网易云听歌时长_用Python爬取10w条网易云音乐热评并进行分析的方法总结
- finalcut剪切快捷键_final cut pro怎么用快捷键把时间线上的素材移动到入点或剪辑点...
- Unity3d使用RenderTexture制作动态头像
- 红外成像单筒望远镜TFN TD7产品 型号评测
热门文章
- 博客搬家到Octopress(Mac)
- 机器学习算法——神经网络5(ART 1网络)
- PIV实验流场流速云图(MALAB contour函数用法)
- 1.Kafka下载安装
- 如何构建一个可持续的企业级数据赋能体系?
- IGMP PROXY和IGMP SNOOPING 有什么区别?
- 微信本地模拟开发环境搭建
- 英语四级真题作文 计算机,2017年6月英语四级作文真题及范文:卖电脑
- 平面空间的元素和部分3d空间的元素
- spring boot spring data 整合 redis redis keys * 出现 \xac\xed\x00\x05t\x00) 编码异常