|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
И старайтесь не использовать push, заменяйте его на, а splice это вообще кошмар. Добавлено через 1 минуту И все arr[i + 1] и arr[i] + 1 лучше охранять в локальные свойства. |
|
|||||
Акакак разница?
Логическому "И" пофиг, какое выражение идёт спереди, а какое сзади. Оно возвратит true, если оба выражения верны. Так я привык писать. Цитата:
Правда от этого код станет вообще нечитабелен. Поэтому push имеет свои плюсы. Добавлено через 2 минуты Цитата:
Добавлено через 4 минуты Я постарался ужать код.
__________________
There is no thing in this world that is not simple. |
|
|||||
Ого, 4 страницы.
Спасибо за подсказки. Попробую понять. |
|
|||||
Цитата:
__________________
There is no thing in this world that is not simple. |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Нет Вы придумали ещё один push. я про push сказал потому, что уже не первый раз его у Вас вижу.
Он работает медленнее чем [count++]. push == 300, count++ == 130. А Ваша новая затея замедляет тем, что Вы геттер arr.length вызываете каждый раз, а геттер это медленнее и ещё он наверное инициирует пересчет всего массива и его время составляет 1800. Все скорости мерил на 1 мил итераций. |
|
|||||
Цитата:
Вот это может подтвердить моё предположение: Хотя, возможно, что там просто резервируется память под грядущие элементы. Поэтому не могу утверждать 100%.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 29.04.2014 в 00:10. |
|
|||||
Banned
|
Цитата:
Добавлено через 2 минуты Цитата:
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
Добавлено через 11 минут И немного поправил private function find(array:Array):int { var length:int = array.length; var summa:int = 0; for (var i:int; i < length; ++i) summa += array[i]; return (length + 2) / 2 * (length + 1) - summa; } И итерационному свойству не присваивать значение, то в десятки раз быстрей. |
|
|||||
Цитата:
А ещё, in4core был прав. У вас одно на русском, другое на английском. Просто кошмар
__________________
There is no thing in this world that is not simple. |
|
|||||
Можно все числа от 1 до N сложить и получить их общую сумму. Затем сложить все элементы массива. Если мы точно знаем, что из массива удалили только одно число, значит разница сумм будет равна искомому числу. Типа вот так:
var array:Array = ...; var n:int = array.length + 1; // потому что одно число удалили. var nSum:int = 0; var arrSum:int = 0; for (var i:int = 0; i < n; i++) { nSum += i; if ((n - i) > 1) // можно проверять через array.length, но это типа долго { arrSum += array[i]; } } trace("missing number is: ", nSum - arrSum); а, ну да, все уже придумали до меня да еще и через прогрессию =) Ну все равно не очень сложная задачка.
__________________
...вселенская грусть |
Часовой пояс GMT +4, время: 19:53. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|