кодесурса

Упражнения Java Array: Найти длину самой длинной последовательной последовательности элементов из заданного несортированного массива целых чисел

script1adsense2code
script1adsense3code

Java Array: упражнение 34 с решением

Напишите программу на Java, чтобы найти длину самой длинной последовательной последовательности элементов из заданного несортированного массива целых чисел.
Образец массива: [49, 1, 3, 200, 2, 4, 70, 5]
Самая длинная последовательность последовательных элементов - это [1, 2, 3, 4, 5], поэтому программа вернет ее длину 5.

Иллюстрированная презентация:


Пример решения :

Java-код:

import java.util.HashSet;
public class Exercise34 {    
   public static void main(String[] args) {
        int nums[] = {49, 1, 3, 200, 2, 4, 70, 5};  
		System.out.println("Original array length: "+nums.length);
		System.out.print("Array elements are: ");
       for (int i = 0; i < nums.length; i++)
        {
            System.out.print(nums[i]+" ");
        }
		System.out.println("\nThe new length of the array is: "+longest_sequence(nums));
			
    }
    
    public static int longest_sequence(int[] nums) {
      final HashSet<Integer> h_set = new HashSet<Integer>();
        for (int i : nums) h_set.add(i);
        int longest_sequence_len = 0;
        for (int i : nums) {
            int length = 1;
            for (int j = i - 1; h_set.contains(j); --j) {
                h_set.remove(j);
                ++length;
            }
            for (int j = i + 1; h_set.contains(j); ++j) {
                h_set.remove(j);
                ++length;
            }
            longest_sequence_len = Math.max(longest_sequence_len, length);
        }
        return longest_sequence_len;
    }
}

Пример вывода:

                                                                              
Длина исходного массива: 8                                               
Элементы массива: 49 1 3 200 2 4 70 5                                
Новая длина массива: 5

Блок - схема:

«Блок-схема:

Визуализация выполнения кода Java (Python Tutor):


Редактор кода Java:

Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Напишите программу на Java, чтобы удалить дублирующиеся элементы данного массива и вернуть новую длину массива.
Далее: Напишите программу на Java, чтобы найти сумму двух элементов данного массива, которая равна заданному целому числу.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code