Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.04.2014, 16:57
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 1  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию Поиск недостающего элемента в массиве

Здравствуйте
Сегодня на собеседовании поплыл.
Была задача:
Есть массив чисел от 1 до N (1,,,N) с шагом в 1
Этот массив перемешали и удалили одно из чисел
Как найти за один for это число ?

Старый 28.04.2014, 17:01
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 2  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
Есть массив чисел от 1 до N (1,,,N) с шагом в 1
Если эта фраза гласит, что элементы от 1 до 100 последовательно, то найти можно
Код AS3:
currentItem = array[i];
if(i < array.lenght && array.indexOf(currentItem + 1) == -1) trace('Bingo!!!');
Добавлено через 4 минуты
или
Код AS3:
if(i < array.length && ! currentItem + 1 in array) // так быстрее будет.


Последний раз редактировалось Akopalipsis; 28.04.2014 в 18:19.
Старый 28.04.2014, 17:10
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 3  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
i < array.length - 1
А это зачем?
Число-то удалили, а соответственно, вы отбрасываете 99-ое число массива. Да и вообще, какой смысл от этого условия? Лишняя нагрузка?
__________________
There is no thing in this world that is not simple.

Старый 28.04.2014, 17:17
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 4  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
В массиве сто элементов, один удалили, как будет выглядеть 98 + 1 ?)

Старый 28.04.2014, 17:25
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 5  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код AS3:
for(var i:int = 1; i <= array.length + 1; i++)
{
   if(array.indexOf(i) < 0) trace(i); 
}
__________________
There is no thing in this world that is not simple.

Старый 28.04.2014, 17:29
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 6  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Что это за чудо такое?))))

Добавлено через 3 минуты
Вы тоже собеседование не прошли.

Старый 28.04.2014, 17:34
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 7  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
var array:Array = [];
for(var j:int = 1; j <= 100; j ++)
array.push(j);
trace(array);
array.splice(array.indexOf(10));
for(var i:int = 1; i <= array.length + 1; i++)
{
if(array.indexOf(i) < 0) trace(i); //выводит 10
}
Сек, ошибся с функцией.
Хотя нет, не ошибся. Просто забыл передать второй параметр 1.
Цитата:
Код AS3:
var array:Array = [];
for(var j:int = 1; j <= 100; j ++)
	array.push(j);
 
trace(array);
 
array.splice(array.indexOf(10),1);
 
trace(array);
 
for(var i:int = 1; i <= array.length + 1; i++)
{
   if(array.indexOf(i) < 0) trace(i); 
}
Код:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100

1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100

10
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 28.04.2014 в 17:53.
Старый 28.04.2014, 17:35
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 8  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Эх... и я попался))) нужно же уточнить - как удалили? Хотя если придерутся, то можно сказать, что удалили, значить splice.

Добавлено через 1 минуту
Да потому что Вы не удалил даже)))

Старый 28.04.2014, 17:43
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 9  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Всё я удалил. Просто сначала я отсекал вообще пол массива, от 10-го элемента. Мне просто IDE начала вчехлять бред насчет этой функции, пришлось лезть в доки.
__________________
There is no thing in this world that is not simple.

Старый 28.04.2014, 17:43
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
тогда вот так -
Код AS3:
var length:int = array.length + 1;
for(var i:int; i < length; i++)
{
     if( ! i in array) trace('Удалённое число - ' + i);
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:39.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.