import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 求解无序数组最长连续字串的长度 * @param input_list int整型一维数组 输入的数组 * @return int整型 */ public int search_max_continue_sub (int[] input_list) { // write code here HashSet<Integer> set = new HashSet<>(); // 先将所有的数组元素存入set中,以便后续的查询达到复杂度O(1) for(int num: input_list) set.add(num); int maxLen = 1; // 遍历每个元素 for(int i = 0; i < input_list.length; i++){ int temp_maxLen = 1; int num = input_list[i]; // 对当前元素不断减1,查看是否还在数组中,如果还在则更新最大长度 while(set.contains(num - 1)){ temp_maxLen ++; num --; } maxLen = Math.max(maxLen, temp_maxLen); } return maxLen; } }
import java.util.*; public class Solution { public int search_max_continue_sub (int[] arr) { Arrays.sort(arr); int n = arr.length; int[] dp = new int[n]; // dp[i] 表示i前最长的连续上升数组的长度 dp[0] = 1; int max = 1; // 记录最大值 for (int i = 1; i < n; i++) { if (arr[i] - arr[i - 1] == 1) { dp[i] = dp[i - 1] + 1; } else { dp[i] = 1; } max = Math.max(dp[i], max); // 更新最大值 } return max; } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 求解无序数组最长连续字串的长度 * @param input_list int整型一维数组 输入的数组 * @param input_listLen int input_list数组长度 * @return int整型 * * C语言声明定义全局变量请加上static,防止重复定义 */ void swap(int *p,int len) { for(int i = 0;i<len-1;i++) { for(int j = 0;j<len-i-1;j++) { if(p[j]>p[j+1]) { int temp =p[j]; p[j]=p[j+1]; p[j+1]=temp; } } } } int search_max_continue_sub(int* input_list, int input_listLen ) { swap(input_list,input_listLen); int *ptr=input_list; int MaxLen=0; do { int i =0; while(*(ptr+1)-(*ptr)==1) { i++; ptr++; } MaxLen=((MaxLen)>(i)?(MaxLen):(i)); ptr++; }while(*ptr); return MaxLen+1; }