1st number: 50
2. 30
3. 70
4. 40
5. 11
다른 번호 마지막 번호는 (사용 PHP) .. 도움 사이에있는 두 개의 숫자 I 계산할 필요 33일련 번호 중 숫자에 대한 천장 및 바닥을 찾으려면 어떻게합니까?
입니까?
1st number: 50
2. 30
3. 70
4. 40
5. 11
다른 번호 마지막 번호는 (사용 PHP) .. 도움 사이에있는 두 개의 숫자 I 계산할 필요 33일련 번호 중 숫자에 대한 천장 및 바닥을 찾으려면 어떻게합니까?
입니까?
코드는 제공하지 않지만 숙제에 대한 지침을 제공합니다.
문제를 해결하려면 다음 단계를 수행해야합니다.
정렬 된 목록 :
11
30
// your 33 is bigger than 30 and smaller than 40, so this is the position you want.
40
50
70
으로 반복 목록을 통해 찾아 다음 두 값 :
:
lowerlimit = Unknown
upperlimit = Unknown
for each n in list:
if (n <= target) and (lowerlimit is Unknown or n > lowerlimit):
lowerlimit = n
if (n >= target) and (upperlimit is Unknown or n < upperlimit):
upperlimit = n
그런 lowerlimit
및 upperlimit
당신의 대답이다. 이 알고리즘은 O (n) 시간과 O (1) 여분의 공간이 필요합니다.
다른 여러 대상 번호로 동일한 목록을 테스트하려는 경우 O (n log (n)) 시간이 필요한 목록을 먼저 정렬하는 것이 좋지만 그 다음에는 O (log (n)) 시간.
function isBetween($several_numbers, $number)
{
$return_numbers = array();
sort($several_numbers);
$j = 0;
//find the first number in the array that $number is bigger than
while($number > $several_numbers[$j]) $j++;
if ($j == 0 || $j > count($several_numbers) - 1) return array();
$return_numbers[0] = $several_numbers[$j-1];
while($number > $several_numbers[$j]) $j++;
if ($j > count($several_numbers)-1) return array();
$return_numbers[1] = $several_numbers[$j];
return $return_numbers;
}
print_r(isBetween(array(50, 30, 70, 40, 10), 33));
내가 제대로 이해하면 나도 몰라하지만 그것이
우리는이 순간에 명확하지 않다 당신이 원하는에 대한 더 많은 정보가 필요 것 같다. 또한 우리가 당신을 위해 모든 것을하지 않는 한 당신이 시도한 것. – Yacoby
이 세상에서 아무도이 문제에 답변 할 수 없습니다. – Salil
그래서 결과는 * 33이 30과 40 * 사이이거나 다른 숫자의 최소/최대 사이에 있으면 좋겠습니까? – Gordon