Advertisement
Guest User

Untitled

a guest
Sep 2nd, 2015
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. class Test {
  2.  
  3. // Здесь будут храниться наши три минимальные числа.
  4. static int min[] = {Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE};
  5.  
  6. // Обновляем массив `min` имея новое число-кандидат в минимум.
  7. static void updateMin(int x) {
  8. // Перебираем текущие минимальные числа.
  9. for (int i = 0; i < 3; ++i) {
  10. if (x < min[i]) {
  11. // Новое число меньше рассматриваемого из `min`.
  12.  
  13. // Сдвигаем текущее и последующие числа, чтобы освободить место
  14. // для нового.
  15. for (int j = 2; j > i; --j)
  16. min[j] = min[j - 1];
  17.  
  18. // Вставляем новое число на полагающееся ему место.
  19. min[i] = x;
  20.  
  21. // Дело сделано.
  22. return;
  23. } else if (x == min[i]) {
  24. // Новое число равно рассматриваемому из `min`.
  25.  
  26. // Заканчиваем, т.к. такое число уже есть среди минимальных.
  27. return;
  28. }
  29.  
  30. // Иначе переходим к следующему числу из `min`
  31. }
  32. }
  33.  
  34. public static void main(String[] args) {
  35. int loc[] = {25, 11, 250, 5, 45, 8, 10, 45, 31, 123, 489};
  36.  
  37. // Находим три минимальных числа.
  38. for (int i = 0; i < loc.length; ++i)
  39. updateMin(loc[i]);
  40.  
  41. // Выводим их
  42. // (проверка на MAX_VALUE на случай, если минимальных чисел окажется
  43. // меньше трех).
  44. for (int i = 0; i < 3 && min[i] != Integer.MAX_VALUE; ++i)
  45. System.out.println(min[i]);
  46. }
  47. }
  48.  
  49. public static <T extends Comparable<T>> List<T> leastDistinctN(Collection<T> input, int n) {
  50. assert n > 0;
  51. PriorityQueue<T> pq = new PriorityQueue<>(Collections.reverseOrder());
  52. for(T t : input) {
  53. if(pq.isEmpty())
  54. pq.add(t);
  55. else if(pq.peek().compareTo(t) > 0 && !pq.contains(t)) {
  56. if(pq.size() == n)
  57. pq.poll();
  58. pq.add(t);
  59. }
  60. }
  61. List<T> list = new ArrayList<>(pq);
  62. Collections.sort(list);
  63. return list;
  64. }
  65.  
  66. System.out.println(leastDistinctN(Arrays.asList(5, 3, 4, 1, 0, 1, 10, 8), 3)); // [0, 1, 3]
  67.  
  68. public static void main(String[] args) {
  69. int [] loc = {25, 11, 250,5, 45,8,10,45,31,123,489};
  70. for(int i = 0; i < loc.length; i ++) {
  71. for (int j = loc.length-1; j >i ; j--) {
  72. if (loc[j] < loc[j - 1]) {
  73. int temp = loc[j];
  74. loc[j] = loc[j - 1];
  75. loc[j - 1] = temp;
  76. }
  77. }
  78. }
  79.  
  80. for(int i = 0; i < 3; i ++) {
  81. System.out.println(loc[i]);
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement