输入数据包括一行:
一共n个整数,范围均在32位整数内,格式见输入样例
输出最长的连续数字的长度
[3,1,2,5,7,4,8,9]
5
import java.util.HashSet; import java.util.Scanner; public class Main { public static int getMaxCount(String []nums){ HashSet<Integer> data = new HashSet<>(); int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; for(int i=0;i<nums.length;i++){ int input = Integer.valueOf(nums[i]); data.add(input); if(input<min){ min = input; } if(input>max){ max = input; } } int count = 1; int maxCount = 1; for(int i = min+1;i<=max;i++){ if(data.contains(i)){ count++; if(count>maxCount){ maxCount = count; } }else{ count = 0; } } return maxCount; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String inputData = sc.nextLine(); inputData = inputData.substring(1,inputData.length()-1);//去括号 String nums[] = inputData.split(","); System.out.println(getMaxCount(nums)); } }输入还特喵带括号。。。
import java.util.*; public class Main { // 数组中最长连续的长度-o(n) public static void main(String[] args) { Scanner in = new Scanner(System.in); String s = in.nextLine(); String[] ss = s.substring(1, s.length()-1).split(","); Set<Integer> set = new HashSet<>(); for (String value : ss) { set.add(Integer.parseInt(value)); } int cnt, max = 0; for (String value : ss) { cnt = 1; int n = Integer.parseInt(value); if (set.contains(n + 1)) { while (set.contains(n+1)) { cnt++; n++; } } max = Math.max(max, cnt); } System.out.println(max); } }
public class Main { public static void main(String[] args) { Scanner s=new Scanner(System.in); String nums=s.nextLine(); String a[]=nums.substring(1,nums.length()-1).split(","); int b[]=new int[a.length]; int max=0,count=0; for(int i=0;i<a.length;i++){ b[i]=Integer.parseInt(a[i]); if(max<b[i])max=b[i]; } int c[]=new int[max+1]; for(int i=0;i<b.length;i++){ c[b[i]]++; } int temp=0; for(int i=0;i<max+1;i++){ if(c[i]!=0){ temp+=c[i]; }else temp=0; count=Math.max(count,temp); } System.out.println(count); } }
#include<bits/stdc++.h> using namespace std; int main(){ string s; getline(cin,s); stringstream ss(s); vector<int> a; char x; int n; // 数据获取 while(ss>>x){ if(x == ']') break; ss>>n; a.push_back(n); } sort(a.begin(),a.end()); int Max = 0,Count = 1; for(int i=1;i<a.size();i++){ if(a[i-1]+1 == a[i]) Count++; else{ Max = max(Max,Count); Count = 1; } } Max = max(Max,Count);// 当循环跳出后还需进行比较 cout << Max <<endl; return 0; }
import java.util.*; public class Main { public static int longestConsecutive(int[] nums){ Set<Integer> set = new HashSet<>(); for(int num:nums){ set.add(num); } int longestStreak = 0; for(int num:set){ if(!set.contains(num-1)){ int currNum = num; int currStreak = 0; while(set.contains(currNum)){ currNum++; currStreak++; } longestStreak = Math.max(longestStreak, currStreak); } } return longestStreak; } public static void main(String[] args){ Scanner scan = new Scanner(System.in); String input = scan.nextLine(); input = input.substring(1,input.length()-1); String[] inputArray = input.split(","); int[] inputNum = new int[inputArray.length]; for(int i=0; i<inputNum.length; i++){ inputNum[i] = Integer.parseInt(inputArray[i]); } System.out.println(longestConsecutive(inputNum)); } }NowCoder的评判系统是真的不好用,还要自己写一个main函数来读取输入,鬼知道它输入的是个什么鬼东西。