请问今天滴滴内推笔试的输入怎么用java实现??求大神解答!

今天做了滴滴的内推,编程题目逻辑不难,但是我一道都没有写,因为……不会输入!不会输入!不会输入!
感觉这种输入应该是比较常见的,就是输入一行若干数字,每个数字之间用空格隔开,要把输入的数字放入一个数组或者ArrayList里面进行操作。
看着是普通寻常的输入方式,但是我把所有时间都拿去搞输入了,却没有搞出来,或许是我真的太蠢了吧。
请问有哪位大神知道该怎么输入吗:
例题:输入一串序列,求最大连续字序列和
示例输入:45 -27 128 13 -86 -21
(具体数字我不记得了,格式就是这样的)
示例输出:141
#滴滴#
全部评论
我用的字符串输入,然后split空格分开,在输入的时候转成整形了
点赞 回复 分享
发布于 2017-08-26 17:12
是不知道如何判断输入结束?可以一次性读整行,再split parse成数字。
点赞 回复 分享
发布于 2017-08-26 17:12
//我的菜鸡操作 String input = scanner.nextLine(); String[] a = input.split(" "); int[] b = new int[a.length]; for(int i = 0; i < a.length; i ++){ String aString = a[i]; b[i] = Integer.parseInt(aString); }
点赞 回复 分享
发布于 2017-08-26 17:54
import java.util.ArrayList; import java.util.Scanner; import java.util.TreeSet; public class Main { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); TreeSet<Integer> set = new TreeSet<Integer>(); Scanner scanner= new Scanner(System.in);                 String str = scanner.nextLine();                 int k = scanner.nextInt();                 String[] s = str.split(" ");          for(int i = 0; i < s.length; i++) { set.add(Integer.parseInt(s[i])); } if(k >= set.size() || k <= 0) { System.out.println(-1); } for(Integer i : set) { list.add(i); } System.out.println(list.get(list.size()-k)); } }
点赞 回复 分享
发布于 2017-08-26 17:31
java直接用split就行了。。。不能更简单
点赞 回复 分享
发布于 2017-08-26 17:51
import java.util.*; public class Main2 { public static void main(String[] args) { Scanner in = new Scanner(System.in); List<Integer> nums = new ArrayList<>(); while (in.hasNextInt()) { nums.add(in.nextInt()); } Integer Kth = nums.get(nums.size() - 1); nums.remove(nums.size() - 1); Integer result = obtainKthNum(nums, Kth); System.out.print(result); } private static Boolean checkBasic(Integer Kth, List<Integer> nums) { if (nums == null || nums.size() <= 0 || Kth <= 0 || Kth > nums.size()) { return false; } return true; } private static Integer obtainKthNum(List<Integer> nums, Integer Kth) { if (!checkBasic(Kth, nums)) { return Integer.MAX_VALUE; } Queue<Integer> largestK = new PriorityQueue<>(); for (Integer num : nums) { largestK.add(num); if (largestK.size() > Kth) largestK.poll(); } return largestK.poll(); } }
点赞 回复 分享
发布于 2017-08-26 17:38
第一题 Scanner sc = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<Integer>(); while (sc.hasNextInt()) {     list.add(sc.nextInt()); } 第二题 Scanner sc = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<Integer>(); string s = sc.nextLine(); int k = sc.nextInt(); String[] numString = in.nextLine().split(" "); for (String t:numString) {     list.add(Integer.parseInt(t)); }
点赞 回复 分享
发布于 2017-08-26 17:35
第一题用的ArrayList<Integer> list = new ArrayList<Integer>();         while(in.hasNextInt()){             list.add(in.nextInt());         } 然后第二题的也想用ArrayList,但是多行输入while始终跳不出来了。。好想知道大佬们怎么实现的。
点赞 回复 分享
发布于 2017-08-26 17:15
String[] numString = in.nextLine().split(" "); int[] nums = new int[numString.length];
点赞 回复 分享
发布于 2017-08-26 17:15
多做做牛客网的题,你就会了
点赞 回复 分享
发布于 2017-08-26 17:15
先搞成字符串,然后用split去掉空格,再用parse转换成数组
点赞 回复 分享
发布于 2017-08-26 17:15
我也不知道C++的这个具体怎么写。。所以用的python😂 a = map(int, raw_input().split()) 看了评论才发现其他语言也是要这么写,不过没这么简单。。。
点赞 回复 分享
发布于 2017-08-28 17:15
import java.util.Scanner; import java.io.*; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] s = br.readLine().trim().split(" "); //然后转int数组,list都可以了,用scanner.nextLine()有时候会报错
点赞 回复 分享
发布于 2017-08-28 13:28
感谢各位大佬,小弟受教了!【手动抱拳】
点赞 回复 分享
发布于 2017-08-26 17:46

相关推荐

03-25 19:00
东北大学 Java
程序员牛肉:太好了,是聊天记录。不得不信了。 当个乐子看就好,不要散播焦虑
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务